Я новичок в antlr и ebnf.
У меня есть следующая грамматика, выраженная в antlr4:
grammar RecordGrammar;
Record: 'record';
EndRecord: 'endrecord';
Track: 'track';
EndTrack: 'endtrack';
Length: 'length';
Name: [a-zA-Z]+;
Number: [0-9]+;
WS: [ \t\r\n]+;
records: (record)+ EOF;
record: Record WS Name WS
tracks WS?
EndRecord WS?;
tracks: track WS? (track WS)*;
track: Track WS
length
EndTrack WS?;
length: Length WS Number WS?;
Когда я использую грамматику выше (с antlr) для этого текста:
record help
track
length 2
endtrack
track
length 4
endtrack
track
length 42
endtrack
endrecord
... работает хорошо и модно.
Но я хочу расширить правило 'Name' в EBNF, чтобы также принимать пробел.
Итак, я хочу, чтобы грамматика также принимала этот текстовый файл:
record help me
track
length 2
endtrack
track
length 4
endtrack
track
length 42
endtrack
endrecord
Обратите внимание на текст «помогите мне» справа от тега записи.
Как я могу достичь этого в грамматике? Поскольку пробел - это естественный разделитель, мне нужно какое-то особое отношение к этому в моих правилах. Спасибо за всю помощь, которую я могу получить ...