资源简介
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 < str.Length)
{
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个文件信息
- 上一篇:中科院 编译原理 习题及解答
- 下一篇:单循环链表(带头结点和不带头结点)
评论
共有 条评论