C# 识别泛型类型参数括号

C# 识别泛型类型参数括号,c#,generics,antlr,lexer,C#,Generics,Antlr,Lexer,我目前正在研究一种语言,它是C#的超集。但是,我很难让lexer识别开始和结束泛型类型括号,特别是在liketypeof()表达式中使用的打开类型表达式,例如typeof(List) 如果我有三条规则: OpenTriangleBracket : '<' ; CloseTriangleBracket : '>' ; Symbol : ('>' | '<')+ ; 我怎样才能让它认识到这一点?由于我自己

我目前正在研究一种语言,它是C#的超集。但是,我很难让lexer识别开始和结束泛型类型括号,特别是在like
typeof()
表达式中使用的打开类型表达式,例如
typeof(List)

如果我有三条规则:

OpenTriangleBracket
    :    '<'
    ;

CloseTriangleBracket
    :    '>'
    ;

Symbol
    :    ('>' | '<')+
    ;

我怎样才能让它认识到这一点?由于我自己编写解析器部分,我完全可以控制如何实现它。

您可以使用它,而不是自己分析它。如果您这样做,它将为您解析和分析整个代码库,并为您提供强大的工具来进一步分析或添加到代码库中。此外,这是一个“真正的”生产应用程序,还是只是一个玩具项目,为您自己的经验?实际上,这是一个全新的语言!它只是使用相同的泛型类型声明。这将是一种生产语言,是的。所以它将用C#和更多语言尽一切可能?哇!无论如何,在我看来,lexer应该只识别
'
,解析器应该理解它们(看看它们是泛型类型参数的一部分,还是关系表达式的一部分)。我遇到的问题是
被识别为单个标记,我很难将其拆分!我省略了COM互操作:)虽然使用插件系统可以将其添加回。@Darkzaelus,这是因为
Symbol
不应该在你的lexer中。看看这个C#4.0语法:
List<List<>>
    v    ^v^
    1     2