?? 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 + -