文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
实验报告
课程 编译原理 实
(1)构造一个栈,存放运算对象。
(2)读入一个用逆波兰式表示的简单算术表达式。
(3)自左至右扫描该简单算术表达式并判断该字符,如果该字符是运算对象,则将该字符入栈。若是运算符,如果此运算符是二目运算符,则将对栈顶部的两个运算对象进行该运算,将运算结果入栈,并且将执行该运算的两个运算对象从栈顶弹出。如果该字符是一目运算符,则对栈顶部的元素实施该运算,将该栈顶部的元素弹出,将运算结果入栈。
(4)重复上述操作直至扫描完整个简单算术表达式的逆波兰式,确定所有字符都得到正确处理,我们便可以求出该简单算术表达式的值。
四、实验步骤
(描述实验步骤及中间的结果或现象。在实验中做了什么事情,怎么做的,发生的现象和中间结果)
设计一个窗体如下:
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
对各个控件进行命名,并将“计算结果”控件设置为不可用的
在程序中添加一个类CreateInPo,并在类中编写如下代码:
using System;
using ;
using ;
using ;
namespace InversePolandType
{
class CreateInPo
{
public bool b1 = true;
private char Proceed(char op, char c) /*op为栈顶元素,c为当前读入的运算符,比较二者的优先级*/
{
char ch = '>';//默认是大于
if (op == '(' && c == ')' || op == '#' && c == '#')
ch = '=';
else
if (op == '+' || op == '-') /*栈顶元素为‘+’或‘-’的时候*/
switch (c)
{
case '+':
case '-':
case ')':
case '#': ch = '>'; break;
case '*':
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
case '/':
case '(': ch = '<'; break;
}
else
if (op == '*' || op == '/') /*栈顶元素为‘*’或‘/’的时候*/
switch (c)
{
case '+':
case '-':
case '*':
case '/':
case ')':
case '#': ch = '>'; break;
case