ic.y

来自「这是一个软件水平资格考试中使用的CASL汇编语言的编译器,实现文件中包括一个编译」· Y 代码 · 共 62 行

Y
62
字号
%{
#include <math.h>
#include <malloc.h>
#include <stdlib.h>
%}
%token DECIMAL
%token HEX
%token LABEL
%token VAR
%token START
%token END
%token JMP
%token IF
%token GOTO
%left	'+''-'
%%
PROGRAM:  START BODY END {printf("Input Ok!\n");};

BODY: BODY STMT | STMT

STMT: ASSIGNSTMT | IFSTMT | JMPSTMT

ASSIGNSTMT: LBLSTMT VAR '=' EXPR

IFSTMT: LBLSTMT IF CONDEXPR GOTO VAR

JMPSTMT: LBLSTMT JMP VAR

EXPR: DECIMAL | 
      VAR | 
      EXPR '+' EXPR |
      EXPR '-' EXPR

CONDEXPR: EXPR '>' EXPR |
	  EXPR '<' EXPR

LBLSTMT: LABEL |  
%%
#include "Lex.yy.c"

	int yyerror(char *s)
	{
	   
	   printf("%s\n",s); return;
	 }

int main()
{
   FILE * fp;
   fp = fopen("test.ic", "r");
   if (NULL != fp)
   {
	yyin = fp;     
   }
   else
   {
	yyin = stdin;
   }

   yyparse();
   return 0;
}

⌨️ 快捷键说明

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