📄 old-ycmm.y
字号:
%{#include <stdio.h>%}%union { int intvalue; double realvalue; char * str;};%token IDENTIFIER CONSTANT%token GE_OP LE_OP EQ_OP NE_OP AND_OP OR_OP%token INT REAL%token WHILE WRITE READ IF ELSE%nonassoc IF%nonassoc ELSE%right '='%left '|'%left '^'%left '&'%left '+' '-'%left '*' '/'%left UNARY%left '.' '(' '['%start program%%program : declaration_list statement_list ;primary_expr : identifier | CONSTANT | '(' expr ')' ;identifier : IDENTIFIER ;postfix_expr : primary_expr | postfix_expr '[' expr ']' ;unary_expr : postfix_expr | unary_operator cast_expr ;unary_operator : '&' | '*' | '+' | '-' | '~' | '!' ;cast_expr : unary_expr ;multiplicative_expr : cast_expr | multiplicative_expr '*' multiplicative_expr | multiplicative_expr '/' multiplicative_expr ;additive_expr : multiplicative_expr | additive_expr '+' additive_expr | additive_expr '-' additive_expr ;shift_expr : 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 ;assignment_expr : logical_or_expr | unary_expr assignment_operator assignment_expr ;assignment_operator : '=' ;expr : assignment_expr | expr ',' assignment_expr ;constant_expr : conditional_expr ;declaration : declaration_specifiers ';' | declaration_specifiers init_declarator_list ';' ;declaration_specifiers : type_specifier ;init_declarator_list : init_declarator | init_declarator_list ',' init_declarator ;init_declarator : declarator | declarator '=' initializer ;type_specifier : INT | REAL ;declarator : declarator2 ;declarator2 : identifier | declarator2 '[' ']' | declarator2 '[' constant_expr ']' ;initializer : assignment_expr | '{' initializer_list '}' ;initializer_list : initializer | initializer_list ',' initializer ;statement : compound_statement | expression_statement | selection_statement | iteration_statement | io_statement ;compound_statement : '{' '}' | '{' statement_list '}' ;expression_statement : ';' | expr ';' ;declaration_list : declaration | declaration_list declaration ;statement_list : statement | statement_list statement ;selection_statement : IF '(' expr ')' statement %prec IF | IF '(' expr ')' statement ELSE statement ;iteration_statement : WHILE '(' expr ')' statement ;io_statement : WRITE '(' expr ')' ';' | READ '(' identifier ')' ';'%%int main () { yyparse();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -