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