资源简介
包里包括了Java写的cmm 词法分析器,以及一篇javacc的学习心得,对编译原理实践课有用!
代码片段和文件信息
import java.util.Iterator;
import java.util.linkedList;
public class AcrossTheRiver {
// 定义三个String对象
public static final String sheepName = “羊“;
public static final String wolfName = “狼“;
public static final String cabbageName = “白菜“;
// 判断两个货物之间关系是否友好 ..
public static boolean isFriendly(Goods goods1 Goods goods2){
if (goods1 != null){
if (goods1.getGoodsName().trim().equals(sheepName)){
if (goods2 == null){
return true;
}
else{
return false;
}
}
else if (goods1.getGoodsName().trim().equals(wolfName)){
if (goods2 == null || goods2.getGoodsName().trim().equals(cabbageName)){
return true;
}
else{
return false;
}
}
else if(goods1.getGoodsName().trim().equals(cabbageName)){
if (goods2 == null || goods2.getGoodsName().trim().equals(wolfName)){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
else{
return false;
}
}
// 我就直接写在主方法里了
public static void main(String [] args){
boolean isSuccess = false;
linkedList beforeCrossing = new linkedList();
linkedList afterCrossing = new linkedList();
beforeCrossing.add(new Goods(sheepName));
beforeCrossing.add(new Goods(cabbageName));
beforeCrossing.add(new Goods(wolfName));
while (!isSuccess) {
Goods goods1 = beforeCrossing.getFirst();
System.out.println(goods1.getGoodsName() + “被取走了“);
beforeCrossing.removeFirst();
if (beforeCrossing.isEmpty()) {
afterCrossing.addLast(goods1);
isSuccess = true;
System.out.println(“全部移动完毕!“);
}
else {
Iterator it = beforeCrossing.iterator();
Goods[] beforeCro = new Goods[2];
for (int i = 0; it.hasNext(); i++){
beforeCro[i] = it.next();
System.out.println(beforeCro[i].getGoodsName() + “留了下来“);
}
if (isFriendly(beforeCro[0] beforeCro[1])){
if (afterCrossing.isEmpty()) {
afterCrossing.addLast(goods1);
System.out.println(goods1.getGoodsName() + “被成功的放到了对岸“);
}
else{
Goods goods2 = afterCrossing.getFirst();
if (isFriendly(goods1 goods2)){
afterCrossing.addLast(goods1);
System.out.println(goods1.getGoodsName() + “被成功的放到了对岸“);
}
else{
beforeCrossing.addLast(goods2);
afterCrossing.removeFirst();
System.out.println(goods1.getGoodsName() + “与“ + goods2.getGoodsName() + “并不和睦于是把“ + goods2.getGoodsName() + “带了回来并将“ + goods1.getGoodsName() + “留了下来“);
}
}
}
else{
beforeCrossing.addLast(goods1);
System.out.println(“很可惜 留下来的两个东西并不和睦 于是 “ + goods1.getGoodsName() + “ 又被放了回去“);
}
}
}
}
}
class Goo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2307 2010-01-13 19:54 过河问题1\AcrossTheRiver.class
文件 3400 2010-01-13 16:25 过河问题1\AcrossTheRiver.java
文件 362 2010-01-13 19:54 过河问题1\Goods.class
目录 0 2010-01-13 18:56 过河问题1
----------- --------- ---------- ----- ----
6069 4
- 上一篇:pc与android通过usb socket实现手机通信Demo
- 下一篇:没有了
相关资源
- pl/0词法分析器和语法分析器(java)
- CMM_词法分析和语法分析_java编写
- 编译原理 C、Java语言词法分析器java实
- 用Java实现的基于SNL语言的词法分析与
- 编译原理实验 词法分析设计 MFC
- 华中科技大学 编译原理 面向过程的
- 词法分析器实现java和c++
- 完整cmm解释器
- C语言词法分析器(Java版.带界面)
- 词法分析器Java语言编写附实验报告
- 编译原理词法分析器 java版
- 编译原理词法分析器实现Java带界面源
- javacc实现cmm语法分析
- CMM 解释器JAVA实现)
- c0编译器 词法分析 文法分析 生成目
- 利用Java编写简单的C语言词法分析器
- Java实现PL0词法分析、语法分析、语义
- 含界面的java的词法分析器
- 编译原理 词法分析 语法分析 Java版
- 使用直接分析法编制C语言子集的词法
- 词法分析器(java实现)
- 编译原理综合实习代码
- 词法分析器java语言版本
- 采用java编写的C语言词法分析器(可执
- C编译器java编写词法分析,语法分析,
- java编写的PL/0词法分析器
- 词法分析器和语法分析器java实现代码
- java实现的图形界面词法分析程序
- 编译原理词法分析,语法分析,中间
- PL0词法分析器java实现
评论
共有 条评论