我对令牌级别的歧义有疑问。
问题看起来像这样。我的代码看起来像这样,因此令牌 t_UN1 具有更高的优先级。
t_ignore = ' \t\v\r' # whitespace
....
def t_UN1(t): #NS_
r'NS\_'
return t
def t_IDENTIFIER(t):
r'[a-zA-Z][a-zA-Z0-9_]*'
return t
....
我想实现这一点,例如。字符串:NS_XYZ 被标识为“IDENTIFIER”,被空格包围的单个 NS_ 被标识为“UN_1”。
我该如何处理?目前字符串 NS_XYZ 被简单地分成两个标记 UN1 和 IDENTIFIER