首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为此构建LEX?

如何为此构建LEX?
EN

Stack Overflow用户
提问于 2009-12-24 11:10:47
回答 1查看 76关注 0票数 1

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

有人能帮我用lex和yacc构建这个自动机吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2009-12-24 11:28:13

首先浮现在脑海中的是这样的东西。不是完整的程序,而是一些可以让你入门的东西:

扫描仪(Lex):

代码语言:javascript
复制
%%
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 */;
%%

解析器(Yacc):

代码语言:javascript
复制
commands: /* empty */
        | commands command
        { printf("found a (ab + a)* pattern"); }

command:
        ab
        |
        a
        ;

ab: TOKENA TOKENB
    ;
a: TOKENA
    ;

我不能完全确定语法是否有效,或者是否有任何缩减冲突。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1956462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档