Я пытаюсь изучить treetop и брал большую часть кода из https://github.com/survival/lordbishop для анализа имен и собирался строить из этого.
Моя структура немного отличается, потому что я строю ее в рельсах, а не в командной строке ruby.
Когда я выполняю очень простой синтаксический анализ, у меня появляется ошибка синтаксического анализа в пробеле (что должно быть одной из самых простых вещей в моей грамматике. Что я делаю неправильно?
Мойкод довольно прост, в моей модели
require 'treetop'
require 'polyglot'
require 'grammars/name'
class Name
def self.parse(data)
parser = FullNameParser.new
tree = parser.parse(data)
if tree.nil?
return "Parse error at offset: #{parser.index}"
end
result_hash = {}
tree.value.each do |node|
result_hash[node[0] = node[1].strip if node.is_a?(Array) && !node[1].blank?
end
return result_hash
end
end
Я сократил большую часть грамматики до получения слов и пробелов
grammar FullName
rule word
[^\s]+ {
def value
text_value
end
}
end
rule s
[\s]+ {
def value
""
end
}
end
end
Я пытаюсь разобрать 'Джон Смит«Я надеялся просто вернуть слова и пробелы и построить свою логику оттуда, но я застрял даже на этом простом уровне. Любые предложения ??