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

📄 scan.lex

📁 请在解压时看说明文档 内有详细说明
💻 LEX
字号:
%{#include <stdio.h>#include <string.h>#define PROGRAM 1#define BEGIN	2#define END     3#define CONST   4#define SEMI    5 /* ; */#define WORD    6#define BOOLEAN 7#define TRUE    8#define FALSE   9#define INT     10#define REAL    11#define ARRAY   12#define LF      13 /* [ */#define RF      14 /* ] */ #define COMA    15 /* , */#define ASSIGN  16 /* := */#define IF      17 #define THEN    18#define ELSE    19#define WHILE   20#define DO      21#define REPEAT  22#define UNTIL   23#define FOR     24#define TO      25#define READ    26#define WRITE   27#define OPER    28  /* +,-,*,etc */#define LOGIC   34  /* and , or ,not */ #define MATH    37  /* < ,<=, etc*/#define ICON    43  /* intconst */#define FCON    44  /* floatconst*/#define MAOHAO	45  /* : */#define LB		46  /* ( */#define RB		47  /* ) */void output(int cate,char *content);%}digit [0-9]+float [+-]?[0-9]*\.[0-9]+ word  [a-zA-Z][a-zA-Z0-9]*logic and|or|notmath  >|>=|=|<>|<|<=oper  [+|-|*|/]%%program {output(PROGRAM,yytext);}begin {output(BEGIN,yytext);}end {output(END,yytext);}const {output(CONST,yytext);}";" {output(SEMI,yytext);}boolean {output(BOOLEAN,yytext);}true {output(TRUE,yytext);}false {output(FALSE,yytext);}int {output(INT,yytext);}real {output(REAL,yytext);}array {output(ARRAY,yytext);}"[" {output(LF,yytext);}"]" {output(RF,yytext);}"," {output(COMA,yytext);}":=" {output(ASSIGN,yytext);}"(" {output(LB,yytext);}")" {output(RB,yytext);}if {output(IF,yytext);}then {output(THEN,yytext);}else {output(ELSE,yytext);}while {output(WHILE,yytext);}do {output(DO,yytext);}repeat {output(REPEAT,yytext);}until {output(UNTIL,yytext);}for {output(FOR,yytext);}to {output(TO,yytext);}read {output(READ,yytext);}write {output(WRITE,yytext);}{oper} {output(OPER,yytext);}{math} {output(MATH,yytext);}{logic} {output(LOGIC,yytext);}{digit} {output(ICON,yytext);}{float} {output(FCON,yytext);}{word} {output(WORD,yytext);}":" {output(MAOHAO,yytext);}[ \t\n] ;%%void output(int cate,char *content){	switch(cate)	{		case 1:fprintf(yyout,"(PROGRAM,%s)\n",content);break;		case 2:fprintf(yyout,"(BEGIN,%s)\n",content);break;		case 3:fprintf(yyout,"(END,%s)\n",content);break;		case 4:fprintf(yyout,"(CONST,%s)\n",content);break;		case 5:fprintf(yyout,"(SEMI,%s)\n",content);break;		case 6:fprintf(yyout,"(WORD,%s)\n",content);break;		case 7:fprintf(yyout,"(BOOLEAN,%s)\n",content);break;		case 8:fprintf(yyout,"(TRUE,%s)\n",content);break;		case 9:fprintf(yyout,"(FALSE,%s)\n",content);break;		case 10:fprintf(yyout,"(INT,%s)\n",content);break;		case 11:fprintf(yyout,"(REAL,%s)\n",content);break;		case 12:fprintf(yyout,"(ARRAY,%s)\n",content);break;		case 13:fprintf(yyout,"(LF,%s)\n",content);break;		case 14:fprintf(yyout,"(RF,%s)\n",content);break;		case 15:fprintf(yyout,"(COMA,%s)\n",content);break;		case 16:fprintf(yyout,"(ASSIGN,%s)\n",content);break;		case 17:fprintf(yyout,"(IF,%s)\n",content);break;		case 18:fprintf(yyout,"(THEN,%s)\n",content);break;		case 19:fprintf(yyout,"(ELSE,%s)\n",content);break;		case 20:fprintf(yyout,"(WHILE,%s)\n",content);break;		case 21:fprintf(yyout,"(DO,%s)/n",content);break;		case 22:fprintf(yyout,"(REPEAT,%s)\n",content);break;		case 23:fprintf(yyout,"(UNTIL,%s)\n",content);break;		case 24:fprintf(yyout,"(FOR,%s)\n",content);break;		case 25:fprintf(yyout,"(TO,%s)\n",content);break;		case 26:fprintf(yyout,"(READ,%s)\n",content);break;		case 27:fprintf(yyout,"(WRITE,%s)\n",content);break;		case 28:fprintf(yyout,"(OPER,%s)\n",content);break;		case 34:fprintf(yyout,"(LOGIC,%s)\n",content);break;		case 37:fprintf(yyout,"(MATH,%s)\n",content);break;		case 43:fprintf(yyout,"(ICON,%s)\n",content);break;		case 44:fprintf(yyout,"(FCON,%s)\n",content);break;		case 45:fprintf(yyout,"(MAOHAO,%s)\n",content);break;		case 46:fprintf(yyout,"(LB,%s)\n",content);break;		case 47:fprintf(yyout,"(RB,%s)\n",content);break;		default:break;	}}int main(int argc,char ** argv){	argc--;argv++;	if(argc > 0)
	{	if((yyin = fopen(argv[0],"r")) == NULL)	{		printf("%s can not be opened",argv[0]);		return 0;	}	}	else	{		yyin = stdin;	}		yyout = fopen("result.txt","w");	yylex();	return 1;} 

⌨️ 快捷键说明

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