📄 ast_decl.h
字号:
/* File: ast_decl.h
* ----------------
* In our parse tree, Decl nodes are used to represent and
* manage declarations. There are 4 subclasses of the base class,
* specialized for declarations of variables, functions, classes,
* and interfaces.
*/
#ifndef _H_ast_decl
#define _H_ast_decl
#include "ast.h"
#include "list.h"
class Type;
class NamedType;
class Identifier;
class Stmt;
class Decl : public Node
{
protected:
Identifier *id;
public:
Decl(Identifier *name);
};
class VarDecl : public Decl
{
protected:
Type *type;
public:
VarDecl(Identifier *name, Type *type);
const char *GetPrintNameForNode() { return "VarDecl"; }
void PrintChildren(int indentLevel);
//Type *getType(){ return type;}
};
class ClassDecl : public Decl
{
protected:
List<Decl*> *members;
NamedType *extends;
//List<NamedType*> *implements;
public:
ClassDecl(Identifier *name, NamedType *extends, List<Decl*> *members);
const char *GetPrintNameForNode() { return "ClassDecl"; }
void PrintChildren(int indentLevel);
};
/*
class InterfaceDecl : public Decl
{
protected:
List<Decl*> *members;
public:
InterfaceDecl(Identifier *name, List<Decl*> *members);
const char *GetPrintNameForNode() { return "InterfaceDecl"; }
void PrintChildren(int indentLevel);
};*/
class FnDecl : public Decl
{
protected:
List<VarDecl*> *formals;
Type *returnType;
Stmt *body;
public:
FnDecl(Identifier *name, Type *returnType, List<VarDecl*> *formals);
void SetFunctionBody(Stmt *b);
const char *GetPrintNameForNode() { return "FnDecl"; }
void PrintChildren(int indentLevel);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -