lex.l
来自「开放源码的Boot」· L 代码 · 共 83 行
L
83 行
%{#include "y.tab.h"#define MAX_STR_CONST 256int yywrap (void){ return 1;}%}%x l_str%pointer%% static char stringbuf[MAX_STR_CONST]; char *string_buf_ptr; int string_caller; int line_num = 1;args return ARGS;config return CONFIG;flags return FLAGS;initrd return INITRD;kernel return KERNEL;name return NAME;nordload return NORDLOAD;nordprompt return NORDPROMPT;password return PASSWORD;path return PATH;passonargs return PONARGS;ramdisk return RAMDISK;riscos return RISCOS;rdload return RDLOAD;rdprompt return RDPROMPT;rdstart return RDSTART;readonly return READONLY;readwrite return READWRITE;root return ROOT;"{" return '{';"}" return '}';"=" return '=';";" return ';';[0-9]+ { sscanf(yytext, "%d", &yylval.integer); return INTEGER; }\" { string_caller = YY_START; string_buf_ptr = stringbuf; BEGIN (l_str); }<l_str>\" { *string_buf_ptr = '\0'; BEGIN (string_caller); yylval.string = stringbuf; return STRING; }<l_str>\n { fprintf (stderr, "unterminated string constant\n"); exit (1); }<l_str>\\(.|\n) *string_buf_ptr++ = yytext[1];<l_str>[^\\\n\"]+ { char *yytext_p = yytext; while (*yytext_p) *string_buf_ptr++ = *yytext_p++; }"#"[^\n]* /* ignore */[ \t\n]+ /* ignore */<<EOF>> yyterminate ();%%
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?