Я не очень опытен в написании грамматик, но, скажем, у меня есть такой тип записи: (примеры)
record # 1 source ages params A = 1 and b = 2 fields are A, B, C with values 1, 2, 3;
record # 2;
record # 3 source ages;
record # 4 params A = 1 and b = 2 fields are A, B, C with values 1, 2, 3;
record # 5 source ages fields are A, B, C with values 1, 2, 3;
record # 6 with values 1, 2, 3;
В основном:
- Должен начинаться с«record # Number» и заканчиваются точкой с запятой.
- Может содержать 0 или 1 захват в следующем порядке:
- исходный набор данных
- параметры набора данных
- поля из набора данных
- значения из набора данных
Вот моя грамматика, она не работает:
--- начальная грамматика:
@start = record;
record = 'record' '#' numeric rest* ';';
rest = 'source' alphanumeric paramsAndOrFieldsAndOrWithValues*;
paramsAndOrFieldsAndOrWithValues = (paramsList)? (fieldsList)? (valuesList)?;
paramsList = 'params' alpha expr numeric ('and' alpha expr numeric)*;
fieldsList = 'fields' 'are' alpha (comma alpha)*;
valuesList = 'with' 'values' numeric (comma numeric)*;
alpha = Word;
numeric = Number;
alphanumeric = (alpha | numeric | '_' | '.');
comma = ',';
expr = '=';
--- конец грамматики
@ "Разработчик из ParseKit", не могли бы вы мне помочь?
Спасибо:)