action.h
来自「编译原理LL(1)语法分析 从文法开始,一直做到了符号表的实现」· C头文件 代码 · 共 46 行
H
46 行
#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 + =
减小字号Ctrl + -
显示快捷键?