📄 ex2.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 + -