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

📄 old-ycmm.y

📁 使用yacc和lex编写的cmm语言的词法分析和语法分析程序.
💻 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 + -