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

📄 mylexer.l

📁 c语言的词法分析
💻 L
字号:
%{
	#include "stdio.h"
	#include "stdlib.h"
%}

letter		[a-zA-Z]
digit		[0-9]
id 			{letter}{letter}*
number		{digit}{digit}*
string		\"[^\n]*\" 
comment 	"/*"([^\*]|(\*)*[^\*/])*(\*)*"*/"
delim		[ \t\n]
whitespace	{delim}+

%%

"else"			{fprintf(yyout,"ELSE\n");}
"if"			{fprintf(yyout,"IF\n");}
"int"			{fprintf(yyout,"INT\n");}
"return"		{fprintf(yyout,"RETURN\n");}
"void"			{fprintf(yyout,"VOID\n");}
"while"			{fprintf(yyout,"WHILE\n");}
{whitespace}		{}
{comment}		{}

{id}	        	{fprintf(yyout,"IDENTIFIER %s\n",yytext);}
{number}     		{fprintf(yyout,"NUMBER %s\n",yytext);}
{string}     		{fprintf(yyout,"STRING %s\n",yytext);}

"+"			{fprintf(yyout,"PLUS\n");}
"-"			{fprintf(yyout,"MINUS\n");}
"*"			{fprintf(yyout,"MULTIPLY\n");}
"/"			{fprintf(yyout,"DIVISION\n");}
"<"			{fprintf(yyout,"LESS\n");}
"<="			{fprintf(yyout,"LE\n");}
">"			{fprintf(yyout,"GREAT\n");}
">="			{fprintf(yyout,"GE\n");}
"=="			{fprintf(yyout,"EQ\n");}
"!="			{fprintf(yyout,"NOTEQ\n");}
"="			{fprintf(yyout,"ASSIGN\n");}
";"			{fprintf(yyout,"SEMI\n");}
","			{fprintf(yyout,"COMMA\n");}
"("			{fprintf(yyout,"LPAREN\n");}
")"			{fprintf(yyout,"RPAREN\n");}
"["			{fprintf(yyout,"LSQUARE\n");}
"]"			{fprintf(yyout,"RSQUARE\n");}
"{"			{fprintf(yyout,"LBRACE\n");}
"}"			{fprintf(yyout,"RBRACE\n");}
.			{fprintf(yyout,"ERROR\n");}

%%

void main(int argc,char *argv[]) {
	if(argc != 3) {
		printf("please define the files which you want to read and save!\n");
		exit(1);
	}
	yyin = fopen(argv[1],"r");				//open the file to read
	yyout = fopen(argv[2],"w");				//open the file to write
	yylex();
}
	
int yywrap() {
	return 1;
}

⌨️ 快捷键说明

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