1
Я использую генератор синтаксического анализа waxeye для генерации парсера python для некоторой грамматики. К сожалению, когда я пытаюсь разобрать любой текст, я почти каждый раз, когда получаю ту же ошибку:Анализ синтаксического анализатора waxeye
parse error: failed to match 'whitespace' at line=1, col=10, pos=10
или
parse error: failed to match 'ws' at line=1, col=10, pos=10
Я полагаю, что это проблема с моим определением грамматики, но я попробовал почти все, как я мог макияж, и это все еще неправильно.
Вот питона код:
import waxeye
import robLang
text = ' block is red '
def analyze(input):
ast = robLang.Parser().parse(input)
if isinstance(ast, waxeye.ParseError):
return ast
else:
return sum(ast.children[0])
result = analyze(text)
print result
и грамматика определение:
statement <- ws thing ws isWord wse adjective ws ?(adjectives)
thing <- objectType ?(ws name)
objectType <- 'pyramid'|'ball'|'block'|'boot'|'leg'|'degree'
name <- [a-zA-Z] *[a-zA-Z0-9_-]
isWord <- 'is'
adjectives <- *(adjective ws)
colour <- 'red'|'green'|'blue'|'black'|'white'|'yellow'|'orange'|'purple'
|'cyan'|'magenta'
size <- 'small'|'big'
moralDirection <- 'good'|'bad'
adjective <- colour|size|moralDirection
number <- +[0-9] ?('.' +[0-9]) ws
ws <: *[ \t\n\r]