📄 lex.txt
字号:
PUN ","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|"&"|"^"|"|"|"&"|"||"|"+="|"-="|"*="|"/="|"%="|">>="|"<<="|"&="|"^="|"|="|"="
digit [0-9]
letter [A-Za-z]
other_char [!-@\[-~]
id ({letter}|[_])({letter}|{digit}|[_]|"printf"|"main"|"long")*
string {({letter}|{digit}|{other_char})+}
int_num {digit}+
STRING ("""&{digit|letter|other_char|id|string|int_num}&""")
space [ |\t|\n]+
comment "/"[^/]*"/"
%%
{space}
{comment}
{STRING} {printf("STRING %s\n",yytext);}
\'([!-~])*\' {printf("CHAR_CONST %s\n",yytext);}
"auto"|"double"|"int"|"struct"|"break"|"else"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"static"|"while" {printf("KEYWORD %s\n",yytext);}
\"([!-~])*\" {printf("STRING %s\n",yytext);}
-?{int_num}[.]{int_num}?([E][+|-]?{int_num})? {printf("CONST_real %s\n",yytext);}
"0x"?{int_num} {printf("NUM %s\n",yytext);}
{PUN} {printf("PUN %s\n",yytext);}
{id} {printf("ID %s\n",yytext);}
">"|"<"|">="|"<="|"=="|"!=" {printf("REL_OP %s\n",yytext);}
{digit}({letter})+ {printf("error1:%s\n",yytext);}
%%
#include <stdio.h>
#include <ctype.h>
Upper(char *s,int l)
{
int i;
for(i=0;i<l;i++)
{
s[i]=toupper(s[i]);
}
}
yywrap()
{
return 1;
}
int main(){
yylex();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -