upd: update input method

This commit is contained in:
2023-11-06 17:50:16 +08:00
parent 5947221e97
commit 6a7a957299
4 changed files with 252 additions and 18 deletions

View File

@ -1,2 +1,177 @@
#include "Evalvisitor.h"
#include "int2048/int2048.h"
#include "int2048/int2048.h"
std::any EvalVisitor::visitFile_input(Python3Parser::File_inputContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitFuncdef(Python3Parser::FuncdefContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitParameters(Python3Parser::ParametersContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTypedargslist(Python3Parser::TypedargslistContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTfpdef(Python3Parser::TfpdefContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitStmt(Python3Parser::StmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitSimple_stmt(Python3Parser::Simple_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitSmall_stmt(Python3Parser::Small_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitExpr_stmt(Python3Parser::Expr_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitAugassign(Python3Parser::AugassignContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitBreak_stmt(Python3Parser::Break_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitContinue_stmt(Python3Parser::Continue_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitCompound_stmt(Python3Parser::Compound_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitIf_stmt(Python3Parser::If_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitWhile_stmt(Python3Parser::While_stmtContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitSuite(Python3Parser::SuiteContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTest(Python3Parser::TestContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitOr_test(Python3Parser::Or_testContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitAnd_test(Python3Parser::And_testContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitNot_test(Python3Parser::Not_testContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitComparison(Python3Parser::ComparisonContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitComp_op(Python3Parser::Comp_opContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitArith_expr(Python3Parser::Arith_exprContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitAddorsub_op(Python3Parser::Addorsub_opContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTerm(Python3Parser::TermContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitMuldivmod_op(Python3Parser::Muldivmod_opContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitFactor(Python3Parser::FactorContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitAtom_expr(Python3Parser::Atom_exprContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTrailer(Python3Parser::TrailerContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitAtom(Python3Parser::AtomContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitTestlist(Python3Parser::TestlistContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitArglist(Python3Parser::ArglistContext *ctx)
{
return visitChildren(ctx);
}
std::any EvalVisitor::visitArgument(Python3Parser::ArgumentContext *ctx)
{
return visitChildren(ctx);
}

View File

@ -4,18 +4,42 @@
#include "antlr4-runtime.h"
#include <iostream>
#include "int2048/int2048.h"
#include "clipp/clipp.h"
using namespace antlr4;
// TODO: regenerating files in directory named "generated" is dangerous.
// if you really need to regenerate,please ask TA for help.
int main(int argc, const char *argv[]) {
// TODO: please don't modify the code below the construction of ifs if you want to use visitor mode
ANTLRInputStream input(std::cin);
Python3Lexer lexer(&input);
CommonTokenStream tokens(&lexer);
tokens.fill();
Python3Parser parser(&tokens);
tree::ParseTree *tree = parser.file_input();
EvalVisitor visitor;
visitor.visit(tree);
return 0;
int main(int argc, char *argv[])
{
// TODO: please don't modify the code below the construction of ifs if you want to use visitor mode
std::string input_file;
bool need_help = false;
auto cli = (clipp::option("-h", "--help").set(need_help).doc("show help") |
clipp::opt_value("input file", input_file));
if (!clipp::parse(argc, argv, cli))
{
std::cout << clipp::make_man_page(cli, argv[0]);
return 0;
}
if (need_help)
{
std::cout << clipp::make_man_page(cli, argv[0]);
return 0;
}
ANTLRInputStream *input_p;
if (input_file.length() == 0)
input_p = new ANTLRInputStream(std::cin);
else
{
std::ifstream ifs(input_file);
input_p = new ANTLRInputStream(ifs);
}
Python3Lexer lexer(input_p);
CommonTokenStream tokens(&lexer);
tokens.fill();
Python3Parser parser(&tokens);
tree::ParseTree *tree = parser.file_input();
EvalVisitor visitor;
visitor.visit(tree);
delete input_p;
return 0;
}