首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby & Treetop -没有这样的文件或目录@ rb_sysopen

Ruby & Treetop -没有这样的文件或目录@ rb_sysopen
EN

Stack Overflow用户
提问于 2014-12-25 10:43:06
回答 1查看 754关注 0票数 0

我正在努力学习如何使用Treetop语法解析器,但从一开始就出现了奇怪的错误。

我有这个文件结构

代码语言:javascript
复制
node_extensions.rb parser.rb          tranlan.treetop

文件的内容如下(按上面列出的文件排列)

node_extensions.rb

代码语言:javascript
复制
# node_extensions.rb
module TranLan

end

parser.rb

代码语言:javascript
复制
# parser.rb
require 'treetop'

# Find out what our base path is
base_path = File.expand_path(File.dirname(__FILE__))

# Load our custom syntax node classes so the parser can use them
require File.join(base_path, 'node_extensions.rb')

class Parser
  base_path = File.expand_path(File.dirname(__FILE__))
  Treetop.load(File.join(base_path, 'tranlan_parser.treetop'))
  @@parser = SexpParser.new

  def self.parse(data)
    tree = @@parser.parse(data)
    raise Exception, "Parser error at offset: #{@@parser.index}" if tree.nil?
    tree
  end
end

tranlan.treetop

代码语言:javascript
复制
# tranlan.treetop
grammar TranLan

end

当我运行parser.rb时,我会得到这个错误

代码语言:javascript
复制
/Users/maca/.rvm/gems/ruby-2.1.4/gems/treetop-1.5.3/lib/treetop/compiler/grammar_compiler.rb:37:in `initialize': No such file or directory @ rb_sysopen - /Users/maca/devel/playground/treetop-grammar/tranlan_parser.treetop (Errno::ENOENT)
from /Users/maca/.rvm/gems/ruby-2.1.4/gems/treetop-1.5.3/lib/treetop/compiler/grammar_compiler.rb:37:in `open'
from /Users/maca/.rvm/gems/ruby-2.1.4/gems/treetop-1.5.3/lib/treetop/compiler/grammar_compiler.rb:37:in `load'
from parser.rb:17:in `<class:Parser>'
from parser.rb:10:in `<main>'

怎么了?有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-26 11:16:02

您有多个错误:

  • 您正在尝试加载tranlan_parser而不是tranlan。
  • 您正在尝试加载一个.treetop文件,但它被称为.tt
  • 您正在尝试实例化SexpParser,但是您创建了TranLanParser
  • TranLanParser没有规则,所以没有顶层规则,所以没有解析器。
  • 你不需要去吃那些花哨的文件名。只需要这些文件。
  • 您不需要Parser类,Treetop会为您生成一个类(重新打开它来扩展它)

这是个开始。修好这些东西,你就可以开始写语法了。

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

https://stackoverflow.com/questions/27646490

复制
相关文章

相似问题

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