我正在尝试学习使用Treetop PEG语法分析器,但是我从一开始就遇到了奇怪的错误。
我有这个文件结构
node_extensions.rb parser.rb tranlan.treetop
文件内容如下(列表按上面列出的文件顺序排列)
node_extensions.rb
# node_extensions.rb
module TranLan
end
parser.rb
# 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
# tranlan.treetop
grammar TranLan
end
当我运行parser.rb时,我收到此错误
/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>'
出了什么问题?有什么帮助吗?
答案 0 :(得分:1)
您有多个错误:
这是一个开始。解决这些问题,你就可以开始编写语法了。