首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Treetop语法有什么问题?

我的Treetop语法有什么问题?
EN

Stack Overflow用户
提问于 2012-12-01 02:01:08
回答 1查看 163关注 0票数 3

我有语法文件alexa_scrape.tt

代码语言:javascript
复制
grammar AlexaScrape
  rule document
    category_listing*
  end
  rule category_listing
    category_line url_line*
  end
  rule category_line
    category "\n"
  end
  rule category
    ("/" [^/]+)+
  end
  rule url_line
    [0-9]+ ". " url "\n"
  end
  rule url
    [^\n]*
  end
end

我有一个ruby文件,它试图使用它:

代码语言:javascript
复制
#!/usr/bin/env ruby -I .
require 'rubygems'
require 'polyglot'
require 'treetop'
require 'alexa_scrape.tt'

parser = AlexaScrapeParser.new
p( parser.parse("") || parser.failure_reason )
p( parser.parse("/x\n") || parser.failure_reason )

但是我没有得到我所期望的结果:

代码语言:javascript
复制
SyntaxNode offset=0, ""
"Expected one of /, \n at line 2, column 1 (byte 4) after /x\n"

它正确地解析了空字符串(作为document的简单匹配,零category_listings),但无法解析"/x\n" (因为包含单个category_listing的文档本身没有url_lines)。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 02:10:02

看起来category中的正则表达式在匹配category_line所需的空白区域中前进了……执行以下操作:

代码语言:javascript
复制
  rule category
    ("/" [^/\s]+)+    # or perhaps ("/" [^/\n]+)+
  end

(还有,哇,一个Treetop问题。这是SO历史上的47个问题,总共有400万个问题。每87000个问题中就有一个,因此问题被标记为Treetop)。

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

https://stackoverflow.com/questions/13650629

复制
相关文章

相似问题

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