欢迎来到天天文库
浏览记录
ID:46826594
大小:85.56 KB
页数:9页
时间:2019-11-28
《编译语言-语法分析器的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三语法分析器的设计一、实验内容设计、编写和调试构造LR(0)项目集规范簇或实现基于LR分析表对给定的符号串进行LR分析的程序。以下两个内容任选其中一项:(1)对于给定的文法,实现构造识别该文法全部活前缀DFA的程序。(2)对于给定的LR分析表和符号串,设计程序以实现所输入符号串是否为合法符号串。要求用JAVA语言编程。(可参考实验指导书P149至P156)二、程序代码AnalysisOfGrammer.javapackageanalysis;importjavax.swing.*;importjavax.swing.table.Def
2、aultTableModel;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.LinkedList;publicclassAnalysisOfGrammerextendsJApplet{privateJFileChooserjfc=newJFileChooser(newFile("."));privateJButtonjbt1=newJButton("打开文法文件");privateJButtonjbt2=newJButton("构造LR规范簇
3、");privateJButtonjbt3=newJButton("构造LR分析表");privateJButtonjbt4=newJButton("清空");privateJButtonjbt5=newJButton("退出");privateJLabeljl1=newJLabel("LR(0)项目集规范簇");privateJLabeljl2=newJLabel("LR(0)分析表");privateJPanelp3=newJPanel();privateJTextAreajta1=newJTextArea();privateStri
4、ng[]grammer=newString[50];privateintcount=0;privateLinkedListlist=newLinkedList();privateObjectcontent[][]=newObject[100][4];intnum1=0;String[][]cache=newString[50][100];int[]location=newint[50];intback=0;publicvoidclear1(){grammer=null;}publ
5、icvoidclear2(){num1=0;9/9list=null;content=null;cache=null;location=null;back=0;}publicAnalysisOfGrammer(){JPanelp1=newJPanel();p1.setLayout(newGridLayout(1,5));p1.add(jbt1);p1.add(jbt2);p1.add(jbt3);p1.add(jbt4);p1.add(jbt5);add(p1,BorderLayout.NORTH);JPanelp4=newJPanel(
6、);p4.setLayout(newGridLayout(1,2));JPanelp2=newJPanel();p2.setLayout(newBorderLayout());p2.add(newJLabel("文法为:"),BorderLayout.NORTH);p2.add(newJScrollPane(jta1),BorderLayout.CENTER);p4.add(p2);p4.add(p3);add(p4,BorderLayout.CENTER);jbt1.addActionListener(newActionListener
7、(){publicvoidactionPerformed(ActionEvente){jta1.setText("");open();}});jbt2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(jta1.getText().equals(""))JOptionPane.showMessageDialog(null,"请打开文法文件!");else{DNF();list.get(1).setNextState("接受态")
8、;for(intk=0;k
此文档下载收益归作者所有