首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lemon Parser-Generator:不计算非终结符吗?

Lemon Parser-Generator:不计算非终结符吗?
EN

Stack Overflow用户
提问于 2010-10-23 16:36:46
回答 1查看 622关注 0票数 1

我试着学习解析器。因为我的C语言水平很低,所以我用谷歌搜索了一个PHP Lemon来学习一些关于解析器生成器的知识。无论如何,这里的代码对于普通的lemon朋友来说也应该是可读的。

像往常一样,在处理解析问题时,我首先尝试生成一个简单的计算器。

所以我的第一步很简单:

代码语言:javascript
复制
start(A)   ::= expr(B). {echo "======RESULT:".A.":".B.":=========".PHP_EOL;}

解析第一个测试的是什么:

代码语言:javascript
复制
include "mysimple.php"; //include the generated Parser
$P = new ParseParser(); //create a Parser object
$P->Parse(ParseParser::VALUE,"13"); // here is the simple test, just understand the Number 13, pls
$P->Parse(0,0); //input is finished, parse!
echo "finished. yeah!".PHP_EOL;

...to结果:

代码语言:javascript
复制
======RESULT:13:=========
finished. yeah!

所以,一切都和预期的一样。现在,我们尝试准备一个最终允许我们处理操作的步骤,即expression

代码语言:javascript
复制
start ::= expr(B).  {echo "======RESULT:".B.":=========".PHP_EOL;}
expr  ::= VALUE(B). {echo "got a value:".B.PHP_EOL;}

当我现在运行相同的测试时,我希望看到相同的输出,加上一行显示got a value: 13的输出。但我得到的是:

代码语言:javascript
复制
got a value:13
======RESULT::=========
finished. yeah!

好吧,发生了什么?为什么结果行是空的?显然,expr的计算结果是VALUE‘13’。Lemon不关心评估吗?我一定要自己去做吗?但是,如果我在这一点上什么也得不到,该怎么办呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-23 16:48:57

你不想要这样的东西吗:

代码语言:javascript
复制
expr(A) ::= VALUE(B). {A = B; echo "got a value:".B.PHP_EOL;}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4003137

复制
相关文章

相似问题

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