📄 scan.l
字号:
D [0-9]L [a-zA-Z_]H [a-fA-F0-9]E [Ee][+-]?{D}+FS (f|F|l|L)IS (u|U|l|L)*%{#include <stdio.h>#include "y.tab.h"void count();%}%%"/*" { comment(); }"auto" { count(); return(AUTO); }"break" { count(); return(BREAK); }"case" { count(); return(CASE); }"char" { count(); return(CHAR); }"const" { count(); return(CONST); }"continue" { count(); return(CONTINUE); }"default" { count(); return(DEFAULT); }"do" { count(); return(DO); }"double" { count(); return(DOUBLE); }"else" { count(); return(ELSE); }"enum" { count(); return(ENUM); }"extern" { count(); return(EXTERN); }"float" { count(); return(FLOAT); }"for" { count(); return(FOR); }"goto" { count(); return(GOTO); }"if" { count(); return(IF); }"int" { count(); return(INT); }"long" { count(); return(LONG); }"register" { count(); return(REGISTER); }"return" { count(); return(RETURN); }"short" { count(); return(SHORT); }"signed" { count(); return(SIGNED); }"sizeof" { count(); return(SIZEOF); }"static" { count(); return(STATIC); }"struct" { count(); return(STRUCT); }"switch" { count(); return(SWITCH); }"typedef" { count(); return(TYPEDEF); }"union" { count(); return(UNION); }"unsigned" { count(); return(UNSIGNED); }"void" { count(); return(VOID); }"volatile" { count(); return(VOLATILE); }"while" { count(); return(WHILE); }{L}({L}|{D})* { count(); return(check_type()); }0[xX]{H}+{IS}? { count(); return(CONSTANT); }0[xX]{H}+{IS}? { count(); return(CONSTANT); }0{D}+{IS}? { count(); return(CONSTANT); }0{D}+{IS}? { count(); return(CONSTANT); }{D}+{IS}? { count(); return(CONSTANT); }{D}+{IS}? { count(); return(CONSTANT); }'(\\.|[^\\'])+' { count(); return(CONSTANT); }{D}+{E}{FS}? { count(); return(CONSTANT); }{D}*"."{D}+({E})?{FS}? { count(); return(CONSTANT); }{D}+"."{D}*({E})?{FS}? { count(); return(CONSTANT); }\"(\\.|[^\\"])*\" { count(); return(STRING_LITERAL); }">>=" { count(); return(RIGHT_ASSIGN); }"<<=" { count(); return(LEFT_ASSIGN); }"+=" { count(); return(ADD_ASSIGN); }"-=" { count(); return(SUB_ASSIGN); }"*=" { count(); return(MUL_ASSIGN); }"/=" { count(); return(DIV_ASSIGN); }"%=" { count(); return(MOD_ASSIGN); }"&=" { count(); return(AND_ASSIGN); }"^=" { count(); return(XOR_ASSIGN); }"|=" { count(); return(OR_ASSIGN); }">>" { count(); return(RIGHT_OP); }"<<" { count(); return(LEFT_OP); }"++" { count(); return(INC_OP); }"--" { count(); return(DEC_OP); }"->" { count(); return(PTR_OP); }"&&" { count(); return(AND_OP); }"||" { count(); return(OR_OP); }"<=" { count(); return(LE_OP); }">=" { count(); return(GE_OP); }"==" { count(); return(EQ_OP); }"!=" { count(); return(NE_OP); }";" { count(); return(';'); }"{" { count(); return('{'); }"}" { count(); return('}'); }"," { count(); return(','); }":" { count(); return(':'); }"=" { count(); return('='); }"(" { count(); return('('); }")" { count(); return(')'); }"[" { count(); return('['); }"]" { count(); return(']'); }"." { count(); return('.'); }"&" { count(); return('&'); }"!" { count(); return('!'); }"~" { count(); return('~'); }"-" { count(); return('-'); }"+" { count(); return('+'); }"*" { count(); return('*'); }"/" { count(); return('/'); }"%" { count(); return('%'); }"<" { count(); return('<'); }">" { count(); return('>'); }"^" { count(); return('^'); }"|" { count(); return('|'); }"?" { count(); return('?'); }[ \t\v\n\f] { count(); }. { /* ignore bad characters */ }%%yywrap(){ return(1);}comment(){ char c, c1;loop: while ((c = input()) != '*' && c != 0) putchar(c); if ((c1 = input()) != '/' && c != 0) { unput(c1); goto loop; } if (c != 0) putchar(c1);}int column = 0;void count(){ int i; for (i = 0; yytext[i] != '\0'; i++) if (yytext[i] == '\n') column = 0; else if (yytext[i] == '\t') column += 8 - (column % 8); else column++; ECHO;}int check_type(){/** pseudo code --- this is what it should check** if (yytext == type_name)* return(TYPE_NAME);** return(IDENTIFIER);*//** it actually will only return IDENTIFIER*/ return(IDENTIFIER);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -