📄 scan.l
字号:
/*File: Scan.l *Lex description of C token */%{#include "Global.h"#include "Parse.h"#include "Utils.h"char tokenString[MAXTOKENLEN+1]; /*the token string received*/TokenType getToken(); /*get the token type and print token *in the list file */%}letter [_a-zA-Z]letnum [_a-zA-Z0-9]identifier {letter}{letnum}*digit [0-9]number {digit}+fnumber {number}"."{number}constchar '.'newline \nws [ \t]+%%"int" { return INT; }"float" { return FLOAT; }"char" { return CHAR; }"void" { return VOID; }"if" { return IF; }"else" { return ELSE; }"while" { return WHILE; }"continue" { return CONTINUE;}"break" { return BREAK; }"return" { return RETURN; }"+" { return PLUS; }"-" { return SUB; }"*" { return MUT; }"/" { return DIV; }"<" { return LT; }"<=" { return LE; }">" { return GT; }">=" { return GE; }"==" { return EQ; }"!=" { return NEQ; }"&&" { return AND; }"||" { return OR; }"!" { return NOT; }"=" { return ASSIGN; }"," { return COMMA; }";" { return SEMI; }"(" { return LP; }")" { return RP; }"[" { return LSP; }"]" { return RSP; }"{" { return LFP; }"}" { return RFP; }{identifier} { return ID; }{number} { return NUM; }{fnumber} { return FNUM; }{constchar} { return SCHAR; }{newline} { g_lineno++; }{ws} { /*do nothing*/ }"/*" { char c; int done = FALSE; do { while ((c=input())!='*') if (c==EOF) return ERROR; while ((c=input())=='*'); if (c=='/') done = TRUE; }while (!done); }. { return ERROR; }%%TokenType getToken(){ static int firstTime = TRUE; TokenType curToken; /*if it is first time to enter, initiate yyin and yyout*/ if (firstTime) { firstTime = FALSE; g_lineno++; yyin = g_src_file; yyout = g_lst_file; } curToken = yylex(); strncpy(tokenString, yytext, MAXTOKENLEN); fprintf(g_lst_file, "line %0.3d: ", g_lineno); printToken(curToken, tokenString); return curToken;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -