#include<iostream>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
//and or not true false( ) i rop #
int action[18][10]={ { 0 , 0 ,4 ,5 , 6 ,7 , 0 , 8 , 0 , 0},//0
{ 9 , 0 ,0 ,0 , 0 ,0 ,-2 , 0 , 0 ,100},//1
{-2 ,10 ,0 ,0 , 0 ,0 ,-2 , 0 , 0 , -2},//2
{-4 ,-4 ,0 ,0 , 0 ,0 ,-4 , 0 , 0 , -4},//3
{ 0 , 0 ,4 ,5 , 6 ,7 , 0 , 8 , 0 , 0},//4
{-7 ,-7 ,0 ,0 , 0 ,0 ,-7 , 0 , 0 , -7},//5
{-8 ,-8 ,0 ,0 , 0 ,0 ,-8 , 0 , 0 , -8},//6
{ 0 , 0 ,4 ,5 , 6 ,7 , 0 , 8 , 0 , 0},//7
{ 0 , 0 ,0 ,0 , 0 ,0 , 0 , 0 ,13 , 0},//8
{ 0 , 0 ,4 ,5 , 6 ,7 , 0 , 8 , 0 , 0},//9
{ 0 , 0 ,4 ,5 , 6 ,7 , 0 , 8 , 0 , 0},//10
{-5 ,-5 ,0 ,0 , 0 ,0 ,-5 , 0 , 0 , -5},//11
{ 9 , 0 ,0 ,0 , 0 ,0 ,16 , 0 , 0 , 0},//12
{ 0 , 0 ,0 ,0 , 0 ,0 , 0 ,17 , 0 , 0},//13
{-1 ,10 ,0 ,0 , 0 ,0 ,-1 , 0 , 0 , -1},//14
{-3 ,-3 ,0 ,0 , 0 ,0 ,-3 , 0 , 0 , -3},//15
{-6 ,-6 ,0 ,0 , 0 ,0 ,-6 , 0 , 0 , -6},//16
{-9 ,-9 ,0 ,0 , 0 ,0 ,-9 , 0 , 0 , -9}};//17
//B T F
int gotol[18][3]={ {1 ,2 , 3},//0
{0 ,0 , 0},//1
{0 ,0 , 0},//2
{0 ,0 , 0},//3
{0 ,0 ,11},//4
{0 ,0 , 0},//5
{0 ,0 , 0},//6
{12 ,2 , 3},//7
{0 ,0 , 0},//8
{0 ,14 , 3},//9
{0 ,0 ,15},//10
{0 ,0 , 0},//11
{0 ,0 , 0},//12
{0 ,0 , 0},//13
{0 ,0 , 0},//14
{0 ,0 , 0},//15
{0 ,0 , 0},//16
{0 ,0 , 0}};//17
//终结符集合
string endls[10]={"and","or","not","true","false", "(",")", "i","rop","#" };
//非终结符集合
string noends[3]={"B","T","F"};
//产生式集合
string products[10]={"B","B and T", "T","T or F","F","not F","( B )","true", "false","i rop i"};
//栈类
class statestack
{
private:
int *base;//栈底指针
int *top;//栈顶
程序功能:布尔表达式翻译成四元式
最新推荐文章于 2024-05-08 22:28:56 发布