编译原理 语法分析器 (java完美运行版)(精选.)
编译原理实验:java实现语法分析器
编译原理实验:java实现语法分析器
实验⽅法:递归下降分析法基本思想是,对⽂法中的每个⾮终结符编写⼀个函数,每个函数的功能是识别由该⾮终结符所表⽰的语法成分。因此需要分别构造 E,E’,T,T’,F 函数来执⾏⾃⼰的识别功能,根据⽂法的内容顺序决定函数的识别功能。
java程序实现:
import java.util.Scanner;
public class GrammarAnalysis {
static char[] s = new char[100];
static int sing;
static int i; //⽤来记录数组s中的下标;
static int n;//装语句中的⾃变量;
static void P() {
if(sing==0) {
if(s[i]=='b') {
++i;
S();
if(s[i]=='e') {
++i;
}else{
sing=1;
System.out.println("error!--------不是结尾符号e");
System.exit(-1);
}
}else {
sing=1;
System.out.println("error!--------缺少开头符号b");
System.exit(-1);
}
}
}
static void S() {
if(sing==0) {
A();
if(s[i]==';') {
++i;
// if(s[i]!='e') {
S1();
// }
}else {
sing=1;
System.out.println("error!-----------缺少结尾符号;"); System.exit(-1);
编译原理语法分析器(java完美运行版)
编译原理语法分析器(java完美运行版)
第一篇:编译原理语法分析器 (java完美运行版)
实验二
语法分析器
一、实验目的
通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
二、实验内容
υ根据某一文法编制调试 LL(1)分析程序,以便对任意输入的符号串进行分析。
υ构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。
υ分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。
三、LL(1)分析法实验设计思想及算法
υ模块结构:
(1)定义部分:定义常量、变量、数据结构。
(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。
四、实验要求
1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。
2、如果遇到错误的表达式,应输出错误提示信息。
3、对下列文法,用LL(1)分析法对任意输入的符号串进行分析:
(1)E->TG(2)G->+TG|—TG(3)G->ε(4)T->FS(5)S->*FS|/FS(6)S->ε(7)F->(E)(8)F->i 输出的格式如下:
编译原理-语法分析器-(java完美运行版)-副本详解
实验二语法分析器
一、实验目的
通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
二、实验内容
◆根据某一文法编制调试LL (1 )分析程序,以便对任意输入的符号串
进行分析。
◆构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分
析程序。
◆分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号
以及LL(1)分析表,对输入符号串自上而下的分析过程。
三、LL(1)分析法实验设计思想及算法
◆模块结构:
(1)定义部分:定义常量、变量、数据结构。
(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。
四、实验要求
1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。
2、如果遇到错误的表达式,应输出错误提示信息。
3、对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E->TG
(2)G->+TG|—TG
(3)G->ε
(4)T->FS
(5)S->*FS|/FS
(6)S->ε
(7)F->(E)
(8)F->i
输出的格式如下:
五、实验源程序
LL1.java
import java.awt.*;
编译原理语法分析报告+代码
编译原理语法分析报告+代码1000字
一、语法分析
语法分析是编译器的重要部分,它的作用是对源程序进行分析和判断,判断源程序是否符合语法规则,把源程序划分为一个个语法单元,并建立语法树,这里介绍一种常见的语法分析方法——LR(1)分析。
1.LR(1)分析
LR(1)分析是一种自底向上的语法分析方法,它是以LR语法分析机
为基础的。LR(1)分析是在扫描整个输入的基础上作出决策的,名字
中的1表示当扫描到一个符号时,它会读下一个符号来做决策并且
仅仅读一个符号。
2.LR(1)分析器构建
构建LR(1)分析器首先需要构建LR(1)自动机,然后对其进行分析,
得到一个分析表。分析表有两个函数:action和goto。分析表的行
是状态,列是终结符或非终结符,如果分析表的项中既包含action
又包含goto,那么这个表就是一个LR(1)分析表。
3.核心算法
核心算法就是通过分析表进行分析,具体步骤如下:
(1)创建一个栈,将一个状态push入栈。
(2)循环扫描输入,每扫描一个符号就执行一个操作,直到栈为空。
(3)在栈的顶部状态上查找action表。如果输入符号是一个终结符,那么应该执行的动作是shift。如果输入符号是一个结束符号,那么说明输入已经结束,执行acc(accept)操作。
(4)如果找到了一个shift,就将其作为下一个状态push入栈,
并将上次扫描到的符号作为标记push入栈。
(5)否则,在栈的顶部状态上查找goto表。在状态表中查找新状态,并将其push入栈。
常见的错误处理:
(1)在action表中找不到适当的输入:
编译原理语法分析(1)
产生式 (也称产生式规则或规则) 是 定义语法实体的一种书写规则。一个语 法实体的相关规则可能不止一个, 如: P→1, P→2 , P→n 相同左部的产生式可合并为一个: P→ 1| 2|„| n 其中, i(i=1,2,„,n)称为P的候选式。
例3.1 试构造产生标识符的文法。
2>1型文法与1型语言 (对应自然语言) 若文法G的每个产生式→均满足 || ≤ || 则称文法G为1型文法或上下文有关文 法, 记为CSG。 1型文法相应的语言称为1型语言。 1型文法的另一种定义: 文法G的每个产生式具有下列形式: Aδ→δ 其中, ,δ∈V*, A∈VN, ∈V+ 它更明确地表达了上下文有关的特性。
例3.5 用CFG描述正规式(a|b)*abb 解: 先构造识别(a|b)*abb的NFA M:
a
0
a
1
b
2
b
3 2
b
G[A0]: A0→aA0∣bA0∣aA1 A1→bA2 A2→bA3 A3→ε
由正规式构造CFG的另一种方法: 通过分析正规式凭经验直接构造。 例如, 把(a|b)*abb看作(a|b)*和abb两部分,第 一部分是由0个或若干个a和b组成的字符 串,第二部分仅由abb字符串组成,由此得 到CFG G[A0]如下: G[A0]: A→HT H→aH|bH|ε T→abb
3.1 文法和语言
javaparser 介绍
javaparser 介绍
【原创版】
目录
1.JavaParser 简介
2.JavaParser 的功能
3.JavaParser 的使用示例
4.JavaParser 的优势与不足
正文
1.JavaParser 简介
JavaParser 是一个用于解析 Java 源代码的开源库。它可以将 Java 源代码解析成抽象语法树(Abstract Syntax Tree,AST),从而方便开发者对代码进行分析、生成、重构等操作。JavaParser 本质上是一个 Java 语言的词法分析器和语法分析器,它遵循 Java 语言的语法规范,将源代码转换成结构化的数据模型。
2.JavaParser 的功能
JavaParser 具有以下主要功能:
- 将 Java 源代码解析成抽象语法树(AST)
- 支持 Java 5、Java 6、Java 7 和 Java 8 等多个版本的语法规
范
- 可以解析类、方法、变量、注释等各种 Java 语言结构
- 支持自定义词法分析器和语法分析器
3.JavaParser 的使用示例
下面是一个简单的 JavaParser 使用示例:
```java
import JavaParser.ParserFactory;
import JavaParser.ast.AST;
import pilationUnit;
public class Main {
public static void main(String[] args) {
try {
ParserFactory factory =
ParserFactory.newFactory();
编译原理语法分析器(完美运行版)
学院(系)名称:计算机工程系
实验环境:
Windows XP
实验分析:
(1)定义部分:定义常量、变量、数据结构。
(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈(或其他)操作,输出分
实验程序:
#include<iostream>
#include<stack>
using namespace std;
stack<char> symbol;
stack<int> state;
char sen[50];
char sym[12][6]={//符号表
{'s','e','e','s','e','e'},
{'e','s','e','e','e','a'},
{'r','r','s','r','r','r'},
{'r','r','r','r','r','r'},
{'s','e','e','s','e','e'},
{'r','r','r','r','r','r'},
{'s','e','e','s','e','e'},
{'s','e','e','s','e','e'},
{'e','s','e','e','s','e'},
{'r','r','s','r','r','r'},
{'r','r','r','r','r','r'},
{'r','r','r','r','r','r'}
};
char snum[12][6]={//数字表
java编译原理
java编译原理
Java编译原理。
Java编译原理是指Java程序在编译过程中所遵循的规则和原理。了解Java编译原理对于理解Java程序的运行机制和优化程序性能具有重要意义。本文将从词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等方面介绍Java编译原理的相关知识。
首先,词法分析是编译器的第一步,它将源代码分解成一个个的词素,即标识符、关键字、运算符等。词法分析器会去除掉源代码中的注释,并将源代码转换成一个个的标记,以便后续的处理。词法分析的结果是一个标记流,它是语法分析的输入。
接着,语法分析是词法分析的下一步,它将标记流转换成抽象语法树。抽象语法树是一种树状结构,它反映了源代码的语法结构。语法分析器会根据语法规则对标记流进行分析,如果源代码不符合语法规则,语法分析器会报告错误。一旦语法分析完成,就可以进行语义分析。
语义分析是编译器的下一步,它对抽象语法树进行分析,检查源代码中是否存在语义错误。语义分析器会对标识符的声明和使用进行检查,以及类型的匹配等。如果源代码存在语义错误,语义分析器会报告错误。一旦语义分析完成,就可以进行中间代码生成。
中间代码生成是编译器的下一步,它将抽象语法树转换成一种中间表示形式,以便后续的处理。中间代码是一种抽象的机器语言,它反映了源代码的计算过程。中间代码生成器会根据源代码生成中间代码,并将中间代码传递给代码优化器。
代码优化是编译器的下一步,它对中间代码进行优化,以提高程序的性能。代码优化器会对中间代码进行各种优化,如常量折叠、死代码删除、循环展开等。优化后的中间代码将传递给目标代码生成器。
编译原理Part4语法分析
同步符号集的选择
如果一个非终结符产生空串,那么推导ε的产生式可以作为 缺省的情况,这样做可以推迟某些错误检查,但不能导致放 弃一个错误。这种方法减少在错误恢复期间必须考虑的非终 结符数。
用易于理解的方式提示语法错误信息,并能从常见的 错误中恢复过来
源程序
词法 分析器
记号
取下一 个记号
语法分 析器
语法树 前端的其 余部分
中间表示
符号表
语法分析器工作原理
语言的结构是用上下文无关文法描述的,因此,语法分析器 的工作本质上就是按照文法的产生式,识别输入符号串是否 为一个句子。
语法分析器是从左向右的扫描输入字符串,每次读入一个符 号,并判断,看是否能从文法的开始符号出发推导出这个输 入串。或者,从概念上讲,就是要建立一棵与输入串匹配的 语法分析树。 语法分析器分类
递归下降分析程序的构造
当文法满足上述两个文法条件时,我们就可以为它构 造一个不带回溯的自顶向下分析程序,这个分析程序 是由一组递归过程组成的。每个过程对应文法的一个 非终结符。这样的一个分析程序称为递归下降分析器。
E→E+T | T T→T*F | F F→(E) | i
E→T{+T} T→F{*F} F→(E) | i
编译原理LL(1)语法分析器java版完整源代码
编译原理LL(1)语法分析器java版完整源代码public class Accept2 {
public static StringBuffer stack=new StringBuffer("#E");
public static StringBuffer stack2=new StringBuffer("i+i*#");
public static void main(String arts[]){
//stack2.deleteCharAt(0);
System.out.print(accept(stack,stack2));
}
public static boolean accept(StringBuffer stack,StringBuffer stack2){//判断识别与否
boolean result=true;
outer:while (true) {
System.out.format("%-9s",stack+"");
System.out.format("%9s",stack2+"\n");
char c1 = stack.charAt(stack.length() - 1);
char c2 = stack2.charAt(0);
if(c1=='#'&&c2=='#')
return true;
switch (c1) {
case'E':
if(!E(c2)) {result=false;break outer;}
break;
case'P': //P代表E’if(!P(c2)) {result=false;break outer;}
javacc语法
javacc语法
JavaCC(Java Compiler Compiler)是一个生成Java源代码的语法分析器,可以用于编译、解释和生成其他程序。它可以生成词法分析器和语法分析器,这些工具可以用来处理和解析字符串、文件和其他数据。
以下是JavaCC的基本语法:
1. 定义词法分析器:
```java
TOKEN :
{
< ID : ('a'..'z' 'A'..'Z') ('a'..'z' 'A'..'Z' '0'..'9') >
< NUMBER : ('0'..'9')+ >
< STRING : '"' (~'"') '"' >
}
```
这里定义了三个令牌类型:ID、NUMBER和STRING。ID由小写和大写字母组成,可以包含数字;NUMBER由数字组成;STRING由双引号包围的字符串组成,其中不包含双引号。
2. 定义语法分析器:
```java
PARSER_BEGIN(MyParser)
public class MyParser extends SimpleParser {
public static void main(String[] args) {
MyParser parser = new MyParser();
try {
();
} catch (ParseException e) {
(());
} catch (TokenMgrError e) {
(());
}
}
void Start() throws ParseException {
}
...
}
PARSER_END(MyParser)
编译原理课程设计(JAVA)-语法分析器
福建农林大学计算机与信息学院
计算机类
课程设计报告
课程名称:编译原理
课程设计题目:语法分析器
姓名:
系:计算机
专业:计算机科学与技术
年级:2009级
学号:
指导教师:
职称:
2010~2011学年第一学期
福建农林大学计算机与信息学院计算机类
课程设计结果评定
评语:
成绩:
指导教师签字:任务下达日期:
评定日期:
目录
1 正则表达式 (1)
1.1 正则表达式 (1)
1.2 确定化(化简)后的状态转换图 (1)
1.3 分析程序代码 (1)
1.4 程序运行截图 (1)
1.5 小结 (8)
2 LL(1)分析 ········································································错误!未定义书签。
2.1 LL(1)文法 ·······························································错误!未定义书签。
2.2 LL(1)预测分析表 ······················································错误!未定义书签。
2.3 分析程序代码 ···························································错误!未定义书签。
2.4 程序运行截图 ···························································错误!未定义书签。
2.5 小结 ·······································································错误!未定义书签。
编译原理的词法分析与语法分析
编译原理的词法分析与语法分析编译原理是计算机科学中的一门重要课程,它研究如何将源代码转换为可执行的机器代码。在编译过程中,词法分析和语法分析是其中两个基本的阶段。本文将分别介绍词法分析和语法分析的基本概念、原理以及实现方法。
1. 词法分析
词法分析是编译过程中的第一个阶段,主要任务是将输入的源代码分解成一个个的词法单元。词法单元是指具有独立意义的最小语法单位,比如变量名、关键字、操作符等。词法分析器通常使用有限自动机(finite automaton)来实现。
在词法分析的过程中,需要定义词法规则,即描述每个词法单元的模式。常见的词法规则有正则表达式和有限自动机。词法分析器会根据这些规则匹配输入的字符序列,并生成相应的词法单元。
2. 语法分析
语法分析是编译过程中的第二个阶段,它的任务是将词法分析器生成的词法单元序列转换为语法树(syntax tree)或抽象语法树(abstract syntax tree)。语法树是源代码的一种抽象表示方式,它反映了源代码中语法结构和运算优先级的关系。
语法分析器通常使用上下文无关文法(context-free grammar)来描述源代码的语法结构。常见的语法分析算法有递归下降分析法、LR分析法和LL分析法等。
递归下降分析法是一种自顶向下的分析方法,它从源代码的起始符号开始,递归地展开产生式,直到匹配到输入的词法单元。递归下降分析法的实现比较直观,但对于左递归的文法处理不方便。
LR分析法是一种自底向上的分析方法,它使用一个自动机来分析输入的词法单元,并根据文法规则进行规约操作,最终生成语法树。常见的LR分析法有LR(0)、SLR、LR(1)和LALR等。
编译原理实验二:LL(1)语法分析器
编译原理实验⼆:LL(1)语法分析器
⼀、实验要求
1. 提取左公因⼦或消除左递归(实现了消除左递归)
2. 递归求First集和Follow集
其它的只要按照课本上的步骤顺序写下来就好(但是代码量超多...),下⾯我贴出实验的⼀些关键代码和算法思想。
⼆、基于预测分析表法的语法分析
2.1 代码结构
2.1.1 Grammar类
功能:主要⽤来处理输⼊的⽂法,包括将⽂法中的终结符和⾮终结符分别存储,检测直接左递归和左公因⼦,消除直接左递归,获得所有⾮终结符的First集,Follow集以及产⽣式的Select集。
#ifndef GRAMMAR_H
#define GRAMMAR_H
#include <string>
#include <cstring>
#include <iostream>
#include <vector>
#include <set>
#include <iomanip>
#include <algorithm>
using namespace std;
const int maxn = 110;
//产⽣式结构体
struct EXP{
char left; //左部
string right; //右部
};
class Grammar
{
public:
Grammar(); //构造函数
bool isNotTer(char x); //判断是否是终结符
int getTer(char x); //获取终结符下标
java antlr语法
Java ANTLR语法
1. 介绍
在Java编程中,ANTLR(ANother Tool for Language Recognition)是一种非常有用的工具,用于构建语法分析器。它可以根据给定的语法规则生成解析器和词法分析器,并且可以应用于生成代码、进行语法检查、执行语义分析等多个领域。
2. ANTLR的基本原理
ANTLR的基本原理是使用上下文无关文法(Context-Free Grammar,简称CFG)描述语言的语法规则,并根据这些规则生成解析器和词法分析器。ANTLR支持LL()语法和LR()语法两种类型,并可以通过语法规则的定义灵活地生成不同类型的解析器。
2.1 上下文无关文法
上下文无关文法是一种形式化的语法规范,用于描述一类形式语言的句法结构。它包含四个部分:终结符(Terminals)、非终结符(Non-terminals)、产生式规则(Productions)和起始符(Start symbol)。ANTLR使用扩展的巴科斯范式(Extended Backus-Naur Form,简称EBNF)来描述上下文无关文法。
2.2 语法规则定义
在ANTLR中,语法规则由标识符、参数列表、返回类型和规则体四个部分组成。语法规则的定义基本形式如下:
ruleName [返回类型] [参数列表]
: 执行体
;
其中,ruleName表示规则名称,返回类型和参数列表可选。执行体是规则的具体实现,用于描述规则的语义。
2.3 解析器和词法分析器的生成
在ANTLR中,通过定义完整的语法规则,并使用ANTLR工具根据这些规则生成解析器和词法分析器。生成的解析器和词法分析器可以直接应用于源代码的解析和语法检查。
编译原理实验报告(词法分析器-语法分析器)
LE
<
11
relop
LT
==
11
relop
EQ
=
12
=
-
;
13
;
-
五、实验内容:
1、实验分析
编写程序时,先定义几个全局变量a[]、token[](均为字符串数组),c,s( char型),i,j,k(int型),a[]用来存放输入的字符串,token[]另一个则用来帮助识别单词符号,s用来表示正在分析的字符。字符串输入之后,逐个分析输入字符,判断其是否‘#’,若是表示字符串输入分析完毕,结束分析程序,若否则通过int digit(char c)、intletter(char c)判断其是数字,字符还是算术符,分别为用以判断数字或字符的情况,算术符的判断可以在switch语句中进行,还要通过函数intlookup(char token[])来判断标识符和保留字。
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
while(digit(s)){
token[j]=s;
j=j+1;
get();
}
retract();
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二语法分析器
一、实验目的
通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
二、实验内容
◆根据某一文法编制调试LL (1 )分析程序,以便对任意输入的符号串
进行分析。
◆构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分
析程序。
◆分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号
以及LL(1)分析表,对输入符号串自上而下的分析过程。
三、LL(1)分析法实验设计思想及算法
◆模块结构:
(1)定义部分:定义常量、变量、数据结构。
(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);
(3)控制部分:从键盘输入一个表达式符号串;
(4)利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。
四、实验要求
1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。
2、如果遇到错误的表达式,应输出错误提示信息。
3、对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E->TG
(2)G->+TG|—TG
(3)G->ε
(4)T->FS
(5)S->*FS|/FS
(6)S->ε
(7)F->(E)
(8)F->i
输出的格式如下:
五、实验源程序
LL1.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.util.Vector;
public class LL1 extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField tf1;
JTextField tf2;
JLabel l;
JButton b0;
JPanel p1,p2,p3;
JTextArea t1,t2,t3;
JButton b1,b2,b3;
JLabel l0,l1,l2,l3,l4;
JTable table;
Statement sta;
Connection conn;
ResultSet rs;
DefaultTableModel dtm;
String Vn[]=null;
Vector
int firstComplete[]=null;//存储已判断过first的数据
char first[][]=null;//存储最后first结果
int followComplete[]=null;//存储已判断过follow的数据
char follow[][]=null;//存储最后follow结果
char select[][]=null;//存储最后select结果
int LL=0;//标记是否为LL(1)
String vt_tou[]=null;//储存Vt
Object shuju[][]=null;//存储表达式数据
char yn_null[]=null;//存储能否推出空
LL1()
{
setLocation(100,0);
setSize(700,780);
tf1=new JTextField(13);
tf2=new JTextField(13);
l=new JLabel(">>");
l0=new JLabel("输入字符串:");
l1=new JLabel("输入的文法为:");
l2=new JLabel(" ");
l3=new JLabel("分析的结果:");
l4=new JLabel("预测分析表:");
//p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
t1=new JTextArea(24,20);
t2=new JTextArea(1,30);
t3=new JTextArea(24,40);
b0=new JButton("确定(S为开始)");
b1=new JButton(" 判断文法 ");
b2=new JButton("输入");
b3=new JButton("清空");
table=new JTable();
JScrollPane jp1=new JScrollPane(t1);
JScrollPane jp2=new JScrollPane(t2);
JScrollPane jp3=new JScrollPane(t3);
p2.add(tf1);
p2.add(l);
p2.add(tf2);
p2.add(b0);
p2.add(b1);
p2.add(l0);
p2.add(l2);
p2.add(jp2);
p2.add(b2);
p2.add(b3);
p2.add(l1);
p2.add(l3);
p2.add(jp1);
p2.add(jp3);
p3.add(l4);
p3.add(new JScrollPane(table));
add(p2,"Center");
add(p3,"South");
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table.setPreferredScrollableViewportSize(new Dimension(660,200));
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b0)
{
String a=tf1.getText();
String b=tf2.getText();