Я хочу написать парсер с помощью Bison/Yacc
+ Lex
который можно разобрать заявления типа:Отличительные идентификаторы из общих строк
VARIABLE_ID = 'STRING'
где:
ID [a-zA-Z_][a-zA-Z0-9_]*
и:
STRING [a-zA-Z0-9_]+
Так , var1 = '123abc'
является действительным заявлением, а 1var = '123abc'
нет.
Поэтому VARIABLE_ID
является STRING
, но STRING
не всегда является VARIABLE_ID
.
Что я хотел бы знать, так это то, что единственный способ различать эти два - это написать процедуру проверки на более высоком уровне (то есть внутри кода Bison
), или если я смогу его обработать в коде Lex
.
Не ваши строки всегда окружены одинарными кавычками, как вы их написали? – rici