资源简介
java实现的语法分析器,包括词法分析
语法分析采用自顶向下,递归下降的方法

代码片段和文件信息
import java.io.*;
import java.util.*;
public class cifa {
/**
* @param args
*/
static int code;
static String value;
static int index;
static StringBuilder sb;
static String s;
static char ch;
static String[] key ={“program““begin““end““var““integer““if““then““else““do““while“};
static int linenum;
static boolean isLetter(char ch){
return ((ch>=‘a‘)&&(ch<=‘z‘))||((ch>=‘A‘)&&(ch<=‘Z‘));
}
static boolean isDigit(char ch){
return (ch>=‘0‘)&&(ch<=‘9‘);
}
static boolean isBC(char ch){
return (ch==‘ ‘)||(ch==9);
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new FileReader(“in.txt“));
PrintWriter out = new PrintWriter(new BufferedWriter (new FileWriter(“out.txt“)));
linenum=1;
while((s=in.readLine())!=null){
index=0;
while(index sb = new StringBuilder();
ch = s.charAt(index++);
while(isBC(ch)){
if(index ch = s.charAt(index++);
}else {
index++;
break;
}
}
if(isLetter(ch)){
while(isLetter(ch)||isDigit(ch)){
sb.append(ch);
//
if(index ch = s.charAt(index++);
}else {
index++;
break;
}
}
index--;
code=0;
String temp=sb.toString();
for(int i=0;i<10;i++){
if(key[i].equals(temp)){
code=i+1;
value=“__“;
}
}
if(code==0){
out.println(“(11“ +sb + “)“);
}else{
out.println(“(“+ code +““ +value + “)“);
}
}
else if(isDigit(ch)){
while(isDigit(ch)){
sb.append(ch);
//
ch=s.charAt(index++);
}
index--;
out.println(“(12“ +sb + “)“);
}else if(ch==‘+‘){out.println(“(13__)“);}
else if(ch==‘-‘){out.println(“(14__)“);}
else if(ch==‘(‘){out.println(“(15__)“);}
else if(ch==‘)‘){out.println(“(16__)“);}
else if(ch==‘=‘){out.println(“(17__)“);}
else if(ch==‘>‘){out.println(“(18__)“);}
else if(ch==‘<‘){out.println(“(19__)“);}
else if(ch==‘;‘){out.println(“(20__)“);}
else if(ch==‘‘){out.println(“(21__)“);}
else if(ch==‘:‘){
if(s.charAt(index++)==‘=‘){
out.println(“(23__)“);
}
else{
index--;
out.println(“(22__)“);
}
}else if(ch==‘*‘){out.println(“(24__)“);}
else if(ch==‘/‘){out.println(“(25__)“);}
}
}
in.close();
out.close();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2009-05-25 19:54 bianyi\.classpath
文件 382 2009-05-25 19:54 bianyi\.project
文件 3300 2009-05-25 20:16 bianyi\bin\cifa.class
文件 3251 2009-05-25 21:25 bianyi\bin\yufatest.class
文件 30 2009-05-25 21:24 bianyi\in.txt
文件 134 2009-05-25 21:24 bianyi\out.txt
文件 2582 2009-05-25 20:16 bianyi\src\cifa.java
文件 3145 2009-05-25 21:25 bianyi\src\yufatest.java
文件 0 2009-05-25 21:25 bianyi\yufaout.txt
目录 0 2009-05-26 14:53 bianyi\bin
目录 0 2009-05-26 14:53 bianyi\src
目录 0 2009-05-26 14:53 bianyi
----------- --------- ---------- ----- ----
13056 12
- 上一篇:java 栈的实现和应用
- 下一篇:java jdk-11.0.1 64位 绿色版
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论