Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бАКАЛАВР_РАБОТА.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.13 Mб
Скачать

Файл checker.H

#ifndef CHECKER_H

#define CHECKER_H

#include "ast/ast.h"

#include "symbolTable/symbolTable.h"

#include "ast/objType.h"

#include <typeinfo>

namespace parser_LL1{

class SymbolTable;

class Checker{

private:

SymbolTable* table;

public:

Checker(SymbolTable* t){

this->table=t;

}

void check(Node* program);

protected:

void checkSetGlobalIndex(SetGlobalIndex* sgi);

void checkEquationIndex(EquationIndex* eq);

void checkEquation(Equation* eq);

void checkSetLocal(SetLocal* sl);

void checkSetLocalIndex(SetLocalIndex* sli);

void checkIf(If* i);

void checkLocalState(LocalState* ls);

////////////////////////////////////////////////////

void checkVer(Ver* v);

void checkExpr(Expr* expr);

void checkBool(Expr* expr,string& count);

void checkExprIndex(Expr* expr, string& count);

void checkIndex(Expr* expr, string& count);

void replaceArg(Expr* expr,const string& arg,Expr* param);

};

}

#endif // CHECKER_H

В.4 Модулькодогенератора ФайлastVisitor.H

#ifndef ATSVISITOR_H

#define ATSVISITOR_H

namespace parser_LL1{

class Program;

class Expr;

class Interval;

class Leaf;

class Der;

class Id;

class ConstantInt;

class ConstantFloat;

class Access;

class Func;

class Macro;

class Ver;

class Arith;

class UnaryMinus;

class PlusExp;

class MinusExp;

class MulExp;

class DivExp;

class Logical;

class UnaryNot;

class Or;

class And;

class Ne;

class Eq;

class Le;

class Ge;

class Less;

class Gr;

class ListExpr;

class Stmt;

class Seq;

class If;

class EquationIndex;

class Equation;

class SetLocal;

class SetLocalIndex;

class SetGlobal;

class SetGlobalIndex;

class LocalState;

class Declar;

class DeclConst;

class DeclMacro;

class DeclArray;

class DeclCount;

class AstVisitor

{

public:

virtual void visit(Program*)=0;

virtual void visit(Expr*)=0;

virtual void visit(Interval*)=0;

virtual void visit(Leaf*)=0;

virtual void visit(Der*)=0;

virtual void visit(Id*)=0;

virtual void visit(ConstantInt*)=0;

virtual void visit(ConstantFloat*)=0;

virtual void visit(Access*)=0;

virtual void visit(Func*)=0;

virtual void visit(Ver*)=0;

virtual void visit(Arith*)=0;

virtual void visit(UnaryMinus*)=0;

virtual void visit(PlusExp*)=0;

virtual void visit(MinusExp*)=0;

virtual void visit(MulExp*)=0;

virtual void visit(DivExp*)=0;

virtual void visit(Logical*)=0;

virtual void visit(UnaryNot*)=0;

virtual void visit(Or*)=0;

virtual void visit(And*)=0;

virtual void visit(Ne*)=0;

virtual void visit(Eq*)=0;

virtual void visit(Le*)=0;

virtual void visit(Ge*)=0;

virtual void visit(Less*)=0;

virtual void visit(Gr*)=0;

virtual void visit(ListExpr*)=0;

virtual void visit(Stmt*)=0;

virtual void visit(Seq*)=0;

virtual void visit(If*)=0;

virtual void visit(EquationIndex*)=0;

virtual void visit(Equation*)=0;

virtual void visit(SetLocal*)=0;

virtual void visit(SetLocalIndex*)=0;

virtual void visit(SetGlobal*)=0;

virtual void visit(SetGlobalIndex*)=0;

virtual void visit(LocalState*)=0;

virtual void visit(Declar*)=0;

virtual void visit(DeclConst*)=0;

virtual void visit(DeclMacro*)=0;

virtual void visit(DeclArray*)=0;

virtual void visit(DeclCount*)=0;

virtual ~AstVisitor(){}

};

}

#endif // ATSVISITOR_H