我想使用Bison/Yacc
+编写一个解析器Lex
,它可以解析如下语句:
VARIABLE_ID = 'STRING'
在哪里:
ID [a-zA-Z_][a-zA-Z0-9_]*
和:
STRING [a-zA-Z0-9_]+
所以,var1 = '123abc'
是一个有效的陈述,而1var = '123abc'
不是。
因此, aVARIABLE_ID
是 aSTRING
但 aSTRING
并不总是 a VARIABLE_ID
。
我想知道的是,区分两者的唯一方法是在更高级别(即内部Bison
代码)编写一个检查过程,或者我是否可以在Lex
代码中解决它。