Теги grako ebnf на новой строке; Ингоринг пространства

Попытка сделать парсер с грако, чтобы разобрать что-то вроде

tag1: line1
line 2 ... 
tag2: line1 
line2
... 

такие, что пробелы перед tag1 должны игнорироваться; но теги должны начинаться с новой строки.

Малый ebnf (x.ebnf)

START = DATA $;

DATA = piece:{PIECE}+ ;

PIECE = x | y;

sep = ":";

xtag = /^\s*x[^:]*/ sep;
ytag = /^\s*y[^:]*/ sep;

x = xtag val:userinput ;
y = ytag val:userinput ;

userfirstinput = /.*/;
userinput = firstline+:userfirstinput lines:{line}*;
line  = !PIECE /.*/;

вход (тест):

  x: First
y: liney
liney2 x: is not x

Начните:

python3 xparser.py -t test START

Ошибка:

grako.exceptions.FailedParse: test.event(1:1) no available options :
  x: First

^
PIECE
DATA
START

Вопрос: почему?! Я ставлю ^\s*x, почему он не совпадает?

Спасибо за любую подсказку!

0 ответов

Другие вопросы по тегам