Привет, мне нужно сгенерировать парсер данных CSV ...
На большинстве известных мне языков уже существует приличный сторонний парсер CSV.Итак, есть вероятность, что вы заново изобретаете колесо.
Например, в EBNF мы пишем [{header header} newline] newline
Эквивалент в ANTLR будет выглядетькак это:
((header entry)* newline)? newline
Другими словами:
| (E)BNF | ANTLR
-----------------+--------+------
'a' zero or once | [a] | a?
'a' zero or more | {a} | a*
'a' once or more | a {a} | a+
Обратите внимание, что вы можете группировать правила, используя круглые скобки (под-правила так называются):
'a' 'b'+
совпадений: ab
, abb
, abbb
, ...
, а:
('a' 'b')+
совпадений: ab
, abab
, ababab
, ...