JAVA语言语法树

软件课程设计

题目:Eclipse ast实现语法树

班级:

学号:

姓名:

指导教师:

时间:

一、课程设计要求:

用Eclipse AST分析java程序所形成的抽象语法树,并通过graphviz画出所对应的图。

二、开发环境:

操作系统:windows 7

开发工具:MyEclipse 8.x Graphviz2.28.0

四、具体代码:

1、获取根节点:

public class LxyAst {

private ASTParser astParser = ASTParser.newParser(AST.JLS3);

static String javaFilePath = "D:\\Users\\Administrator\\Workspaces\\MyEclipse 8.x\\LxyAst\\src\\lxy\\ast\\Test.java";

public CompilationUnit getCompilationUnit(String javaFilePath) throws Exception {

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(javaFilePath));

byte[] input = new byte[bufferedInputStream.available()];

bufferedInputStream.read(input);

bufferedInputStream.close();

this.astParser.setSource(new String(input).toCharArray());

CompilationUnit result = (CompilationUnit) (this.astParser.createAST(null));

return result;

}

2、将节点储存到txt中:

public void writetotext(String str, boolean i) {

try {

FileWriter fw = new FileWriter("E:\\t5.txt", i);

BufferedWriter bw = new BufferedWriter(fw);

bw.write(str);

bw.newLine();

bw.flush();

bw.close();

} catch (IOException e) {

System.out.print(e);

}

}

3、用graphviz画图:

public void Draw() {

Runtime rt = Runtime.getRuntime();

Process p = null;

try {

String s = "D:\\Program Files\\Graphviz 2.28\\bin\\dot E:\\t5.txt -Tpng -o result.png";

p = rt.exec(s);

} catch (Exception e) {

}

}

4、显示结果:

public void open() {

try {

Process p = Runtime.getRuntime().exec("cmd /c cd D:\\Users\\Administrator\\Workspaces\\MyEclipse 8.x\\LxyAst");

Process p2 = Runtime.getRuntime().exec("cmd /c start result.png");

} catch (Exception e) {

}

}

5、遍历语法树:

public void writexly(ASTNode node, String context) {

String wnode, nodename;

Loanode xqnode = new Loanode();

LxyAst xq = new LxyAst();

if (node.getParent() == null) {

xqnode.setMid(id);

xqnode.setPid(-1)

java的语法树,JAVA语言语法树.doc相关推荐

  1. c++和java哪个好学_【技术科普】C语言和java语言有些什么区别?

    C语言和java语言有些什么区别? 可以打个比方吧: C语言就像一个初创公司的老板,由于人少经费少,从技术.财务.市场等都需要自己管,经常把自己累的跟狗一样: Java语言就像一个上市大公司的老板,人 ...

  2. dart语言和java语言_Java不是文明语言吗?

    dart语言和java语言 几周前,我有机会学习iOS编程. 我的老板认为我更像是"计算机科学家",而不是开发人员,这意味着我可以将自己的知识应用于开发一两个iPad应用程序–我要 ...

  3. C语言和Java 在用数组作为参数时有点不一样

    C语言和Java 在用数组作为参数时有点不一样. C中` void jh(int n[2]) {/注意这里参数是写了大小 int temp; temp = n[0]; n[0] = n[1]; n[1 ...

  4. 零基础学编程,如何区分C语言和Java?我们到底如何怎么进行选择!

    C语言和 Java的主要区别:面向过程/面向对象.编译型/混合型.不同的应用场景.只要阅读二者的入门资料就清楚了. 时间足够的话,先学C再学Java:时间不够直接上 Java. 一个合格的程序员当然是 ...

  5. C语言和JAVA的区别在哪里?

    欢迎访问我的网站:omegaxyz.com 1.Java与C语言各自的优势 C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低. C语言最关键的是比Java多了指针,这也 ...

  6. C语言和JAVA的关联

    C语言和JAVA的关联 首先Java和C都是指令式语言,不同的是Java有面bai向对象成分在里面,而C是完全面向过程的.Java具有强大的跨平台性,既不同的操作系统都可以通过JVM来解释Java程序 ...

  7. java程序设计 c语言_C语言和Java编程有什么区别?

    C语言和Java编程有什么区别?Java从根本上说是c之后的一种改进语言,纯面向对象的一种编程语言(当然比起Ruby还是差一点),有了C语言的基础固然对学习Java有帮助,因为在某种程度上Java和C ...

  8. 华为用c还是java,C语言和Java孰轻孰重!

    C语言和java一直是程序员争论的话题,两种语言占据了编程语言排行榜第一和第二,相互追逐,各不相让. 先看看走势 前十名明星编程语言可以明显看出C语言和java都暴跌,不过有趣的是C语言走势曲线末端有 ...

  9. c语言和java哪个有前途_C语言和Java哪个更适合初学者?

    目前,无论是从应用范围还是流行程度来看,C语言和Java都是当下最为火热的编程语言.想要零基础入门编程的学习者在一开始的学习中都会碰到这样的难题:C语言和Java哪个更适合初学者?的确,编程语言的选择 ...

  10. c语言字符串与字符什么意思,C语言和Java中的字符串异同点是什么?

    2018-04-06 在Turbo C 语言和Java语言中字符串和字符串数组的异同点 1.Turbo C 语言 在C语言中字符串和字符数组基本上没有区别,都需要结束符:如:char s[4]={'a ...

最新文章

  1. 年度盛宴——2012年最精彩的15个 CSS3 教程
  2. html中设置父盒子的高度,【CSS】设置浮动元素高度等于父元素
  3. linux c 获取绝对路径各种方法分析
  4. SharePoint Foundation和SharePoint Server的区别
  5. 论文被拒怎么办?(下)
  6. 一步一步实现网站的多语言版本
  7. 工厂模式 Factory
  8. YBTOJ:字符匹配(KMP)
  9. 太极图python自定义函数绘制_[宜配屋]听图阁
  10. 网管日志-06.07.25
  11. raid 物理盘缓存状态_使用MegaCli工具查看Raid磁盘阵列状态
  12. linux部署redis集群遇到的问题
  13. SQL 用一个表的数据更新另一张表
  14. linux 编译运行c文件
  15. java参数传递的乱码问题
  16. centos配置java环境变量_【开发笔记】-CentOS配置Java环境变量
  17. vuedraggable嵌套块拖拽_vuedraggable 拖拽 应用 不同列表之间的拖拽
  18. 第一次学游泳技巧_第一次学游泳小学生作文(精选5篇)
  19. 无法在linux下启用ttysac0串口 终端只打印信息,启动出现mmc0: error -110 whilst initialising SD card该如何解决?...
  20. 电子设计教程18:射极跟随电路的参数设计

热门文章

  1. Hive记录-配置远程连接(JAVA/beeline)
  2. 【POJ 3273】 Monthly Expense (二分)
  3. Spring Mvc + Easyui中根据查询结果导出文件
  4. Jquery页面加载效果
  5. .NET平台开源项目速览(4).NET文档生成工具ADB及使用
  6. 基于ARM的GCC编译器,各版本arm-gcc区别与安装
  7. 黑马程序员Linux系统开发视频之mmap使用注意事项
  8. Google 系两公司联手,要让无人车少“犯错”
  9. 2019语音技术报告:语音经济规模将超移动应用
  10. mysql 5.7解压缩_mysql 5.7.22 解压缩安装