• 大小: 84KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-11-24
  • 语言: 其他
  • 标签:

资源简介

涉及词法分析、自下而上语法分析程序的实现:SLR(1)分析器的实现以及生成中间代码

资源截图

代码片段和文件信息

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.lang.String.*;
class AA  extends Jframe 
{   int a=0;
    int ii=-1;//状态栈的栈顶指针
    int e=1;//记录错误数
    int u=-1;//符号栈的栈顶指针
    int h=-1;//控制中间变量的数组下表;
    int y=-1;//语义栈的栈顶指针
    int weizhi=-1;//符号表中符号的总数;
    int i=0;//当把输入的表达式映射为数组,i为数组下标;
    int ll=0;//如果输入的字符是不可识别,ll=1;如果是可识别的ll=0;
    String s=“ “;
    String kk=““;
    String id;//记录识别出来的字符是标示符还是符号,值为i或*=...;
    String iweizhi;//记录所识别出来的字在符号表里的位置。
    String pp=““;//将符号表里的所有内容,全部取出付给pp便于查询;
    String EplaceTplaceFplaceAplace;//记录ETFA的实际值,可以为abx或中间变量;
    char lookhead;
    int state_stack[]=new int[ 40];//状态栈
char symbol_stack[]=new char[40];//符号栈
String grammer_stack[]=new String[100];//语义栈
String name[]={“A““B““C““D““F““G““H““J““K““L““Q““T1““T2““T3““T4““T5““T6““T7““T8““T9““A1““A2““A3““A4““A5““A6“};//中间变量的值
char N[] ={‘+‘‘*‘‘i‘‘=‘‘(‘‘)‘‘#‘‘E‘‘F‘‘T‘‘A‘};//这个文法所能识别出的符号,相当于slr表里的行坐标
    char grammer_right[][] ={{‘i‘‘=‘‘E‘}  {‘E‘‘+‘‘T‘} {‘T‘} {‘T‘‘*‘‘F‘} {‘F‘} {‘(‘‘E‘‘)‘}{‘i‘} };
    //每个产生式右边对应的符号
    String iii;
    JTextArea text1=new JTextArea();
    int fenxi[][] ={ {-1 -1 2 -1-1 -1 -1 -1 -1-11} { -1 -1 -1 -1 -1-10 -1 -1 -1-1 } { -1 -1 -1 3-1 -1 -1 -1-1-1-1} { -1 -1 12 -1 9 -1 -1 41011 -1} { 5 -1 -1 -1 -1 -1 101-1-1-1-1}{-1-112-19-1-1-1106-1}{1027-1-1-1102102-1-1-1-1}{-1-112-19-1-1-18-1-1}{104104-1-1-1104104-1-1-1-1}{-1-112-19-1-1131011-1}{105105-1-1-1105105-1-1-1-1}{1037-1-1-1103103-1-1-1-1}{107107-1-1-1107107-1-1-1-1}{5-1-1-1-114-1-1-1-1-1}{106106-1-1-1106106-1-1-1-1}};
//*****************************************************************************
AA(JTextArea a)
{text1=a;}
//******************************输出结构*************************************************
      int jianyan(char b)//寻找分析表的列坐标
{
    int k=N.length;
    for (int j = 0; j < k; j++)

    if (b == N[j]) 
    return j; 
}
return -2;
        }
      void printz()//输出状态栈
        {
         for(int p=0;p<=ii;p++)    
           { 
              String pp=state_stack[p]+“ “;
              text1.append(pp);
           }               
       }
      void printf()//输出符号栈
       {
         String h=“  “;
         text1.append(h);
          for(int p=0;p<=u;p++)
  {
    String pp=symbol_stack[p]+“ “;
    text1.append(pp);
  }
        }
      void printy()//输出语义栈
      {
       String h=“  “;
         text1.append(h);
       for(int p=0;p<=u;p++)
       {
       String pp=grammer_stack[p]+“ “;
       text1.append(pp);
       }
      }
      void print_grammer_right(int pvint bv)
      //输出每个产生式右边;
      {             
          for(int p=0;p   {
   Strin

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11099  2008-06-19 15:32  meng的编译课设\AA.class

     文件     218624  2008-06-19 16:19  meng的编译课设\B05513 韩萌萌 28.doc

     文件         90  2008-06-19 15:36  meng的编译课设\danciliubiao.doc

     文件         13  2008-06-19 15:35  meng的编译课设\hello.txt

     文件       3450  2008-06-19 15:32  meng的编译课设\JieMian.class

     文件        332  2008-06-19 15:32  meng的编译课设\meng.class

     文件      21614  2008-06-19 15:23  meng的编译课设\meng.java

     文件         15  2008-06-19 15:36  meng的编译课设\符号表.doc

     文件        308  2008-06-19 15:36  meng的编译课设\错误分析表.doc

     目录          0  2009-06-17 09:33  meng的编译课设

----------- ---------  ---------- -----  ----

               255545                    10


评论

共有 条评论