upd: add docs

This commit is contained in:
2023-11-08 19:07:29 +08:00
parent 4ae22f0f8c
commit 39e0240c2c
7 changed files with 31 additions and 3 deletions

18
docs/Design.md Normal file
View File

@ -0,0 +1,18 @@
# python裂解器设计思路——ZYM
## 模块划分
- `libs``generated``resources`目录:`libs`目录存放第三方库其中int2048是我的上个大作业用以提供大整数运算支持json是提供json解析支持clipp是提供命令行参数解析支持。ANTLR框架存放于`generated``resources`目录中。
- `test`目录存放测试相关有一个进程级测试调度核心及相关配置文件、数据点通过ctest_config接入CTest框架使得CTest可以调用进程级测试调度核心
- `include`目录:裂解器直接相关的头文件
- `src`目录:裂解器直接相关的实现文件。`main`负责解析命令行参数,解析代码,并访问根节点,同时处理异常;`utils`负责执行类型转换、数据解析等底层工作,保证`Evalvisitor`的简洁性;`names`负责维护变量和函数的注册和调用。
## 主要重难点
### 控制流
控制流在数值包括None返回值的基础上新增一个控制类型的范围值不添加任何不必要的封装直接存入`std::any`,用控制类型这个类型本身标明身份。
### 函数调用
### 变量的生效范围与作用域
## 关键细节
### 元组
### 左值和右值

1
docs/MyFAQ.md Normal file
View File

@ -0,0 +1 @@
- 代码树的accept函数没有定义因此是不是在写Visitor的“具体Visit函数”时访问子节点时也要直接调用“具体Visit函数”

View File

@ -2,12 +2,14 @@
#ifndef PYTHON_INTERPRETER_EVALVISITOR_H #ifndef PYTHON_INTERPRETER_EVALVISITOR_H
#define PYTHON_INTERPRETER_EVALVISITOR_H #define PYTHON_INTERPRETER_EVALVISITOR_H
#include <any>
#include <exception> #include <exception>
#include <iostream>
#include <stdexcept> #include <stdexcept>
#include "Python3ParserBaseVisitor.h" #include "Python3ParserBaseVisitor.h"
#include "int2048/int2048.h" #include "int2048/int2048.h"
#include "namescope.h" #include "names.h"
#include "utils.h" #include "utils.h"
class EvalVisitor : public Python3ParserBaseVisitor { class EvalVisitor : public Python3ParserBaseVisitor {

View File

@ -1,3 +1,5 @@
[我的设计思路](docs/Design.md)
___
# 🐍Python Interpreter # 🐍Python Interpreter
## 🧾 目录 ## 🧾 目录

View File

@ -1,7 +1,10 @@
#include "Evalvisitor.h" #include "Evalvisitor.h"
#include <any>
#include <iostream>
#include "int2048/int2048.h" #include "int2048/int2048.h"
#include "namescope.h" #include "names.h"
#include "utils.h" #include "utils.h"
std::any EvalVisitor::visitFile_input(Python3Parser::File_inputContext *ctx) { std::any EvalVisitor::visitFile_input(Python3Parser::File_inputContext *ctx) {
@ -26,6 +29,7 @@ std::any EvalVisitor::visitTfpdef(Python3Parser::TfpdefContext *ctx) {
} }
std::any EvalVisitor::visitStmt(Python3Parser::StmtContext *ctx) { std::any EvalVisitor::visitStmt(Python3Parser::StmtContext *ctx) {
std::cerr << "visitStmt\n" << std::endl;
return visitChildren(ctx); return visitChildren(ctx);
} }
@ -133,7 +137,7 @@ std::any EvalVisitor::visitTrailer(Python3Parser::TrailerContext *ctx) {
} }
std::any EvalVisitor::visitAtom(Python3Parser::AtomContext *ctx) { std::any EvalVisitor::visitAtom(Python3Parser::AtomContext *ctx) {
throw FatalError("Not implemented in function visitAtom"); // throw FatalError("Not implemented in function visitAtom");
return visitChildren(ctx); return visitChildren(ctx);
} }

1
src/names.cpp Normal file
View File

@ -0,0 +1 @@
#include "names.h"