我目前正在研究一种C#的超集语言。但是,我在尝试让词法分析器识别打开和关闭泛型类型括号时遇到了麻烦,特别是在类typeof()
表达式中使用的打开类型表达式,例如typeof(List<List<>>)
。
如果我有三条规则:
OpenTriangleBracket
: '<'
;
CloseTriangleBracket
: '>'
;
Symbol
: ('>' | '<')+
;
正确识别以下类型的部分(1)(<
)。但是,部分(2)被识别为符号(<>>
)。通常,这将是理想的行为。如果是类型,我希望将其识别为三个独立的部分(<
,>
,>
)。
List<List<>>
v ^v^
1 2
我怎么能让它识别出来呢?当我自己编写解析器部分时,我完全可以控制它的实现方式。