upd: set up file structure
This commit is contained in:
6
.clang-format
Normal file
6
.clang-format
Normal file
@ -0,0 +1,6 @@
|
||||
BasedOnStyle: Google
|
||||
DerivePointerAlignment: false
|
||||
PointerAlignment: Right
|
||||
ColumnLimit: 80
|
||||
AllowCommentMovement: true
|
||||
PenaltyBreakBeforeFirstCallParameter: 100
|
@ -18,7 +18,6 @@ add_subdirectory(test)
|
||||
file(GLOB_RECURSE main_src src/*.cpp)
|
||||
|
||||
include_directories(${PROJECT_SOURCE_DIR}/include)
|
||||
link_directories(${PROJECT_SOURCE_DIR}/src)
|
||||
|
||||
add_executable(code ${main_src}) # Add all *.cpp file after src/main.cpp, like src/Evalvisitor.cpp did
|
||||
target_include_directories(code PRIVATE ${PROJECT_SOURCE_DIR}/libs)
|
||||
|
@ -2,18 +2,21 @@
|
||||
#ifndef PYTHON_INTERPRETER_EVALVISITOR_H
|
||||
#define PYTHON_INTERPRETER_EVALVISITOR_H
|
||||
|
||||
#include "Python3ParserBaseVisitor.h"
|
||||
#include "int2048/int2048.h"
|
||||
#include <exception>
|
||||
#include <stdexcept>
|
||||
|
||||
class EvalVisitor : public Python3ParserBaseVisitor
|
||||
{
|
||||
#include "Python3ParserBaseVisitor.h"
|
||||
#include "int2048/int2048.h"
|
||||
#include "namescope.h"
|
||||
#include "utils.h"
|
||||
|
||||
class EvalVisitor : public Python3ParserBaseVisitor {
|
||||
// TODO: override all methods of Python3ParserBaseVisitor
|
||||
std::any visitFile_input(Python3Parser::File_inputContext *ctx) override;
|
||||
std::any visitFuncdef(Python3Parser::FuncdefContext *ctx) override;
|
||||
std::any visitParameters(Python3Parser::ParametersContext *ctx) override;
|
||||
std::any visitTypedargslist(Python3Parser::TypedargslistContext *ctx) override;
|
||||
std::any visitTypedargslist(
|
||||
Python3Parser::TypedargslistContext *ctx) override;
|
||||
std::any visitTfpdef(Python3Parser::TfpdefContext *ctx) override;
|
||||
std::any visitStmt(Python3Parser::StmtContext *ctx) override;
|
||||
std::any visitSimple_stmt(Python3Parser::Simple_stmtContext *ctx) override;
|
||||
@ -22,9 +25,11 @@ class EvalVisitor : public Python3ParserBaseVisitor
|
||||
std::any visitAugassign(Python3Parser::AugassignContext *ctx) override;
|
||||
std::any visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx) override;
|
||||
std::any visitBreak_stmt(Python3Parser::Break_stmtContext *ctx) override;
|
||||
std::any visitContinue_stmt(Python3Parser::Continue_stmtContext *ctx) override;
|
||||
std::any visitContinue_stmt(
|
||||
Python3Parser::Continue_stmtContext *ctx) override;
|
||||
std::any visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) override;
|
||||
std::any visitCompound_stmt(Python3Parser::Compound_stmtContext *ctx) override;
|
||||
std::any visitCompound_stmt(
|
||||
Python3Parser::Compound_stmtContext *ctx) override;
|
||||
std::any visitIf_stmt(Python3Parser::If_stmtContext *ctx) override;
|
||||
std::any visitWhile_stmt(Python3Parser::While_stmtContext *ctx) override;
|
||||
std::any visitSuite(Python3Parser::SuiteContext *ctx) override;
|
||||
@ -46,34 +51,26 @@ class EvalVisitor : public Python3ParserBaseVisitor
|
||||
std::any visitArglist(Python3Parser::ArglistContext *ctx) override;
|
||||
std::any visitArgument(Python3Parser::ArgumentContext *ctx) override;
|
||||
};
|
||||
class InterpretException : public std::exception
|
||||
{
|
||||
public:
|
||||
class InterpretException : public std::exception {
|
||||
public:
|
||||
InterpretException() {}
|
||||
InterpretException(const char *message) : m_message(message) {}
|
||||
|
||||
const char *what() const noexcept override
|
||||
{
|
||||
return m_message;
|
||||
}
|
||||
const char *what() const noexcept override { return m_message; }
|
||||
|
||||
~InterpretException() noexcept override {}
|
||||
|
||||
private:
|
||||
private:
|
||||
const char *m_message;
|
||||
};
|
||||
|
||||
class FatalError : public std::exception
|
||||
{
|
||||
public:
|
||||
class FatalError : public std::exception {
|
||||
public:
|
||||
FatalError(const char *message) : m_message(message) {}
|
||||
|
||||
const char *what() const noexcept override
|
||||
{
|
||||
return m_message;
|
||||
}
|
||||
const char *what() const noexcept override { return m_message; }
|
||||
|
||||
private:
|
||||
private:
|
||||
const char *m_message;
|
||||
};
|
||||
#endif // PYTHON_INTERPRETER_EVALVISITOR_H
|
||||
|
12
include/namescope.h
Normal file
12
include/namescope.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef NAMESCOPE_H
|
||||
#define NAMESCOPE_H
|
||||
|
||||
#include <any>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
class NameScopeClass {
|
||||
;
|
||||
};
|
||||
#endif
|
0
include/utils.h
Normal file
0
include/utils.h
Normal file
@ -1,177 +1,150 @@
|
||||
#include "Evalvisitor.h"
|
||||
|
||||
#include "int2048/int2048.h"
|
||||
#include "namescope.h"
|
||||
#include "utils.h"
|
||||
|
||||
std::any EvalVisitor::visitFile_input(Python3Parser::File_inputContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitFile_input(Python3Parser::File_inputContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitFuncdef(Python3Parser::FuncdefContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitFuncdef(Python3Parser::FuncdefContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitParameters(Python3Parser::ParametersContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitParameters(Python3Parser::ParametersContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTypedargslist(Python3Parser::TypedargslistContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTypedargslist(
|
||||
Python3Parser::TypedargslistContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTfpdef(Python3Parser::TfpdefContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTfpdef(Python3Parser::TfpdefContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitStmt(Python3Parser::StmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitStmt(Python3Parser::StmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitSimple_stmt(Python3Parser::Simple_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitSimple_stmt(Python3Parser::Simple_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitSmall_stmt(Python3Parser::Small_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitSmall_stmt(Python3Parser::Small_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitExpr_stmt(Python3Parser::Expr_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitExpr_stmt(Python3Parser::Expr_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitAugassign(Python3Parser::AugassignContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitAugassign(Python3Parser::AugassignContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitBreak_stmt(Python3Parser::Break_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitBreak_stmt(Python3Parser::Break_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitContinue_stmt(Python3Parser::Continue_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitContinue_stmt(
|
||||
Python3Parser::Continue_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitCompound_stmt(Python3Parser::Compound_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitCompound_stmt(
|
||||
Python3Parser::Compound_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitIf_stmt(Python3Parser::If_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitIf_stmt(Python3Parser::If_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitWhile_stmt(Python3Parser::While_stmtContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitWhile_stmt(Python3Parser::While_stmtContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitSuite(Python3Parser::SuiteContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitSuite(Python3Parser::SuiteContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTest(Python3Parser::TestContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTest(Python3Parser::TestContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitOr_test(Python3Parser::Or_testContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitOr_test(Python3Parser::Or_testContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitAnd_test(Python3Parser::And_testContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitAnd_test(Python3Parser::And_testContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitNot_test(Python3Parser::Not_testContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitNot_test(Python3Parser::Not_testContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitComparison(Python3Parser::ComparisonContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitComparison(Python3Parser::ComparisonContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitComp_op(Python3Parser::Comp_opContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitComp_op(Python3Parser::Comp_opContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitArith_expr(Python3Parser::Arith_exprContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitArith_expr(Python3Parser::Arith_exprContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitAddorsub_op(Python3Parser::Addorsub_opContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitAddorsub_op(Python3Parser::Addorsub_opContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTerm(Python3Parser::TermContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTerm(Python3Parser::TermContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitMuldivmod_op(Python3Parser::Muldivmod_opContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitMuldivmod_op(
|
||||
Python3Parser::Muldivmod_opContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitFactor(Python3Parser::FactorContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitFactor(Python3Parser::FactorContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitAtom_expr(Python3Parser::Atom_exprContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitAtom_expr(Python3Parser::Atom_exprContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTrailer(Python3Parser::TrailerContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTrailer(Python3Parser::TrailerContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitAtom(Python3Parser::AtomContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitAtom(Python3Parser::AtomContext *ctx) {
|
||||
throw FatalError("Not implemented in function visitAtom");
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitTestlist(Python3Parser::TestlistContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitTestlist(Python3Parser::TestlistContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitArglist(Python3Parser::ArglistContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitArglist(Python3Parser::ArglistContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitArgument(Python3Parser::ArgumentContext *ctx)
|
||||
{
|
||||
std::any EvalVisitor::visitArgument(Python3Parser::ArgumentContext *ctx) {
|
||||
return visitChildren(ctx);
|
||||
}
|
0
src/utils.cpp
Normal file
0
src/utils.cpp
Normal file
Reference in New Issue
Block a user