Compiler construction 如何为此构造LEX?
我想让自动机使用lex和yacc接受以下正则表达式。正则表达式是R=(ab+a)* 谁能帮我用lex和yacc构造这个自动机Compiler construction 如何为此构造LEX?,compiler-construction,Compiler Construction,我想让自动机使用lex和yacc接受以下正则表达式。正则表达式是R=(ab+a)* 谁能帮我用lex和yacc构造这个自动机 谢谢。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc): 我不完全确定语法是否有效或是否存在任何简化冲突。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc): 我不完全确定语法是否有效或是否存在任何简化冲突 %% a return TOKENA; /*
谢谢。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc):
我不完全确定语法是否有效或是否存在任何简化冲突。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc): 我不完全确定语法是否有效或是否存在任何简化冲突
%%
a return TOKENA; /* for an a in the input */
b return TOKENB; /* for a b in the input */
\n /* ignore end of line */;
[ \t]+ /* ignore whitespace */;
%%
commands: /* empty */
| commands command
{ printf("found a (ab + a)* pattern"); }
command:
ab
|
a
;
ab: TOKENA TOKENB
;
a: TOKENA
;