- 论坛徽章:
- 0
|
字数有限制,接上文
- storage_class_specifier
- : TYPEDEF
- | EXTERN
- | STATIC
- | AUTO
- | REGISTER
- ;
- type_specifier
- : VOID
- | CHAR
- | SHORT
- | INT
- | LONG
- | FLOAT
- | DOUBLE
- | SIGNED
- | UNSIGNED
- | struct_or_union_specifier
- | enum_specifier
- | TYPE_NAME
- ;
- struct_or_union_specifier
- : struct_or_union IDENTIFIER '{' struct_declaration_list '}'
- | struct_or_union '{' struct_declaration_list '}'
- | struct_or_union IDENTIFIER
- ;
- struct_or_union
- : STRUCT
- | UNION
- ;
- struct_declaration_list
- : struct_declaration
- | struct_declaration_list struct_declaration
- ;
- struct_declaration
- : specifier_qualifier_list struct_declarator_list ';'
- ;
- specifier_qualifier_list
- : type_specifier specifier_qualifier_list
- | type_specifier
- | type_qualifier specifier_qualifier_list
- | type_qualifier
- ;
- struct_declarator_list
- : struct_declarator
- | struct_declarator_list ',' struct_declarator
- ;
- struct_declarator
- : declarator
- | ':' constant_expression
- | declarator ':' constant_expression
- ;
- enum_specifier
- : ENUM '{' enumerator_list '}'
- | ENUM IDENTIFIER '{' enumerator_list '}'
- | ENUM IDENTIFIER
- ;
- enumerator_list
- : enumerator
- | enumerator_list ',' enumerator
- ;
- enumerator
- : IDENTIFIER
- | IDENTIFIER '=' constant_expression
- ;
- type_qualifier
- : CONST
- | VOLATILE
- ;
- declarator
- : pointer direct_declarator
- | direct_declarator
- ;
- direct_declarator
- : IDENTIFIER
- | '(' declarator ')'
- | direct_declarator '[' constant_expression ']'
- | direct_declarator '[' ']'
- | direct_declarator '(' parameter_type_list ')'
- | direct_declarator '(' identifier_list ')'
- | direct_declarator '(' ')'
- ;
- pointer
- : '*'
- | '*' type_qualifier_list
- | '*' pointer
- | '*' type_qualifier_list pointer
- ;
- type_qualifier_list
- : type_qualifier
- | type_qualifier_list type_qualifier
- ;
- parameter_type_list
- : parameter_list
- | parameter_list ',' ELLIPSIS
- ;
- parameter_list
- : parameter_declaration
- | parameter_list ',' parameter_declaration
- ;
- parameter_declaration
- : declaration_specifiers declarator
- | declaration_specifiers abstract_declarator
- | declaration_specifiers
- ;
- identifier_list
- : IDENTIFIER
- | identifier_list ',' IDENTIFIER
- ;
- type_name
- : specifier_qualifier_list
- | specifier_qualifier_list abstract_declarator
- ;
- abstract_declarator
- : pointer
- | direct_abstract_declarator
- | pointer direct_abstract_declarator
- ;
- direct_abstract_declarator
- : '(' abstract_declarator ')'
- | '[' ']'
- | '[' constant_expression ']'
- | direct_abstract_declarator '[' ']'
- | direct_abstract_declarator '[' constant_expression ']'
- | '(' ')'
- | '(' parameter_type_list ')'
- | direct_abstract_declarator '(' ')'
- | direct_abstract_declarator '(' parameter_type_list ')'
- ;
- initializer
- : assignment_expression
- | '{' initializer_list '}'
- | '{' initializer_list ',' '}'
- ;
- initializer_list
- : initializer
- | initializer_list ',' initializer
- ;
- statement
- : labeled_statement
- | compound_statement
- | expression_statement
- | selection_statement
- | iteration_statement
- | jump_statement
- ;
- labeled_statement
- : IDENTIFIER ':' statement
- | CASE constant_expression ':' statement
- | DEFAULT ':' statement
- ;
- compound_statement
- : '{' '}'
- | '{' statement_list '}'
- | '{' declaration_list '}'
- | '{' declaration_list statement_list '}'
- ;
- declaration_list
- : declaration
- | declaration_list declaration
- ;
- statement_list
- : statement
- | statement_list statement
- ;
- expression_statement
- : ';'
- | expression ';'
- ;
- selection_statement
- : IF '(' expression ')' statement
- | IF '(' expression ')' statement ELSE statement
- | SWITCH '(' expression ')' statement
- ;
- iteration_statement
- : WHILE '(' expression ')' statement
- | DO statement WHILE '(' expression ')' ';'
- | FOR '(' expression_statement expression_statement ')' statement
- | FOR '(' expression_statement expression_statement expression ')' statement
- ;
- jump_statement
- : GOTO IDENTIFIER ';'
- | CONTINUE ';'
- | BREAK ';'
- | RETURN ';'
- | RETURN expression ';'
- ;
- translation_unit
- : external_declaration
- | translation_unit external_declaration
- ;
- external_declaration
- : function_definition
- | declaration
- ;
- function_definition
- : declaration_specifiers declarator declaration_list compound_statement
- | declaration_specifiers declarator compound_statement
- | declarator declaration_list compound_statement
- | declarator compound_statement
- ;
- %%
- #include <stdio.h>
- extern char yytext[];
- extern int column;
- yyerror(s)
- char *s;
- {
- fflush(stdout);
- printf("\n%*s\n%*s\n", column, "^", column, s);
- }
复制代码 |
|