PRAXIS SUMMARY --------------DECLARATIONS STATEMENTS OPERATORSROUTINESCOMPILER DIRECTIVESMODULESRUN TIME SUPPORT FUTURE PLANS  PRAXIS TOPICS -------------DECLARATIONS  TYPES (is) PREDEFINED TYPES LITERALS  USER DEFINED TYPES ATTRIBUTES OF TYPES- CONSTANTS, compile_time or link time (=) VARIABLES (:)  TYPE CHECKING  PRAXIS TOPICS - continued STATEMENTS SEMICOLON RULE: FORMS OF STATEMENTS  SIMPLE STATEMENTS CONDITIONAL STATEMENT  BLOCK STRUCTURED STATEMENTS INTERATION STATEMENTS FLOW CONTROL STATEMENTS REGION CODE BLOCK  PRAXIS TOPICS - continued OPERATORS REFERENCING [] . @ ARITHMETIC + - * / mod ** SHIFT lsh rsh ORDERING < <= > >= EQUALITY = <> LOGICAL and or eqv xor not BOOLEAN and or eqv xor not   PRAXIS TOPICS - continued#ROUTINES - Procedures and Functions ROUTINE STRUCTURE RECURSION FORMAL PARAMETERS INITIAL CONDITIONS SPECIAL PROCEDURE LINKAGES INVOCATION PREDEFINED FUNCTIONS PREDEFINED PROCEDURES  PRAXIS TOPICS - continuedCOMPILER DIRECTIVES DIRECTIVES# PREDEFINED DIRECTIVES VARIABLES USER DEFINED DIRECTIVES ASSIGNMENT CONDITIONAL COMPILATION  PRAXIS TOPICS - continuedMODULES SEPARATE COMPILATION EXPORT/IMPORT SYNOPSIS ORDER OF COMPILATION LINKAGE TO OTHER LANGUAGES VMS SYSTEM SERVICES VMS RUN TIME LIBRARY  PRAXIS TOPICS - continuedRUN TIME SUPPORT VAX LSI-11 (stand-alone) PDP-11/LSI-11 RSX  PRAXIS TOPICS - continued FUTURE PLANS UNIMPLEMENTED FEATURES IMPROVEMENTS BUGS EFFICIENCY IDEAS$ RUN TIME SUPPORT, VAX and LSI-11 VMS VERSION 4 ISSUES DOCUMENTATION GENERAL SUPPORT  PRAXIS DETAILS --------------DECLARATIONS 1 Every data object must be defined explicitly  within a data declaration TYPES (is) Predefined types integer real boolean cardinal logical pointer interlock DECLARATIONS - continued TYPES (is) - continued Literals integer real logical char string literal enumeration boolean pointer interlock DECLARATIONS - continued TYPES (is) - continued User defined types Enumerations arrays * arbritary lower and upper bounds [-4..4] multiple dimension arrays structures% procedures or functions as types general DECLARATIONS - continued TYPES (is) - continued Attributes of types precision and range of: integer cardinal char enumeration subrange initial conditions% packing of arrays and structures DECLARATIONS - continued- CONSTANTS, compile_time or link time (=) of any type! array and structure constructors array tables (may be arbitrarily complex)- (use of type conversions to define constant) DECLARATIONS - continued VARIABLES (:) of any type with initial conditions! array and structure constructors array tables allocation of flexible arrays DECLARATIONS - continued" VARIABLES (:) - continued storage control static dynamic allocate location aligned segment hidden (shared memory, unibus) DECLARATIONS - continued  TYPE CHECKING< every value, identifier, and expression has a specific type) all types are determined at compile time: Each value must be used in a way consistent with its type: For example, it is a compile-time error to attempt to: pass an integer parameter to a routine which requires a real parameter. Force (right side or left side) Conversions STATEMENTS4 A module is composed of sentences, which may be Beither declarations, statements, comments, or compiler directives.; Statements, in contrast to declarations, cause actions ;to be performed when executed. Statements are composed of ;combinations of expressions, operators, and identifiers. 7Some statements allow other statements or declarations to be embedded within them.  STATEMENTS - continued FORMS OF STATEMENTS0 Simple statements - contain no other sentences1 Conditional statement - choice of two sentences: Block Structured Statements - may contain other sentences STATEMENTS - continued SEMICOLON RULE:B o Sentences are separated by semicolons (or end of line) . o Multiple sentences can appear on a line. & o A sentence can span multiple lines STATEMENTS - continued  SIMPLE STATEMENTS assignment" procedure and function invocation loop and break statements raise and reraise exception CONDITIONAL STATEMENT- when boolean_expresion then expr1 else expr2 STATEMENTS - continued  BLOCK STRUCTURED STATEMENTS block labeling block Interation statements while repeat/until for for/downto for/then for/in STATEMENTS - continued BLOCK STRUCTURED STATEMENTS Flow control statements multi-arm if select upon guard, arm/disarm Region Code Block OPERATORS REFERENCING [] . @ ARITHMETIC + - * / mod ** SHIFT lsh rsh ORDERING < <= > >= EQUALITY = <> LOGICAL and or eqv xor not BOOLEAN and or eqv xor not  #ROUTINES - Procedures and Functions ROUTINE STRUCTURE Routine interface Routine body Routine exit Forward Routines Function return clause Recursion /ROUTINES - Procedures and Functions -continued FORMAL PARAMETERS Existance Direction Mode Type $ --------- ---------- ------ ------  Optional In Ref (any) (required) Out Val general# Variadic Inout general_with_size flexible2 Also, can specify initial conditions on paramters .ROUTINES - Procedures and Functions -continued SPECIAL PROCEDURE LINKAGES Fortran Interrupt INVOCATION keyword .ROUTINES - Procedures and Functions -continued PREDEFINED FUNCTIONS max - maximum min - minimum succ - successor pred - predecesor abs - absolute value truncate round .ROUTINES - Procedures and Functions -continued% PREDEFINED FUNCTIONS -continued floor ceiling low high sizeof addressof .ROUTINES - Procedures and Functions -continued PREDEFINED PROCEDURES swap free COMPILER DIRECTIVES DIRECTIVES %message %ident) %define name - user defined directives  USER DEFINED DIRECTIVES ASSIGNMENT# %set name = "string" or true/false CONDITIONAL COMPILATION& %if - %orif - %otherwise - %endif COMPILER DIRECTIVES - continued# PREDEFINED DIRECTIVES VARIABLES optimize_time # cross_ref # semicolon_insert # assert_check # assert_use # list # list_insert_semicolons # linker # object_fpu # object_eis # object_fis # object_rom # object_lsi # object_i_d_separation # object_position_independent# warn_assign_size # warn_param_size # warn_spell_id # warn_nested_declaration # subscript_check E# subrange_check # pointer_check # precision_check N# overflow_check  virtual  inhibit_cross_jump  use_routine_names  basic_pdp11  list_object  encode_external_names  no_source  on_unibus  warn_table_size  clear_dynamic_holy_types  warn_dynamic_holy_types  optional_none_initially_OK  v72_parameter_conventions  v73_parameter_conventions  MODULES MAIN MODULE MODULE SEPARATE COMPILATION MODULES - continued SYNOPSIS method of search (PRXSPS) ORDER OF COMPILATION LINKAGE TO OTHER LANGUAGES artificial synopsis to VMS System services VMS Run Time Library MODULES - continued EXPORT types static variables constants hiddenS IMPORT use% initial conditions through interface  ARUN TIME SUPPORT VAXT VMS Run Time Library VMS System Services Heap ExceptionsR TEXTIO RUN TIME SUPPORT - continued LSI-11 (stand-alone) OverlaysP Heap ExceptionsS TEXTIO- )RUN TIME SUPPORT - continued PDP-11/LSI-11 RSXN RSX System Services (limited) TEXTIO  Heap Exceptions  FUTURE PLANS UNIMPLEMENTED FEATURES Setss( Packed packed structures of characters  Unsigned Comparisons  Real Exponentiation Long Real Constants% Round, Floor, Ceiling for the PDP-11d oFUTURE PLANS -continued  IMPROVEMENTS+ Equivalent Integer and Cardinal Constants S' Clear allocation of objects with Holesn0 Create_Unique_Global_Symbols compiler directive& Interface to Version 4.0 Vax Debugger& Reincorporate the conversion routines EFUTURE PLANS -continued  IMPROVEMENTS -continuedu Better Diagnostics( More accurate line number of errors* Line numbers in M11 and listing files Run Time Line Numbers$ Disallow rediculous size arrays) type check of allocate size variableo, Confusing N on multiple flexible arrays) Tag field inside a Variant Structure . Additional Compile-time Rangechecking large object assignments" subscripts of array constructors AFUTURE PLANS -continued IMPROVEMENTS -continued Better Diagnostics -continued5 Check forward procedure same as actual procedure3 Detection of Comparisons of Objects with HolesA Check size of actual arg <= size of formal arg when by VAL 7 Warning on too few componenets in table of strings< Diagnostic upon export of dynamic item from main module0 Diagnostic when SIZEOF result will not fit.6 Diagnostic that packed packed is not implemented. FUTURE PLANS -continued BUGS6 Initial Conditions on complicated imported structures, Source Lines overs 132 characters in length  DESIGN ISSUES! OUT Flexible Array - What is it? EFFICIENCY IDEAS Array referencing on LSI-11> Use P_data instead of MOV instructions for initial conditions Large Range of Cases Better Register Allocation CG_Table pattern improvements FUTURE PLANS -continued RUN TIME SUPPORT, LSI-11 Separate Interrupt Routines TEXTIO Separation RUN TIME SUPPORT, VAX* example Run Time Library string routines. VMS VERSION 4 ISSUES# Module name limit of 9 characters  FUTURE PLANS -continued DOCUMENTATION/ Revise/Rewrite "Programming in Praxis" manual. Test Suite cleanup and automate View Graphs& Example Command Files to compile/link GENERAL SUPPORT 32 bit integer in TEXTIO WALKER CROSS (Phebus) User Analyzer