首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Treetop:获取节点的偏移量

Treetop:获取节点的偏移量
EN

Stack Overflow用户
提问于 2010-11-08 02:09:31
回答 1查看 229关注 0票数 1

我正在使用Treetop为一种小型编程语言生成解析器。

在成功解析之后,我想在语法树上做一些语义分析。理想情况下,每当我遇到一段(语义上)无效的代码时,我希望打印出一条错误消息,其中包括错误发生的行。我知道这是可能的因为如果我这么做了

代码语言:javascript
复制
parser = MyParser.new
tree = parser.parse("foobar")
p tree

我得到了像这样的东西

代码语言:javascript
复制
SyntaxNode offset=0, "foobar":
    SyntaxNode offset=0, "f"
    SyntaxNode offset=1, "o"
    SyntaxNode offset=2, "o"
    SyntaxNode offset=3, "b"
    SyntaxNode offset=4, "a"
    SyntaxNode offset=5, "r"

从本质上讲,我想要一种访问给定SyntaxNode对象(或其子类)的offset属性的方法。不幸的是,根据http://treetop.rubyforge.org/semantic_interpretation.html的说法,Treetop::Runtime::SyntaxNode上唯一可用的方法是terminal?nonterminal?text_valueelements,因此似乎没有内置的方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-17 05:22:37

每个SyntaxNode都有一个"interval“方法,它是一个Ruby Range对象。偏移量为interval.start。

Treetop的支持邮件列表在http://groups.google.com/group/treetop-dev

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

https://stackoverflow.com/questions/4118976

复制
相关文章

相似问题

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