首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Treetop:解析单个节点返回nil

Treetop:解析单个节点返回nil
EN

Stack Overflow用户
提问于 2010-05-18 23:59:16
回答 1查看 134关注 0票数 1

我正在尝试了解Treetop解析的基础知识。这里有一个非常简单的语法,这样我就可以说ArithmeticParser.parse('2+2').value == 4了。

代码语言:javascript
复制
grammar Arithmetic
  rule additive
    first:number '+' second:number {
      def value
        first.value + second.value
      end
    }
  end

  rule number
    [1-9] [0-9]* {
      def value
        text_value.to_i
      end
    }
  end
end

解析2+2可以正常工作,返回一个节点。但是,解析222将返回nil

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-19 00:08:13

明白了!虽然我通常会删除这个问题,但如果其他人也从根本上误解了Treetop,我也不会感到惊讶,所以我在这里留下这篇文章作为参考。

Treetop不只是遍历规则,寻找适用的规则。相反,它从第一条规则开始,如果第一条规则不匹配,则必须强制它考虑替代规则。因此,/ number必须出现在additive规则的末尾。

代码语言:javascript
复制
grammar Arithmetic
  rule additive
    first:number '+' second:number {
      def value
        first.value + second.value
      end
    }
    / number
  end

  rule number
    [1-9] [0-9]* {
      def value
        text_value.to_i
      end
    }
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2858936

复制
相关文章

相似问题

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