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

📄 ex2.l

📁 c—语言的词法分析器。将一个C--语言程序分割成token串的序列。处理C--语言的所有token类型。程序要做成命令行程序
💻 L
字号:
%{
   #include <stdio.h>
   #include <stdlib.h>
%}


/*正规定义*/
delim			[ \t\n]
ws				{delim}+
leter			[A-Za-z]                                        
digit			[0-9]
id				{leter}({leter}|{digit})*  
number			{digit}+(\.{digit}+)?(E[+\-]?{digit}+)? 
comment			(\#[^\n]*)|(\/\*(((\*)*[^\*\/]+(\/)*)*|(\*)*|(\/)*)\*\/)|(\/\/[^\n]*)
pun				[\(\)\{\}\[\]\;\=]


%%
{comment}		{/*对预处理和注释部分没有动作和返回值*/}
{ws}			{/*对空白串没有动作和返回值*/}

"if" 			{fprintf(yyout,"KEYWORD if\n");}
"int"			{fprintf(yyout,"KEYWORD int\n");}
"void"			{fprintf(yyout,"KEYWORD void\n");}
"char"			{fprintf(yyout,"KEYWORD char\n");}
"else"			{fprintf(yyout,"KEYWORD else\n");}
"while"			{fprintf(yyout,"KEYWORD while\n");}
"return"		{fprintf(yyout,"KEYWORD return\n");}

{number}		{fprintf(yyout,"NUM  %s\n",yytext);}
{id}			{fprintf(yyout,"ID %s\n",yytext);}
{pun}			{fprintf(yyout,"PUN %s\n",yytext);}


"<="			{fprintf(yyout,"REL_OP <=\n");}
">="			{fprintf(yyout,"REL_OP >=\n");}
"<"				{fprintf(yyout,"REL_OP <\n");}
">"				{fprintf(yyout,"REL_OP >\n");}
"!="			{fprintf(yyout,"REL_OP !=\n");}
"=="			{fprintf(yyout,"REL_OP ==\n");}


%%
int yywrap(){
	return 1;
}
int main(int argc,char*argv[])
{
if(argc==3){
 if((yyin=fopen(argv[1],"r"))==NULL) error("cannot open input file");
 if((yyout=fopen(argv[2],"w"))==NULL) error("cannot open output file");
 yylex();
 exit(0);
 }
}

⌨️ 快捷键说明

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