?? clexan.l
字號:
%{
#include <stdio.h>
int yylineno = 1;
FILE *in, *out;
%}
newln \n
lower [a-z]
letter [A-Za-z]
digit [0-9]
id ({letter}|_)({letter}|{digit}|_)*
number -?{digit}+(\.{digit}+)?([E\e][+\-]?{digit}+)?
comment \/\*(\*[^/]|[^*])*\*\/
chart \'(.|\\{lower})\'
string \"([^"]|\\\")*\"
%%
[ \t]+ ;
{comment} ;
{newln} { ++yylineno; fprintf(out, "\n# LINE %d:\n", yylineno); }
void|int|char|return|if|else|while {
fprintf(out, "KEY:\t%s\n", yytext);
}
{id} {
fprintf(out, "ID:\t%s\n", yytext);
}
{number} {
fprintf(out, "NUM:\t%s\n", yytext);
}
{chart} {
fprintf(out, "CAHR:\t%s\n", yytext);
}
{string} {
fprintf(out, "STR:\t%s\n", yytext);
}
"+"|"-"|"*"|"/"|"<="|"<"|">="|">"|"=="|"!="|"=" {
fprintf(out, "SYM:\t%s\n", yytext);
}
";"|","|"("|")"|"["|"]"|"{"|"}" {
fprintf(out, "SYM:\t%s\n", yytext);
}
. ;
ECHO;
%%
yywrap() { return 1; }
int main(int argc, char *argv[])
{
if (argc > 2)
{
in = fopen(argv[1], "r");
if (!in)
{
fprintf(stderr, "Can not open %s\n", argv[1]);
exit(1);
}
out = fopen(argv[2], "w");
if (!out)
{
fprintf(stderr, "Can not open %s\n", argv[2]);
}
yyin = in;
}
fprintf(out, "#LINE 1:\n");
yylex();
fprintf(out, "EOF\n");
fclose(in);
fclose(out);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -