【javac添加python 列表特性5】修改openJDK的Javac,使得支持List k...
先把附件和测试文件发上来: Javac.rar (我使用的是JDK1.7) 经过前一阶段的学习,对javac前端Parser阶段已经有了足够的理解,要使javac支持类似python的列表语法: List k=[1,'a',[2,3],"abc", new Object()]; 这种语法的特征是: List 直接来源于java.util.*; 初始化时使用的是[]; 列表支持多种类型(基本和引用)混合; 支持列表的嵌套; 实现 的想法是: Java里面已经有了如下可以支持的语法: List k=new ArrayList(Arrays.asList(1,'a',"abc")); 所以只需要在Parser阶段,在VariableInitilizer里面加上识别[]的语句,并且把后面[]的内容改成Java已经支持的语法:new ArrayList(Arrays.asList())即可。 实现的具体方法: 继承JavacParser类和Scanner类,以便进行扩展。 覆写JavacParser的 variableInitializer,如果有LBRACKET,则return listInitializer(); 在listInitializer()里面可以先构造一段String newbuf="ArrayList(Arrays.asList( '[]里面的内容' ))"的代码