-
大小: 84KB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-11-24
- 語言: 其他
- 標簽:
資源簡介
涉及詞法分析、自下而上語法分析程序的實現(xiàn):SLR(1)分析器的實現(xiàn)以及生成中間代碼

代碼片段和文件信息
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;//狀態(tài)棧的棧頂指針
????int?e=1;//記錄錯誤數(shù)
????int?u=-1;//符號棧的棧頂指針
????int?h=-1;//控制中間變量的數(shù)組下表;
????int?y=-1;//語義棧的棧頂指針
????int?weizhi=-1;//符號表中符號的總數(shù);
????int?i=0;//當把輸入的表達式映射為數(shù)組,i為數(shù)組下標;
????int?ll=0;//如果輸入的字符是不可識別,ll=1;如果是可識別的ll=0;
????String?s=“?“;
????String?kk=““;
????String?id;//記錄識別出來的字符是標示符還是符號,值為i或*=...;
????String?iweizhi;//記錄所識別出來的字在符號表里的位置。
????String?pp=““;//將符號表里的所有內(nèi)容,全部取出付給pp便于查詢;
????String?EplaceTplaceFplaceAplace;//記錄ETFA的實際值,可以為abx或中間變量;
????char?lookhead;
????int?state_stack[]=new?int[?40];//狀態(tài)棧
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‘}?};
????//每個產(chǎn)生式右邊對應的符號
????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;}
//******************************輸出結(jié)構(gòu)*************************************************
??????int?jianyan(char?b)//尋找分析表的列坐標
{
????int?k=N.length;
????for?(int?j?=?0;?j? {?
????if?(b?==?N[j])?
????return?j;?
}
return?-2;
????????}
??????void?printz()//輸出狀態(tài)棧
????????{
???????? 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)
??????//輸出每個產(chǎn)生式右邊;
??????{?????? ???? ?
??????????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
評論
共有 條評論