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

📄 pro.y

📁 请在解压时看说明文档 内有详细说明
💻 Y
字号:
%{#include <stdio.h>#include <string.h>extern char yytext[];extern int column;%}%token PROGRAM,BEGINS,END%token CONST,SEMI,id,BOOLEAN,TRUE,FALSE,INT,FLOAT,ARRAY,ASSIGN,IF,THEN,ELSE,WHILE,DO%token REPEAT,UNTIL,FOR,TO,READ,WRITE,MATH,RETURN,NOT%token ICON%token FCON%token ID%nonassoc ID BOOLEAN INT FLOAT%right AND OR%right MATH%left '+''-'%left '*''/'%nonassoc LOW%nonassoc HIGH%nonassoc IFPRE%nonassoc ';'%nonassoc ELSE%left UMINUS%start s%%s : PROGRAM ID';' BEGINS sentences END {}	| PROGRAM ID';' declaration BEGINS sentences END {}	| PROGRAM ID';' BEGINS END {}	| PROGRAM ID';' declaration BEGINS END {}declaration : CONST condef 	{}			| vardec 	{}			| funcdec	{}			| procdec	{}			| funcdef	{}			| procdef	{}			| CONST condef declaration 	{}			| vardec declaration	{}			| funcdec declaration	{}			| procdec declaration	{}			| funcdef declaration	{}			| procdef declaration	{}			;condef : 	ID '=' constv';' 	{} 			| condef ID '=' constv';' 	{}			;
constv :	ICON 	{}			| FCON 	{}			| TRUE 	{}			| FALSE	{}			;vardec :     type':'idtable ';'		{}			| type':'arraytable';' 		{}			| type':'idtable';'vardec		{}				| type':'arraytable';'vardec 	{}					;type :		 INT	{}			|FLOAT	{}			|BOOLEAN	{}			;idtable :    ID			{}				|idtable','ID		{}			;arraytable: ARRAY ID'['dimension']' 	{}				| ARRAY ID'['dimension']'','arraytable		{}			;dimension : ICON 	{}			| ICON','dimension	{}			;funcdec :	 ID'('parat')'':'type';' 	{}				|ID'('parat')'':'type';'funcdec 	{}			;procdec :	 ID'('parat')'';'		{}			| ID'('parat')'';'procdec	{}				;funcdef:	ID'('parat')'':'type declaration BEGINS sentences RETURN ID ';' END	 {}    					%prec LOW			|ID'('parat')'':'type declaration BEGINS sentences RETURN ID ';' END funcdef {}			  %prec LOW	 			;procdef:	ID'('parat')' declaration BEGINS sentences END	 {}   %prec LOW				|ID'('parat')' declaration BEGINS sentences END procdef	 {} %prec LOW			;parat :		 type ID                                {}			| type ID','parat                       {}			;sentences : sentence	                            {}			| sentence sentences	                {}			;sentence : 	 var ASSIGN exp';' 	                    {}			| IF exp THEN sentence ELSE sentence	{}	%prec IFPRE			| IF exp THEN sentence 					{}	%prec IFPRE
			| WHILE exp DO sentence					{}
			| REPEAT sentence UNTIL exp';'			{}
			| FOR ID ASSIGN exp TO exp DO sentence	{}
			| BEGINS sentences END					{}
			| READ vartable';'						{}
			| WRITE exptable';'						{}
			| procc ';'								{}			;vartable :	var							{}			|var ',' vartable						{}			;exptable :  exp										{}			| exp ',' exptable						{}				;exp :		 var 									{}			| constv								{}			| func 									{}			| exp '+' exp							{}			| exp '-' exp							{}			| exp '*' exp							{}			| exp '/' exp							{}			| exp AND exp							{}			| exp OR exp							{}			| NOT exp 					            {} %prec UMINUS			| exp MATH exp							{}			| '-' exp   				            {} %prec UMINUS			| '('exp')'								{}			; var : 		ID										{}			|ID '['dimension']'						{}			; func :		 ID'('para')'							{}procc:		 ID'('para')'							{}para :		 constv 								{}			| constv','para							{}			| var									{}			| var','para							{}			;%%			yyerror(s)char *s;{	//fflush(stdout);	printf("\n%*s\n%*s\n", column, "^", column, s);}main()
{
	//yydebug = 1;	int yyparse();
	
	return(yyparse());
}

⌨️ 快捷键说明

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