我正在编写Java语言子集的编译器,在编写扫描程序时,我想知道如何识别非原始类型但来自库的类型。例如,String类型在Java语言中不是原始的。一般来说,如何在不事先了解的情况下将图书馆中的新类型识别为语言中的“关键字”。谢谢!
答案 0 :(得分:4)
尝试完成http://www.antlr.org/grammar/1152141644268/Java.g(注意type
声明及其用法) - 它会为您提供一些见解。
简而言之,当您解析源代码时,您知道您希望在哪里看到类型,无论是在字段和方法中的修饰符之后,在形式参数列表中的参数名称之前,等等。当您知道{{1是某种类型,您可以使用String
表检查以获取全名,然后在类路径中找到实际的类。
现在,正如Bart在评论中提到的那样(现已删除),真正的解决方案会在管道中稍后发生。在解析阶段,您只创建一个节点,表明您的import
是type
,其中 Identifier
。所以此时此答案将是是的,“你没有。”
更新:尝试关注this thesis,它可以帮助您。