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

📄 cminus.yy

📁 语法分析器lex和词法分析器yacc的C++语言实现 1.Lex (1)Lex输入文件的解析 (2)正规表达式的解析 (3)一个正规表达式到NFA的转换算法实现 (4)多个NFA的合并
💻 YY
字号:
%union
{
	int ival;
}
%token <ival> IDENTIFIER FOR WHILE IF ELSE
%token <ival> INT FLOAT LONG SHORT CHAR DOUBLE SIGNED UNSIGNED
%token <ival> EQU LESS GREAT NE
%token <ival> NUM
%%
source_file : type function_name '(' parament_list ')' compound_statement
	    | type function_name '(' ')' compound_statement
	    ;

type : INT
     | FLOAT
     | LONG
     | SHORT
     | CHAR
     | DOUBLE
     | SIGNED
     | UNSIGNED
     ;

function_name : identifier ;

identifier : IDENTIFIER ;

parament_list : type identifier ',' parament_list
              | type identifier
              ;

compound_statement : '{' statement_list '}'
                   ;

statement_list : statement
               | statement_list statement ;

statement : assign_statement
          | selection_statement
          | iteration_statement
          ;

assign_statement : assign_expression ';'
                 | initial_expression ';'
                 ;

assign_expression : identifier operator identifier
                  ;

operator : '+'
         | '-'
         | '*'
         | '/'
         ;

initial_expression : type identifier
                   | type identifier '=' NUM 
                   | type identifier '=' identifier
                   | type identifier '=' assign_expression
                   | identifier '=' assign_expression
                   ;

selection_statement : IF '(' relate_expression ')' compound_statement
                    ;

relate_expression : identifier relation_operator identifier
           ;

relation_operator : EQU
                  | LESS
                  | GREAT
                  | NE
                  ;

iteration_statement : WHILE '(' relate_expression ')' compound_statement
                    ;

⌨️ 快捷键说明

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