📄 yufafenxi.java
字号:
Cuowu err=new Cuowu(0);
err.showError();
System.exit(0);
}
}
void bianliangshuoming(){//变量说明部分
do{
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("IDENT"))
{
////////////////////////////////
define=new Tabdingyi(CurrentWord.NAME,"VARIABLE",-1,level,adr++);
define.display();
show(define);
table.add(define);
///////////////////////////////
CurrentWord=getSym(mys);//读下一个
}
else{
Cuowu err=new Cuowu(4);
err.showError();
System.exit(0);
}
}while(CurrentWord.SYM.equals(","));
if(CurrentWord.SYM.equals(";")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个变量说明的部分");
}
else{
Cuowu err=new Cuowu(5);
err.showError();
System.exit(0);
}
}
void changliangdingyi(){//常量定义
//CurrentWord.show(CurrentWord.NAME);
if(CurrentWord.SYM.equals("IDENT")){//标识符
String helpName=CurrentWord.NAME;//define的NAME
CurrentWord=getSym(mys);//读下一个
if(CurrentWord.SYM.equals("=")){
CurrentWord=getSym(mys);//读下一个
}
else{
Cuowu err=new Cuowu(1);
err.showError();
System.exit(0);
}
if(CurrentWord.SYM=="NUMBER"){//CurrentWord.NUM=Integer.parseInt(help);
System.out.println("语法:");
System.out.println("分析了一个常量定义");
////////////////////////////////////
define=new Tabdingyi(helpName,"CONSTANT",CurrentWord.NUM,-1,-1);
define.display();
show(define);
table.add(define);
////////////////////////////////////
CurrentWord=getSym(mys);//说明结束,读下一个
}
else{
Cuowu err=new Cuowu(3);
err.showError();
System.exit(0);
}
}
else{
//System.out.println("google!");
Cuowu err=new Cuowu(2);
err.showError();
System.exit(0);
}
}
void guochengshuoming(){//过程说明部分,往下读了一个
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("IDENT")){
////////////////////////////////////
adr=3;//adr返回0
define=new Tabdingyi(CurrentWord.NAME,"PROCEDURE",-1,level++,adr);//过程为3!!!
define.display();
show(define);
table.add(define);
table.addLevel();
////////////////////////////////////
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals(";")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个过程首部");
Fenchengxu();//分程序
//CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals(";")){
level=0;
CurrentWord=getSym(mys);//说明结束,读下一个
//<过程说明部分>---可重复,
//没有在下读一个,隐含上面完成说明后要下读一个单词
while(CurrentWord.SYM.equalsIgnoreCase("procedure"+"SYM")){
guochengshuoming();
}
//CurrentWord=getSym(mys);
System.out.println("分析了过程说明部分");
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(8);
err.showError();
System.exit(0);
}
}
else{
Cuowu err=new Cuowu(7);
err.showError();
System.exit(0);
}
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(6);
err.showError();
System.exit(0);
}
}
void yuju(){//语句
if(CurrentWord.SYM.equals("IDENT")){
CurrentWord=getSym(mys);
fuzhiyuju();//赋值语句
System.out.println("语法:");
System.out.println("分析了一个赋值语句");
}
else if(CurrentWord.SYM.equals("if"+"SYM")){
CurrentWord=getSym(mys);
tiaojianyuju();//条件语句
}
else if(CurrentWord.SYM.equals("while"+"SYM")){
CurrentWord=getSym(mys);
dangxingxunhuan();//当形循环语句
}
else if(CurrentWord.SYM.equals("call"+"SYM")){//过程调用语句
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("IDENT")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个过程调用语句");
}
}
else if(CurrentWord.SYM.equals("read"+"SYM")){
duyuju();//读语句
}
else if(CurrentWord.SYM.equals("write"+"SYM")){
xieyuju();//写语句
}
else if(CurrentWord.SYM.equals("begin"+"SYM")){
fuheyuju();//复合语句
}
else if(CurrentWord.SYM.equals(".")||CurrentWord.NAME.equals(";")||CurrentWord.NAME.equals("end")){//空语句
//CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个空语句");
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(13);
err.showError();
System.exit(0);
}
}
void fuzhiyuju(){////赋值语句
if(CurrentWord.SYM.equals(":")){
CurrentWord=getSym(mys);//读下一个
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(10);
err.showError();
System.exit(0);
}
//CurrentWord=getSym(mys);//读下一个
if(CurrentWord.SYM.equals("=")){
CurrentWord=getSym(mys);//读下一个
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(10);
err.showError();
System.exit(0);
}
biaodashi();//表达式
//System.out.println("分析了一个赋值语句");
}
void biaodashi(){
if(CurrentWord.SYM.equals("+")||CurrentWord.SYM.equals("-")){
CurrentWord=getSym(mys);//读下一个
}
xiang();
while(CurrentWord.SYM.equals("+")||CurrentWord.SYM.equals("-")){
CurrentWord=getSym(mys);//读下一个
xiang();
}
//CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个表达式");
}
void xiang(){
yinzi();
while(CurrentWord.SYM.equals("*")||CurrentWord.SYM.equals("/")){
CurrentWord=getSym(mys);//读下一个
yinzi();
}
System.out.println("语法:");
System.out.println("分析了一个项");
}
void yinzi(){
if(CurrentWord.SYM.equals("IDENT")){//标识符
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个标识符因子项");
}
else if(CurrentWord.SYM.equals("NUMBER")){//无符号整数
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个无符号整数因子");
}
else if(CurrentWord.SYM.equals("(")){//表达式
CurrentWord=getSym(mys);
biaodashi();
if(CurrentWord.SYM.equals(")")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个表达式因子");
}
else{
Cuowu err=new Cuowu(15);
err.showError();
System.exit(0);
}
}
else{
Cuowu err=new Cuowu(16);
err.showError();
System.exit(0);
}
}
void tiaojianyuju(){//条件语句
tiaojian();//条件
if(CurrentWord.SYM.equals("then"+"SYM")){
CurrentWord=getSym(mys);//读下一个
yuju();
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个条件语句");
}
else{
Cuowu err=new Cuowu(11);
err.showError();
System.exit(0);
}
}
void tiaojian(){//条件
if(CurrentWord.SYM.equals("odd"+"SYM")){
CurrentWord=getSym(mys);//读下一个
biaodashi();
//CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个条件");
}
else{
biaodashi();
if(CurrentWord.SYM.equals("=")||CurrentWord.SYM.equals("#")||CurrentWord.SYM.equals("<")
||CurrentWord.SYM.equals("<=")||CurrentWord.SYM.equals(">")||CurrentWord.SYM.equals(">="))
{
CurrentWord=getSym(mys);//读下一个
biaodashi();
//CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个条件");
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(17);
err.showError();
System.exit(0);
}
}
}
void dangxingxunhuan(){//当型语句
tiaojian();//条件
if(CurrentWord.SYM.equals("do"+"SYM")){
CurrentWord=getSym(mys);//读下一个
yuju();
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个条件语句");
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(12);
err.showError();
System.exit(0);
}
}
void duyuju(){
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("(")){
do{
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("IDENT"))
CurrentWord=getSym(mys);
else{
Cuowu err=new Cuowu(14);
err.showError();
System.exit(0);
}
}while(CurrentWord.SYM.equals(","));
if(CurrentWord.SYM.equals(")")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个读语句");
}
else{
Cuowu err=new Cuowu(19);
err.showError();
System.exit(0);
}
}
else{
Cuowu err=new Cuowu(20);
err.showError();
System.exit(0);
}
}
void xieyuju(){
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("(")){
do{
CurrentWord=getSym(mys);
if(CurrentWord.SYM.equals("IDENT"))
CurrentWord=getSym(mys);
else{
Cuowu err=new Cuowu(21);
err.showError();
System.exit(0);
}
}while(CurrentWord.SYM.equals(","));
if(CurrentWord.SYM.equals(")")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个写语句");
}
else{
Cuowu err=new Cuowu(22);
err.showError();
System.exit(0);
}
}
else{
Cuowu err=new Cuowu(23);
err.showError();
System.exit(0);
}
}
void fuheyuju(){
do{
CurrentWord=getSym(mys);
yuju();
}while(CurrentWord.SYM.equals(";"));
if(CurrentWord.SYM.equals("end"+"SYM")){
CurrentWord=getSym(mys);//说明结束,读下一个
System.out.println("语法:");
System.out.println("分析了一个复合语句");
}
else{
CurrentWord.show(CurrentWord.SYM);
Cuowu err=new Cuowu(18);
err.showError();
System.exit(0);
}
}
// ------------------------------------------结束----------------------------------------------------------------------
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
}
// ----------------------------------------结束------------------------------------------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -