[comp.lang.modula2] Grammer continued 4/5

Cobus.Debeer@p0.f1.n491.z5.fidonet.org (Cobus Debeer) (10/29/90)

 
Grammer continued .... 
 
record_type : RECORD field_list END; 
field_list : field | field_list semicolon field; 
field :  | field_declaration | variant_field; 
variant_field : CASE tag OF variant_list variant_else_opt END; 
tag : ident colon qualident | ident ref_list_opt; 
variant_list : variant | variant_list vertical_bar variant; 
variant : case_label_list colon field_list; 
case_label_list : case_label | case_label_list comma case_label; 
case_label : const_expression | subrange; 
variant_else_opt : | variant_else; 
variant_else : ELSE field_list; 
set_type : SET OF simple_type; 
pointer_type : POINTER TO type; 
procedure_type : PROCEDURE formal_type_list_opt function_opt; 
formal_type_list_opt : | formal_type_list; 
formal_type_list : left_parenthesis ft_list_opt right_parenthesis; 
ft_list_opt : | ft_list; 
ft_list : ft | ft_list comma ft; 
ft : var_opt formal_type; 
statement_list : statement | statement_list semicolon statement; 
statement :  | assignment | procedure_call | if_statement | 
            case_statement | while_statement | repeat_statement | 
            loop_statement | for_statement | with_statement | EXIT | 
            RETURN expression_opt; 
expression_opt : | expression; 
assignment : out_designator out_colon_equals expression; 
out_designator : designator; 
out_colon_equals : colon_equals; 
designator : ident ref_list_opt; 
ref_list_opt : | ref_list; 
ref_list : ref | ref_list ref; 
ref : dot ident | left_square_bracket exp_list right_square_bracket | 
      up_arrow; 
exp_list_opt : | exp_list; 
exp_list : expression | exp_list comma expression; 
procedure_call : designator actual_parameters_opt; 
actual_parameters_opt : | actual_parameters; 
actual_parameters : left_parenthesis exp_list_opt right_parenthesis; 
if_statement : IF expression THEN statement_list elsif_list_opt 
               else_opt END; 
elsif_list_opt : | elsif_list; 
elsif_list : elsif | elsif_list elsif; 
elsif : ELSIF expression THEN statement_list; 
else_opt : | else; 
else : ELSE statement_list; 
case_statement : CASE expression OF case_list else_opt END; 
case_list : case | case_list vertical_bar case; 
case : case_label_list colon statement_list; 
while_statement : WHILE expression DO statement_list END; 
repeat_statement : REPEAT statement_list UNTIL expression; 
loop_statement : LOOP statement_list END; 
 
Regards  
- Cobus de Beer 
 


--  
uucp: uunet!m2xenix!puddle!5!491!1.0!Cobus.Debeer
Internet: Cobus.Debeer@p0.f1.n491.z5.fidonet.org