Рассмотрите язык и компилятор для его разработки и разработки. На этом языке есть определенное утверждение, которое является частью грамматики: (=<identifier>)
. Этот кусок может быть распознан компилятором. Но между скобками и знаком равенства и идентификатором допускаются пробелы. Таким образом, у меня есть эти возможности:Есть ли лучший способ указать дополнительные элементы в правилах CFG?
(=<identifier>)
(= <identifier>)
(=identifier)
(=identifier)
...
без учета всей грамматики, но только правила, чтобы справиться с этой функцией языка, у меня есть что-то вроде этого (в Бизон-подобный синтаксис для правил грамматики):
statement: OBRCKT EQ ID CBRCKT
| OBRCKT S EQ S ID S CBRCKT
| OBRCKT S EQ ID S CBRCKT
| OBRCKT S EQ S ID CBRCKT
| OBRCKT S EQ ID CBRCKT
| OBRCKT EQ S ID S CBRCKT
| OBRCKT EQ ID S CBRCKT
| OBRCKT EQ S ID CBRCKT
| ...
Космический терминал S
может отображаться или нет. Но, как правила, я должен указать все возможные комбинации ... Есть ли лучший способ достичь этого результата?
Я думаю, что такого рода вещи обычно обрабатываются на уровне лексического анализа/токенизации, а не явно в грамматике. –
Так что лучше всего уменьшить во время лексического анализа одну возможную форму? Ну имеет смысл ... – Andry