?? grammernodeclass.h
字號:
#ifndef _GCN_H
#define _GCN_H
#include"Scanner.h"
enum Nodekind
{
ProK,PheadK,TypeK,VarK,ProcDecK,
StmLK,DecK,StmtK,ExpK
};
enum NodeType
{
ArrayK,CharK,IntegerK,RecordK,IdK,
IfK,WhileK,AssignK,ReadK,WriteK,CallK,ReturnK,
OpK,ConstK
};
enum Op
{
LT,EQ,PLUS,MINUS,
TIMES,OVER
};
enum VarKind
{
IdV,ArrayMembV,FieldMembV
};
enum ExpType
{
Void,Integer,Boolean
};
enum paramtype
{
valparamtype,varparamtype
};
union kind
{
NodeType dec,stmt,exp;
};
struct attr;
struct ArrayAttr;
struct ProcAttr;
struct ExpAttr;
struct NameNode
{
string str_name;
NameNode * NN_next;
};
struct ArrayAttr
{
int i_low;
int i_up;
string childType;
};
struct ProcAttr
{
paramtype PT_param;
};
struct ExpAttr
{
Op O_op;
int val;
VarKind VK_varkind;
ExpType ET_type;
};
struct attr
{
ArrayAttr Array;
ProcAttr Proc;
ExpAttr Exp;
};
struct GrammerNode
{
GrammerNode * child0;
GrammerNode * child1;
GrammerNode * child2;
GrammerNode * Sibling;
int i_Lineno;
Nodekind NK_Nodekind;
kind K_kind;
int i_idnum;
NameNode * name;
string str_type_name;
attr at_attr;
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -