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

📄 cminus.yy

📁 自己写的一个简易的YACC程序
💻 YY
字号:
%{
%}
%token IDENTIFIER FOR WHILE IF ELSE
%token INT FLOAT LONG SHORT CHAR DOUBLE SIGNED UNSIGNED
%token EQU LESS GREAT NE
%token 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 + -