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

📄 action.h

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



class _Action
{
public:
	_Action(Grammar *grammar):g(grammar)
	{
		_intc.size = 1;
		_intc.kind = intTy;
		_charc.size = 1;
		_charc.kind = charTy;
	}
	~_Action() {};
	//输入当前TOKEN和动作符号,调用相应动作.
	void call_action(const symbol &act_sym, list<TOKEN>::iterator token_pos); 
	SymbTable symbtable; //符号表

protected:
	stack<semantic_record> sem_stack; //语义栈
	Grammar *g;  //文法类提供动作文法.
	//以下为各种语义
	void _ProgHead();
	void _Id(list<TOKEN>::iterator token_pos);
	void _BaseType(list<TOKEN>::iterator token_pos);
	void _Intc(list<TOKEN>::iterator token_pos);
	void _ArrayType();
	void _RecordType();
	void _TypeDec();
	void _FieldDec();
	void _Param();
	void _VarDec();
	void _ParamVar();
	void _AddLevel();
	void _SubLevel();

	TypeIR _intc;
	TypeIR _charc;

};

⌨️ 快捷键说明

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