资源简介
PL/0编译程序采用一遍扫描的方法,所以语法分析和代码生成都有在BLOCK中完成。 包括语法分析器和词法分析器及实验报告。
代码片段和文件信息
package analysis;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class Analysis {
private frame lex;
private String filename;
private char ch;//每行读入的第一个字符
private String strbuf;//存放字符
private final String []key = {“begin““end““if““then““else““for““do““while““and““or““not“};
int current = 0;
public Analysis(frame lex) {
// TODO Auto-generated constructor stub
this.lex = lex;
}
public void openfile(){
JFileChooser choose = new JFileChooser(filename);
choose.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = choose.showOpenDialog(lex);
if(result==JFileChooser.CANCEL_OPTION)
return;
File file=choose.getSelectedFile();
filename=file.getAbsolutePath();
try{
StringBuffer buffer=new StringBuffer(““);
FileInputStream fis=new FileInputStream(filename);
int c;
while((c=fis.read())!=-1){
buffer.append((char)c);
}
lex.input.setText(new StringBuffer(buffer).toString());
lex.output.setText(““);
lex.errorput.setText(““);
}catch(IOException e){
e.printStackTrace();
}
}
public void save() {
// TODO Auto-generated method stub
JFileChooser chooser = new JFileChooser(filename);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = chooser.showOpenDialog(lex);
if(result==JFileChooser.CANCEL_OPTION)
return;
File file=chooser.getSelectedFile();
filename=file.getAbsolutePath();
//存入窗口
if(filename == null || ““.equals(filename)){
JOptionPane.showMessageDialog(chooser “请填文件名““请填文件名“JOptionPane.INFORMATION_MESSAGE);
}else{
try {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filename+“.txt“));
//将token表中的数据取出来放到String中
ArrayList al = lex.Token;
String outputString=““;
for(int i = 0; i< al.size(); i++){
outputString += “【“+al.get(i).getKind()+“ “+al.get(i).getName()+
“ “+al.get(i).getCode()+“】\r\n“;
}
osw.write(“ Token字表\r\n“+outputString);
osw.flush();
osw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public boolean isNumber(char ch)
{
if(ch >= ‘0‘&& ch <=‘9‘)
return true;
else
return false;
}
public boolean isAlph(char ch)
{
if(ch >= ‘a‘&& ch <= ‘z‘|| ch >= ‘A‘&& ch <= ‘Z‘)
{ //System.out.print(“ok“);
return true;}
else
return false;
}
private void isKey(String str){
int code = 0;//1表示是关键字,2表示是标示符
int i;
for(i = 0;i < key.length;i++){
if(str.equals(key[i])){
code = 1; //如果在关键字表中有一个与str匹配,输出关键字
lex.printMessage(lex.output “保留字“ str i+1);
}
}
if(code !=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13777 2010-06-07 08:27 编译原理实验\Analysis.java
文件 238 2010-06-07 08:19 编译原理实验\code.txt
文件 3726 2010-06-07 08:19 编译原理实验\fr
文件 258 2010-06-01 09:25 编译原理实验\Result.java
文件 419 2010-05-24 13:42 编译原理实验\TokenBean.java
文件 13 2010-05-25 20:24 编译原理实验\编译例题.txt
文件 11 2010-06-07 08:22 编译原理实验\编译例题1.txt
文件 14 2010-05-26 10:32 编译原理实验\编译错误例题.txt
文件 352713 2010-06-01 12:34 编译原理实验\语法分析词法分析实验报告.docx
目录 0 2010-06-10 10:47 编译原理实验
----------- --------- ---------- ----- ----
371169 10
- 上一篇:蚁群算法研究综述 发展历史和特点
- 下一篇:篮球30秒定时器课程设计
相关资源
- 编译原理简单赋值语句的语法分析程
- 基于LR(0)方法的语法分析程序
- LL(1)的语法分析程序
- 北邮编译原理实验二:语法分析程序
- 词法分析程序和语法分析程序 编译原
- 语法分析程序的设计与实现
- 算符优先语法分析程序
- LL(1)文法自动生成语法分析程序的
- 赋值语句的语法分析程序
- 语法分析程序的设计与实验
- 编译原理预测分析法语法分析程序
- 基于预测分析表法的语法分析程序
- LL(1)语法分析程序
- 自顶向下预测分析语法分析程序
- 实验二 递归下降语法分析程序设计
- 赋值语句词法和语法分析程序
- 编译原理 递归下降语法分析程序代码
- LL(1)语法分析程序实验报告
- 赋值语句的语法分析程序递归下降法
- 编译原理实习设计 语法分析程序
评论
共有 条评论