1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.FileNotFoundException; 5: import java.io.FileReader; 6: import java.util.Arrays; 7:   8: public class Scanner { 9:   10: public int lineCnt=0; 11: private char curCh = ' ';…
1: /* 2: * To change this license header, choose License Headers in Project Properties. 3: * To change this template file, choose Tools | Templates 4: * and open the template in the editor. 5: */ 6: package compiler; 7:   8: import fileSystem.fileFil…
花了几天时间,把清华版的<编译原理>一书中的PL/0编译器实践了一遍.颇有收获,记录如下: 理解代码的技巧,如何理解一份代码,比如这个程序,其逻辑相对于一般程序就比较复杂了,如何翻译,虚拟机代码执行时数据栈如何变化等,都比较抽象,很难在大脑中有形象的感受,这时,最好的办法就是单步调试,比如vs2015就很强大,还能监视变量,绘制流程图,等等. 对代码的追求,除了九月十月,感觉最近一段时间一直在学习而不是实践,一方面由于自己习惯不好,被动接受,缺乏思考,比如代码是不是可以更简洁,更优雅:另一方面…
1: package compiler; 2:   3: import java.io.IOException; 4: import java.util.BitSet; 5:   6: /** 7: * 语法分析器. 这是PL/0分析器中最重要的部分, 在语法分析的过程中嵌入了语法错误检查和目标代码生成. 8: * 9: * @author jiangnan 10: * 11: */ 12: public class Praser { 13:   14: /** 15: * 当前符号,由next…
1: package compiler; 2:   3: import java.io.BufferedWriter; 4: import java.io.FileWriter; 5:   6: /** 7: * 组织输入输出接口 8: * 9: * @author jiangnan 10: */ 11: public class PL0 { 12:   13: 14: public static final String pcodeFile = "d:\\pcode.txt"; 15…
1: package compiler; 2: //竟然没有对符号表检查大小,会溢出的. 3:   4: import java.io.IOException; 5:   6: public class SymbolTable { 7:   8: /** 9: * 当前名字表项指针(有效的符号表大小)table size 10: */ 11: public int tablePtr = 0; 12: /** 13: * 符号表的大小 14: */ 15: public static final…
1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.BufferedWriter; 5: import java.io.IOException; 6: import java.util.Arrays; 7: import java.util.logging.Level; 8: import java.util.logging.Logger; 9:   10: /** 11: * 类P-code…
1: package compiler; 2:   3: import java.io.BufferedWriter; 4:   5: public class Err { 6:   7: public int errCount = 0; 8: public static final String[] errInfo = new String[]{ 9: "", 10: "1.应是=而不是:=", 11: "2.=后应为数", 12: "…
1: package compiler; 2:   3: /** 4: * 采用全局变量sym来存储符号码,并用全局变量id和num来传递语义值 5: * 6: * @author jiangnan 7: * 8: */ 9: public class Symbol { 10:   11: //各类符号码 12: public static final int nul = 0; //NULL 13: public static final int ident = 1; //标识符 14: pub…
1: package compiler; 2:   3: /** 4: * //虚拟机指令 5: * 6: * @author jiangnan 7: * 8: */ 9: public class Pcode { 10:   11: public Pcode(int f, int l, int a) { 12: this.f = f; 13: this.l = l; 14: this.a = a; 15: } 16: public static final int LIT = 0; 17: p…
一.设计任务 1.1程序实现要求 PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关. PL/0的编译程序和目标程序的解释执行程序都是用JAVA语言书写的,因此PL/0语言可在配备JDK的任何机器上实现. 其编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需要生成相应的目标代码时,则调用代码生成程序. 用…
这个方面适用于报错为:java 找不到或无法加载主类,一般是找不到类的路径,问题出在CLASSPATH环境变量上,当然这是大多数.大概率的出错点 不排除根据个人情况不况,所以想起来伟大领袖毛主席的话:具体问题具体分析 1.整个配置环境过程,不再赘述,请按照如下博客进行配置(我认为很全的一篇) http://www.cnblogs.com/liuhongfeng/p/4177568.html 2.检查环境变量是否配置成功 运行cmd 分别输入java,javac, java -version (j…
编译实践-PL\0编译系统实现 姓名:   专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人为单位进行开发,不得多人合作完成. 共32个学时.个人无计算机者可以申请上机机时. 细节要求: 输入:符合PL/0文法的源程序(自己要有5个测试用例,包含出错的情况,还要用老师提供的测试用例进行测试) 输出:P-Code 错误信息:参见教材第316页表14.4. P-Code指令集:参见教材第316…
---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向Internet的编程语言.其特点是:面向对象.通用性.高效性.安全性.跨平台.随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言.  2.Java三大技术架构 Java由四方面组成:Java编程语言. Java文件格式. Java虚拟机(JVM). Java应用程序接口(J…
package com.algorithm.api; /************************************************************************* * Compilation: javac In.java * Execution: java In (basic test --- see source for required files) * * Reads in data of various types from standard in…
内容提要: 1.下载JDK: 2.安装JDK: 3.配置JDK;   第一,下载JDK:  1.登陆网址:www.oracle.com 2.点击 Downloads 3.选择 Java SE 4.选择 Java SE(includes JavaFX) 5.点击 JDK Download 6.选择Accpet License Agreement 版本对应: windows x86--32位操作系统 windows x64--64位操作系统 (如图) 下载完毕: 第二,安装JDK: 1.选择 要安装…
描述 本篇文章主要讲解基于windows 10系统搭建java开发环境,主要内容包括如下: (1)安装资料准备 (2)安装过程讲解 (3)测试是否安装成功 (4)Hello Word测试 1   安装材料准备 java开发环境搭建前,需要准备JDK和Eclipse. 1.1  JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 1.2  Eclipse 下载地址:http://www.eclips…
Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version 原因:Tomcat7和Tomcat6在标签配置上稍有不同. 解决: You just need to confirm the allowed tags by web.xml confirming DTD file. e.g. version=”2.5″ compatible web.…
当我导入Gradle项目初试Java spring的时候,遇到下面报错: Gradle complete project refresh failed Error:Could not determine java version . 参考这篇 http://www.ddiinnxx.com/solving-not-determine-java-version-9-0-1-gradle-intellij-macosx/ 进行的设置 不过这篇是macosx的,但是步骤大同小异 第一步:检查JDK版本…
首先进行java安装 http://www.cnblogs.com/someone9/p/8670585.html 2. 然后查看版本信息,仍然是1.5.0 [root@OKC java]# java -version java version "1.5.0" gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-18) Copyright (C) 2007 Free Software Foundation, Inc. This…
我把 JAVA_HOME 从8改成了 7 , 为什么还是 显示的8啊 ! E:\sv0\jars>java -version java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) JAVA_HOME 是 E:\Java\jdk7 path 是: C:\ProgramData\Oracle\Java\javapath;.;%HADOOP_HOME%\bin;f:\aspectj1…
在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分.于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法.这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析.借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器.…
原博地址:http://blog.csdn.net/dingchenxixi/article/details/51496998 一看知道是因为jdk版本不一致所导致,如何解决? 方法一: 选中项目 Properties , 选择 Project Facets,右击选择 Java , Change Version 方法二: 在 项目的目录下有一个.settings的文件夹,该文件夹下有一个org.eclipse.wst.common.project.facet.core.xml文件,内容如下; <…
Scanner是默认按照行来读取数字的. 创建一个用来输入的函数 Scanner scan=new Scanner(System.in):system.in是表示从控制台输入. 然后用一个变量类接收这个值 int n=scan.nextInt(): 只要声明一个对象即可,后面直接利用scan的方法转换成各种类型即可. Random方法是随机生成数的方法. 种子是表示在这个数的范围内生成的随机数字. 即上面这个表示在10的范围内生成的随机数字. 下面是利用蒙特卡罗算法来判断矩阵AB=E,即矩阵互逆…
一看知道是因为jdk版本不一致所导致,如何解决? 方法一: 选中项目 Properties , 选择 Project Facets,右击选择 Java , Change Version  方法二: 在 项目的目录下有一个.settings的文件夹,该文件夹下有一个org.eclipse.wst.common.project.facet.core.xml文件,内容如下; <?xml version="1.0" encoding="UTF-8"?> <…
在移植eclipse项目时,如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持.说明项目是其他版本jdk编译的,在eclipse里运行时会报版本不支持. 解决办法: 法1,选中项目 Properties , 选择 Project Facets,右击选择 Java , Change Version ...          即可. 法2,在 项目的目录下有一个.settings的文件夹,该文件夹下有一个org.…
学校编译课的作业之一,要求阅读两个较为简单的编译器的代码并做注释, 个人感觉是一次挺有意义的锻炼, 将自己的心得分享出来与一同在进步的同学们分享. 今后有时间再做进一步的更新和总结,其中可能有不少错误,也请各位大佬不吝指正. 代码可以通过使用Lazarus等pascal环境执行. 源码仓库:https://github.com/luxiaodou/Pascal-S-and-PL0-complier-comments PL0编译器源码 PL0语言是Pascal的一个子集,编译器也比较简单,逐行注释…
一.扫描控制台输入     当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,,,,,,,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象.   如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可.   import java.util.Scanner;public class TestScanner {         public static void main(String[] args) {   …
Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的.查看最新在线文档: public final class Scanner extends Object implements Iterator<String>, Closeable 可见,Scanner是没有子类的. 在JDK API关于Scanner提供了比较多的构造方法与方法.那么现在列出一些在平时工作中比较常用的方法,仅供大家参考: 构造方法: public Scanner(File source) throws…
转载: http://my.oschina.net/nly/blog/349081 在移植eclipse项目时,如果遇到 报:“Project facet Java version 1.7 is not supported.”项目中的jdk1.7不支持.说明项目是其他版本jdk编译的,在eclipse里运行时会报版本不支持.解决办法:法1,选中项目 Properties , 选择 Project Facets,右击选择 Java , Change Version 即可法2,在 项目的目录下有一个…