Compiler construction 如何为此构造LEX?

Compiler construction 如何为此构造LEX?,compiler-construction,Compiler Construction,我想让自动机使用lex和yacc接受以下正则表达式。正则表达式是R=(ab+a)* 谁能帮我用lex和yacc构造这个自动机 谢谢。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc): 我不完全确定语法是否有效或是否存在任何简化冲突。首先想到的是这样的东西。不是完整的程序,而是让你开始的东西: 扫描仪(lex): 解析器(yacc): 我不完全确定语法是否有效或是否存在任何简化冲突 %% a return TOKENA; /*

我想让自动机使用lex和yacc接受以下正则表达式。正则表达式是R=(ab+a)*

谁能帮我用lex和yacc构造这个自动机


谢谢。

首先想到的是这样的东西。不是完整的程序,而是让你开始的东西:

扫描仪(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
    ;