编译原理词法分析器java

上传人:第*** 文档编号:61711753 上传时间:2018-12-10 格式:DOC 页数:14 大小:114.51KB
返回 下载 相关 举报
编译原理词法分析器java_第1页
第1页 / 共14页
编译原理词法分析器java_第2页
第2页 / 共14页
编译原理词法分析器java_第3页
第3页 / 共14页
编译原理词法分析器java_第4页
第4页 / 共14页
编译原理词法分析器java_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《编译原理词法分析器java》由会员分享,可在线阅读,更多相关《编译原理词法分析器java(14页珍藏版)》请在金锄头文库上搜索。

1、编译原理实验报告 计算机与信息学院实验一 词法分析器的设计一、实验目的1. 理解词法分析器的任务和输出形式2. 理解扫描器的工作原理3. 掌握状态转换图的绘制以及单词的识别技术4. 掌握词法分析器的设计过程,能够使用某种高级语言实现一个词法分析器二、实验环境Myeclipse三、实验要求给出一个简单的词法语言规则描述,其中:1开头的种别码为关键词,2开头的为算符,3开头的为界符,4开头的为标识符,5开头的为常数,标识符为字母开头,以字母和数字组成的任意符号串,常数为整数,即以数字组成的符号串。四、实验难点 1. 对整数的二进制转换,以及对指针的操作2. 标识符的设置五、实验代码1. ciFa.

2、Javapackage com.yaoer.test1;import javax.swing.*;import javax.swing.border.TitledBorder;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;SuppressWarnings(serial)public class ciFa extends JFrameprivate JButton jbtShow = new JButton(进行词法分析);/按钮private JTextArea

3、jta = new JTextArea();/输入文本框private JTextArea jtaOut = new JTextArea();/输出文本框private JPanel jpl=new JPanel();private String intput =;private String output =;private compiler comp = new compiler();/* * param args */public static void main(String args)ciFa frame = new ciFa();frame.setTitle(词法分析器);/fra

4、me.setLocationRelativeTo(frame);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(500, 400);frame.setVisible(true);public ciFa()jta.setWrapStyleWord(true);jta.setLineWrap(true);jtaOut.setWrapStyleWord(true);jtaOut.setLineWrap(true);jtaOut.setEditable(false);JScrollPane scrollPane =

5、new JScrollPane(jta);JScrollPane scrollPane2 = new JScrollPane(jtaOut);scrollPane.setPreferredSize(new Dimension(300,300);scrollPane2.setPreferredSize(new Dimension(300,300);jtaOut.setBorder(new TitledBorder(词法分析结果);jta.setBorder(new TitledBorder(请在这输入);jpl.setLayout(new GridLayout(2,2);jpl.add(jta)

6、;jpl.add(jtaOut);add(jbtShow,BorderLayout.SOUTH);add(jpl);jbtShow.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)intput = jta.getText();output=puterComp(intput);jtaOut.append(output););2. compiler.Javapackage com.yaoer.test1;public class compiler public String comput

7、erComp(String str)String output=;int index=0;int k = 0;while(index=str.length()if(str.charAt(index1)=0) if(index1+1=str.length()sub =str.substring(index1, index); result = Zhuan(sub);output+=( +result+ 数字);elseif(isMath(str.charAt(index1+1) output+=( 非法字符); else sub =str.substring(index1, index); re

8、sult = Zhuan(sub);output+=( +result+ 数字);else sub =str.substring(index1, index); result = Zhuan(sub);output+=( +result+ 数字); return output;if(isLetter(str.charAt(index)if(str.charAt(index)= |str.charAt(index)=n)/空格或者回车处理 index+;while(!isMath(str.charAt(index)|(isLetter(str.charAt(index)output+=(str.

9、charAt(index);index+; if(index=str.length() output+=( 非标识符);return output; output+=( 非法字符);else if(str.charAt(index1)=0) if(isMath(str.charAt(index1+1) output+=( 非法字符); else sub =str.substring(index1, index); result = Zhuan(sub);output+=( +result+ 数字);else sub =str.substring(index1, index); result =

10、 Zhuan(sub);output+=( +result+ 数字); else if(isLetter(str.charAt(index) /标识符判断int i=index; String sub;while(isLetter(str.charAt(index)|isMath(str.charAt(index)index+;if(index=str.length()/System.out.println(index);sub =str.substring(i, index); if(isKeyword(sub)!=0) if(isKeyword(sub)=10)output+=( + 1+isKeyword(sub)+ +sub+ 关键字);else output+=( + 10+isKeyword(sub)+ +sub+ 关键字);elseoutput+=( +sub+ 标识符); return output; sub = str.substring(i, index); /判断是不是关键字 if(isKeyword(sub)!=0) if(isKeyword(sub)=10)output+=( + 1+isKeyword(sub)+ +sub+ 关键字);elseoutput+=( + 10+isKeyword(sub)+ +sub+ 关键字);elseoutpu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号