⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ll1_recognizer.h

📁 编译原理LL(1)语法分析 从文法开始,一直做到了符号表的实现
💻 H
字号:
#pragma once
#include "Grammar.h"
#include "Action.h"
#include "SymbTable.h"
using namespace std;

//此为LL1语法分析驱动器,可以通过文法,TOKEN序列和LL1分析表,判定语法是否正确,同时驱动动作.

class LL1_Recognizer
{
public:
	LL1_Recognizer(Grammar *grammar,map< pair<nonterminal,terminal>, int > table,
		list<TOKEN> *tokenlist):g(grammar),LL_Table(table),tlist(tokenlist),act(grammar)//,sym_table_num(0),temp_num(0)
	{
		cout<<"Recognizing..."<<endl;
		lldriver(); 
	}
	~LL1_Recognizer() {};
	void print_table() {act.symbtable.print_table();} //输出符号表
	
protected:
	list<TOKEN> *tlist; //TOKEN序列
	Grammar *g; //文法
	map< pair<nonterminal,terminal>, int > LL_Table; //LL1分析表
	void lldriver();  //LL1语法驱动器
	void error(list<TOKEN>::iterator pos,nonterminal X); //报告出错
	stack<symbol> sym_stack;  //语法分析栈
	//for semantic analyse
	list<TOKEN>::iterator token_pos; //指向当前分析的TOKEN的迭代器
	_Action act; //动作文法
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -