home *** CD-ROM | disk | FTP | other *** search
- /**************************** Listing 2 ****************************/
- /******* *******/
- /******* Delete all of the current actions in the grammar *******/
- /******* rules section of yref2.y. All have the general *******/
- /******* form: { printf(......) }. Then add the actions *******/
- /******* as shown below (from { to }, inclusive). Note *******/
- /******* that there are no changes to the grammar rules, *******/
- /******* which are only repeated for setting the context. *******/
- /******* *******/
- /*********************************************************************/
-
- direct_declarator:
- IDENTIFIER
- { yn_decl = 1; root = addtree(root, $1); }
- | '(' declarator ')'
- | direct_declarator '[' ']' %prec '*'
- | direct_declarator '[' constant ']' %prec '*' /* Variant */
- | direct_declarator '(' parameter_type_list ')' %prec '*'
- | direct_declarator '(' ')' %prec '*'
- | direct_declarator '(' identifier_list ')' %prec '*'
- ;
-
- identifier_list:
- IDENTIFIER
- { yn_decl = 0; root = addtree(root, $1); }
- | identifier_list ',' IDENTIFIER
- { yn_decl = 0; root = addtree(root, $3); }
- ;
-
- statement:
- compound_statement
- | expression ';'
- | KEYWORD '(' expression ')' statement
- | KEYWORD for_construct statement
- | KEYWORD statement
- | KEYWORD constant ':' statement
- | KEYWORD ':' statement
- | KEYWORD IDENTIFIER ';'
- { yn_decl = 0; root = addtree(root, $2); }
- | IDENTIFIER ':' statement
- { yn_decl = 0; root = addtree(root, $1); }
- | ';'
- ;
-
- primary_expression:
- IDENTIFIER
- { yn_decl = 0; root = addtree(root, $1); }
- | constant
- | STRING
- | '(' expression ')'
- | primary_expression '(' ')'
- | primary_expression '(' expression ')'
- | primary_expression '[' expression ']'
- | primary_expression '.' IDENTIFIER
- { yn_decl = 0; root = addtree(root, $3); }
- ;
-
-
-