#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;//栈顶
程序功能:布尔表达式翻译成四元式
最新推荐文章于 2021-07-14 22:54:56 发布
该博客详细介绍了如何使用LR分析法将布尔表达式转换为四元式,包括解析布尔表达式的文法,定义状态栈和符号栈,以及通过输入字符进行移进和规约操作,最终生成中间代码四元式。
摘要由CSDN通过智能技术生成