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 + -
显示快捷键?