资源简介
java模拟编译器,实现词法,语法分析,生成语法树
代码片段和文件信息
package analyzer;
/**
* Created by myz on 2016/6/29.
*/
import javax.swing.*;
import java.util.ArrayList;
public class LexAnalysis {
private JTextArea errorArea;
public ArrayList tokenlist=new ArrayList<>();
String[] sss;
public LexAnalysis(JTextArea jTextArea){
this.errorArea=jTextArea;
}
public ArrayList lexical_analysis(String input) {
String s = input;
char[] a = s.toCharArray();//char数组
int Lnumber = 0;//左括号的数目
int Rnumber = 0;//右括号的数目
int Istrue = 0;//是否错误 0为没有错误 1为有错误
int[] b = new int[a.length];//整数型
for (int ii = 0; ii < a.length; ii++) {
b[ii] = (int) a[ii];
}
for (int i = 0; i < a.length; i++) {
if (i == 0) {
if (b[i] > 47 && b[i] < 58)
{
//Llist.set(0“s“);
//Llist.remove(1);
//a[i] = ‘s‘;
}
if (b[i] < 48 || b[i] > 57) {
if (b[i] != 40 && b[i] != 41 && b[i] != 42 && b[i] != 43 && b[i] != 45 && b[i] != 47) {
System.out.println(“不能识别的运算符!“);
errorArea.append(“error:不能识别的运算符!\n“);
Istrue = 1;
break;
}
if (b[i] != 40) {
System.out.println(“运算式首位不能是运算符!“);
errorArea.append(“error:运算式首位不能是运算符!\n“);
Istrue = 1;
break;
}
}
if (b[i] == 40) {
//b[i]==40是左括号
Lnumber++;
//System.out.println(“bixie“);
int ssss = 0;//判断是否有右括号
if (b[i + 1] == 41) {
System.out.println(“左右括号之间不能为空!“);
errorArea.append(“error:左右括号之间不能为空!\n“);
Istrue = 1;
break;
}
if (b[i + 1] == 43 || b[i + 1] == 45 || b[i + 1] == 42 || b[i + 1] == 47) {
System.out.println(“左括号右侧不能是运算符!“);
errorArea.append(“error:左括号右侧不能是运算符!\n“);
Istrue = 1;
break;
}
for (int j = i; j < a.length; j++) {
//b[j]=(int)a[j];
if (b[j] == 41) {
ssss = 1;
//break;
}
}
if (ssss == 0) {
System.out.println(“左括号不能找到与之匹配的右括号!“);
errorArea.append(“error:左括号不能找到与之匹配的右括号!\n“);
Istrue = 1;
break;
}
}
}//首位
else if (i+1 == a.length )
{
if
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11367 2016-06-29 20:17 src\analyzer\LexAnalysis.java
文件 10206 2016-06-29 20:12 src\analyzer\SLRParsing.java
文件 2840 2016-06-29 19:26 src\analyzer\Wordsplit.java
文件 89 2016-06-29 19:49 src\bean\Grammar.java
文件 7664 2016-06-29 20:22 src\client\compilerCilent.java
文件 3204 2016-06-29 20:22 src\client\compilerCilent.jfd
文件 2088 2016-06-29 20:19 src\client\paintTree.java
文件 192 2016-06-29 14:52 src\tree\Nodes.java
文件 1693 2016-06-29 14:52 src\tree\TernaryTree.java
目录 0 2016-06-29 20:17 src\analyzer
目录 0 2016-06-29 19:49 src\bean
目录 0 2016-06-29 20:22 src\client
目录 0 2016-06-29 14:52 src\tree
目录 0 2016-06-29 19:45 src
----------- --------- ---------- ----- ----
39343 14
- 上一篇:Java编写的C-minus词法和语法分析器
- 下一篇:java课程设计 电子词典
相关资源
- java编译器
- 简易C语言编译器Java源代码
- net.sf.jadclipse_3.3.0.jar和jad.exe.rar
- micro:bit安卓编译器apk版本
- 用Java实现的基于SNL语言的词法分析与
- 设计实现一个编译器(java)
- 华中科技大学 编译原理 面向过程的
- tiger编译器完整版包括编译报告
- snlc编译器 c java
- 小型的java编译器GUI
- [现代编译器的Java实现].(美)Andrew
- 现代编译器的Java实现.(美)Andrew.W
- 现代编译器的Java实现(第二版).pd
- Java实现具有词法匹配、语法分析和中
- c0编译器 词法分析 文法分析 生成目
- java实现的c语言简单编译器
- C编译器java编写词法分析,语法分析,
- C0编译器java实现
- JAVA版本的LALR编译器语法分析
- JAVA课程设计PL0编译器
- 编译原理第二版 龙书
- 清华大学编译课decaf编译器源码
- TPL编译器.zip
- JAVA写的编译器编译原理课设
- java写的c语言编译器
- 一个java实现的简易编译器
- MIPS反编译器与模拟器使用JAVA
- PL0编译器java版
- AndroidKiller小插件,多dex转java源码,无
- Java反编译工具(XJad) v2.2 中文绿色版
评论
共有 条评论