⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gram.y

📁 c语言语法树
💻 Y
字号:
%token IDENTIFIER CONSTANT STRING_LITERAL SIZEOF%token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP%token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN%token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN%token XOR_ASSIGN OR_ASSIGN TYPE_NAME%token TYPEDEF EXTERN STATIC AUTO REGISTER%token CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID%token STRUCT UNION ENUM ELIPSIS RANGE%token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN%start file%%primary_expr	: identifier	| CONSTANT	| STRING_LITERAL	| '(' expr ')'	;postfix_expr	: primary_expr	| postfix_expr '[' expr ']'	| postfix_expr '(' ')'	| postfix_expr '(' argument_expr_list ')'	| postfix_expr '.' identifier	| postfix_expr PTR_OP identifier	| postfix_expr INC_OP	| postfix_expr DEC_OP	;argument_expr_list	: assignment_expr	| argument_expr_list ',' assignment_expr	;unary_expr	: postfix_expr	| INC_OP unary_expr	| DEC_OP unary_expr	| unary_operator cast_expr	| SIZEOF unary_expr	| SIZEOF '(' type_name ')'	;unary_operator	: '&'	| '*'	| '+'	| '-'	| '~'	| '!'	;cast_expr	: unary_expr	| '(' type_name ')' cast_expr	;multiplicative_expr	: cast_expr	| multiplicative_expr '*' cast_expr	| multiplicative_expr '/' cast_expr	| multiplicative_expr '%' cast_expr	;additive_expr	: multiplicative_expr	| additive_expr '+' multiplicative_expr	| additive_expr '-' multiplicative_expr	;shift_expr	: additive_expr	| shift_expr LEFT_OP additive_expr	| shift_expr RIGHT_OP additive_expr	;relational_expr	: shift_expr	| relational_expr '<' shift_expr	| relational_expr '>' shift_expr	| relational_expr LE_OP shift_expr	| relational_expr GE_OP shift_expr	;equality_expr	: relational_expr	| equality_expr EQ_OP relational_expr	| equality_expr NE_OP relational_expr	;and_expr	: equality_expr	| and_expr '&' equality_expr	;exclusive_or_expr	: and_expr	| exclusive_or_expr '^' and_expr	;inclusive_or_expr	: exclusive_or_expr	| inclusive_or_expr '|' exclusive_or_expr	;logical_and_expr	: inclusive_or_expr	| logical_and_expr AND_OP inclusive_or_expr	;logical_or_expr	: logical_and_expr	| logical_or_expr OR_OP logical_and_expr	;conditional_expr	: logical_or_expr	| logical_or_expr '?' logical_or_expr ':' conditional_expr	;assignment_expr	: conditional_expr	| unary_expr assignment_operator assignment_expr	;assignment_operator	: '='	| MUL_ASSIGN	| DIV_ASSIGN	| MOD_ASSIGN	| ADD_ASSIGN	| SUB_ASSIGN	| LEFT_ASSIGN	| RIGHT_ASSIGN	| AND_ASSIGN	| XOR_ASSIGN	| OR_ASSIGN	;expr	: assignment_expr	| expr ',' assignment_expr	;constant_expr	: conditional_expr	;declaration	: declaration_specifiers ';'	| declaration_specifiers init_declarator_list ';'	;declaration_specifiers	: storage_class_specifier	| storage_class_specifier declaration_specifiers	| type_specifier	| type_specifier declaration_specifiers	;init_declarator_list	: init_declarator	| init_declarator_list ',' init_declarator	;init_declarator	: declarator	| declarator '=' initializer	;storage_class_specifier	: TYPEDEF	| EXTERN	| STATIC	| AUTO	| REGISTER	;type_specifier	: CHAR	| SHORT	| INT	| LONG	| SIGNED	| UNSIGNED	| FLOAT	| DOUBLE	| CONST	| VOLATILE	| VOID	| 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	: type_specifier_list struct_declarator_list ';'	;struct_declarator_list	: struct_declarator	| struct_declarator_list ',' struct_declarator	;struct_declarator	: declarator	| ':' constant_expr	| declarator ':' constant_expr	;enum_specifier	: ENUM '{' enumerator_list '}'	| ENUM identifier '{' enumerator_list '}'	| ENUM identifier	;enumerator_list	: enumerator	| enumerator_list ',' enumerator	;enumerator	: identifier	| identifier '=' constant_expr	;declarator	: declarator2	| pointer declarator2	;declarator2	: identifier	| '(' declarator ')'	| declarator2 '[' ']'	| declarator2 '[' constant_expr ']'	| declarator2 '(' ')'	| declarator2 '(' parameter_type_list ')'	| declarator2 '(' parameter_identifier_list ')'	;pointer	: '*'	| '*' type_specifier_list	| '*' pointer	| '*' type_specifier_list pointer	;type_specifier_list	: type_specifier	| type_specifier_list type_specifier	;parameter_identifier_list	: identifier_list	| identifier_list ',' ELIPSIS	;identifier_list	: identifier	| identifier_list ',' identifier	;parameter_type_list	: parameter_list	| parameter_list ',' ELIPSIS	;parameter_list	: parameter_declaration	| parameter_list ',' parameter_declaration	;parameter_declaration	: type_specifier_list declarator	| type_name	;type_name	: type_specifier_list	| type_specifier_list abstract_declarator	;abstract_declarator	: pointer	| abstract_declarator2	| pointer abstract_declarator2	;abstract_declarator2	: '(' abstract_declarator ')'	| '[' ']'	| '[' constant_expr ']'	| abstract_declarator2 '[' ']'	| abstract_declarator2 '[' constant_expr ']'	| '(' ')'	| '(' parameter_type_list ')'	| abstract_declarator2 '(' ')'	| abstract_declarator2 '(' parameter_type_list ')'	;initializer	: assignment_expr	| '{' 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_expr ':' 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	: ';'	| expr ';'	;selection_statement	: IF '(' expr ')' statement	| IF '(' expr ')' statement ELSE statement	| SWITCH '(' expr ')' statement	;iteration_statement	: WHILE '(' expr ')' statement	| DO statement WHILE '(' expr ')' ';'	| FOR '(' ';' ';' ')' statement	| FOR '(' ';' ';' expr ')' statement	| FOR '(' ';' expr ';' ')' statement	| FOR '(' ';' expr ';' expr ')' statement	| FOR '(' expr ';' ';' ')' statement	| FOR '(' expr ';' ';' expr ')' statement	| FOR '(' expr ';' expr ';' ')' statement	| FOR '(' expr ';' expr ';' expr ')' statement	;jump_statement	: GOTO identifier ';'	| CONTINUE ';'	| BREAK ';'	| RETURN ';'	| RETURN expr ';'	;file	: external_definition	| file external_definition	;external_definition	: function_definition	| declaration	;function_definition	: declarator function_body	| declaration_specifiers declarator function_body	;function_body	: compound_statement	| declaration_list compound_statement	;identifier	: IDENTIFIER	;%%#include <stdio.h>extern char yytext[];extern int column;yyerror(s)char *s;{	fflush(stdout);	printf("\n%*s\n%*s\n", column, "^", column, s);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -