資源簡介
1、使用遞歸下降分析算法分析表達式文法:
exp ::= exp addop term | term
addop ::= + | -
term ::= term mulop factor | factor
mulop ::= * | /
factor ::= (exp) | number
其中number可以是多位的十進制數字串(整數即可),因此這里還需要一個小的詞法分析器來得到number的值。
2、該詞法分析器以子程序形式出現,當需要進行詞法分析時進行調用;
3、能夠識別正確和錯誤的表達式;
4、在進行語法分析的過程中,計算輸入表達式的值
exp ::= exp addop term | term
addop ::= + | -
term ::= term mulop factor | factor
mulop ::= * | /
factor ::= (exp) | number
其中number可以是多位的十進制數字串(整數即可),因此這里還需要一個小的詞法分析器來得到number的值。
2、該詞法分析器以子程序形式出現,當需要進行詞法分析時進行調用;
3、能夠識別正確和錯誤的表達式;
4、在進行語法分析的過程中,計算輸入表達式的值
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
namespace?遞歸下降分析器
{
????public?partial?class?Form1?:?Form
????{
????????public?static?string?str;//用于記錄richtextbox1中輸入的字符串
????????public?static?int?i?=?0;//用于記錄str中正在分析的字符位置
????????public?static?string?s;
????????public?static?string?[]F=new?string?[1000];//用于記錄分析過的內容
????????public?static?int?f?=?0;//用于記錄分析過的個數
????????//public?static?int[]?A?=?new?int[200];
????????//public?static?int?a?=?0;
????????public?struct?Stack
????????{
????????????public?int?top;
????????????public?string[]?st;//?=?new?string[1000]
????????}
????????
????????public?Stack?stack=new?Stack();
??????
????????public?Form1()
????????{
????????????InitializeComponent();
????????}
//============================================================================================================================================
????????public?static?void?E()//------------------------------------------------??e=te1
????????{
????????????T();
????????????E1();
????????}
????????public?static?void?E1()//------------------------------------------------??e1=ate1|空
????????{?
????????????if?(i?==?str.Length)
????????????{
????????????????return;
????????????}
????????????if?(str[i]?!=?‘+‘?&?str[i]?!=?‘-‘?)
????????????{
????????????????return;
????????????}
???????????
????????????A();
????????????T();
????????????E1();
????????}
????????public?static?void?A()//------------------------------------------------??a=+|-
????????{
????????????F[f]?=?str[i].ToString();
????????????i++;
????????????f++;
????????}
????????public?static?void?T()//------------------------------------------------???t=ft1
????????{
????????????FF();
????????????T1();
????????}
????????public?static?void?T1()//------------------------------------------------???t1=mft1|空
????????{?
????????????if(i==str.Length?)
????????????{
????????????????return;
????????????}
????????????if?(str[i]?!=?‘*‘?&?str[i]?!=?‘/‘)
????????????{
????????????????return;
????????????}
??????????
????????????M();
????????????FF();
????????????T1();
????????}
????????public?static?void?M()//------------------------------------------------???m=*|/
????????{
????????????F[f]?=?str[i].ToString();
????????????i++;?f++;
????????}
????????public?static?void?FF()//------------------------------------------------??f=(e)|number
????????{
????????????int?x?=?0;
????????????if?(i?==?str.Length)
????????????{
????????????????MessageBox.Show(“表達式有錯誤!“);
????????????}
????????????else?if?(str[i]?==?‘(‘)
????????????{
????????????????F[f]?=?str[i].ToString();
????????????????i++;?f++;
????????????????E();
????????????????if?(i?????????????????{
????????????????????if?(str[i]?==?‘)‘)
????????????????????????F[f]?=?str[i].ToString();
????????????????????i++;?f+
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5612??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties\Resources.resx
?????文件????????249??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties\Settings.settings
?????文件???????1398??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties\AssemblyInfo.cs
?????文件???????2892??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties\Resources.Designer.cs
?????文件???????1106??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties\Settings.Designer.cs
?????文件???????3788??2009-05-03?17:27??遞歸下降分析器\遞歸下降分析器\遞歸下降分析器.csproj
?????文件??????14328??2009-05-17?21:56??遞歸下降分析器\遞歸下降分析器\bin\Debug\遞歸下降分析器.vshost.exe
?????文件??????12288??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\bin\Debug\遞歸下降分析器.exe
?????文件??????30208??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\bin\Debug\遞歸下降分析器.pdb
?????文件????????490??2007-07-21?01:33??遞歸下降分析器\遞歸下降分析器\bin\Debug\遞歸下降分析器.vshost.exe.manifest
?????文件????????180??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.Form1.resources
?????文件????????180??2009-05-03?17:27??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.Properties.Resources.resources
?????文件???????1126??2009-05-17?21:56??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.csproj.FileListAbsolute.txt
?????文件??????12288??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.exe
?????文件??????30208??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.pdb
?????文件????????847??2009-05-17?21:47??遞歸下降分析器\遞歸下降分析器\obj\Debug\遞歸下降分析器.csproj.GenerateResource.Cache
?????文件????????502??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Program.cs
?????文件???????5814??2009-05-17?21:46??遞歸下降分析器\遞歸下降分析器\Form1.resx
?????文件???????9793??2009-05-17?21:46??遞歸下降分析器\遞歸下降分析器\Form1.cs
?????文件???????4472??2009-05-17?21:46??遞歸下降分析器\遞歸下降分析器\Form1.Designer.cs
?????文件????????953??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器.sln
????..A..H.?????16896??2009-05-17?21:56??遞歸下降分析器\遞歸下降分析器.suo
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\obj\Debug\TempPE
?????目錄??????????0??2009-05-03?16:57??遞歸下降分析器\遞歸下降分析器\obj\Debug\Refactor
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\bin\Debug
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\obj\Debug
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\Properties
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\bin
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器\obj
?????目錄??????????0??2009-04-23?19:50??遞歸下降分析器\遞歸下降分析器
............此處省略4個文件信息
- 上一篇:中科院 編譯原理 習題及解答
- 下一篇:單循環鏈表(帶頭結點和不帶頭結點)
評論
共有 條評論