init
This commit is contained in:
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# IDE files
|
||||||
|
.idea/
|
||||||
|
cmake-build-debug/
|
||||||
|
build/
|
||||||
|
gen/
|
||||||
|
antlr-playground/.antlr
|
||||||
|
resources/.antlr
|
||||||
|
# Testcases
|
||||||
|
testcases/hidden-testcases
|
23
CMakeLists.txt
Normal file
23
CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
### YOU CAN'T MODIFY THE CODE BELOW
|
||||||
|
cmake_minimum_required(VERSION 3.15.2)
|
||||||
|
project(python_interpreter)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")
|
||||||
|
|
||||||
|
include_directories(/usr/include/antlr4-runtime/)
|
||||||
|
include_directories(
|
||||||
|
${PROJECT_SOURCE_DIR}/generated/
|
||||||
|
${PROJECT_SOURCE_DIR}/src/
|
||||||
|
)
|
||||||
|
|
||||||
|
add_subdirectory(${PROJECT_SOURCE_DIR}/generated)
|
||||||
|
### YOU CAN"T MODIFY THE CODE ABOVE
|
||||||
|
|
||||||
|
file(GLOB_RECURSE main_src src/*.cpp)
|
||||||
|
|
||||||
|
add_executable(code ${main_src}) # Add all *.cpp file after src/main.cpp, like src/Evalvisitor.cpp did
|
||||||
|
|
||||||
|
### YOU CAN'T MODIFY THE CODE BELOW
|
||||||
|
target_link_libraries(code PyAntlr)
|
||||||
|
target_link_libraries(code antlr4-runtime)
|
||||||
|
### YOU CAN"T MODIFY THE CODE ABOVE
|
116
Prework/README.md
Normal file
116
Prework/README.md
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# 四则运算计算器
|
||||||
|
|
||||||
|
## 题目描述
|
||||||
|
|
||||||
|
现在,你需要实现全部的四则运算的功能,即加减乘除。简单起见,我们已经将复杂的输入的表达式解析成了树形结构,其定义如下:
|
||||||
|
|
||||||
|
- 每个节点 $node$ 可以是一个数字,或者是一个运算符。其表示一个值,记作 $val(node)$ 。
|
||||||
|
- 如果一个节点是数字节点,数字的值为 $n$ ,那么 $val(node) = n$ 。
|
||||||
|
- 如果一个节点是运算符节点,运算符为 $op$ ,那么其有两个子节点 $l$ 和 $r$ ,且 $val(node) = val(l) ~\ op ~\ val(r)$ 。
|
||||||
|
|
||||||
|
## std::any
|
||||||
|
|
||||||
|
需要注意的是,在我们的代码中出现了 `std::any` 。其表现类似 python 中的变量,即可以保存任何类型的值。通过 `std::any_cast` 函数 ,我们可以判断 `any` 是否判断了某一类型的值,并且获取其值。具体如何使用,请参考 [cpprefence](https://en.cppreference.com/w/cpp/utility/any) 。
|
||||||
|
|
||||||
|
最基本的用法大致如下:
|
||||||
|
|
||||||
|
```C++
|
||||||
|
std::any x = (int)1;
|
||||||
|
x = 2;
|
||||||
|
|
||||||
|
// 如果存储的是 int 类型,返回指向该值的指针
|
||||||
|
// 否则返回空指针 nullptr
|
||||||
|
int *ptr = std::any_cast <int> (&x);
|
||||||
|
|
||||||
|
// 如果存储的是 int 类型,返回该值
|
||||||
|
// 否则抛出异常
|
||||||
|
int val = std::any_cast <int> (x);
|
||||||
|
|
||||||
|
// 如果存储的是 int 类型,返回该值的引用
|
||||||
|
// 否则抛出异常
|
||||||
|
int &ref = std::any_cast <int&> (x);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
在本题中,我们保证同一颗表达式树中,数字节点的值都是 `long long` 类型或者 `double` 类型。当然,你需要保证输出 `std::any` 的类型与之相同。
|
||||||
|
|
||||||
|
## 题目模板
|
||||||
|
|
||||||
|
节点的具体定义在 [visitor.h](visitor.h) 。你不可以修改这些代码。
|
||||||
|
|
||||||
|
```C++
|
||||||
|
// 你不可以修改这份代码
|
||||||
|
#pragma once
|
||||||
|
#include <any>
|
||||||
|
|
||||||
|
struct visitor;
|
||||||
|
|
||||||
|
struct node {
|
||||||
|
virtual std::any accept(visitor *) = 0;
|
||||||
|
virtual ~node() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct num_node;
|
||||||
|
struct add_node;
|
||||||
|
struct sub_node;
|
||||||
|
struct mul_node;
|
||||||
|
struct div_node;
|
||||||
|
|
||||||
|
struct visitor {
|
||||||
|
virtual std::any visit(node *ctx) { return ctx->accept(this); }
|
||||||
|
virtual std::any visit_num(num_node *) = 0;
|
||||||
|
virtual std::any visit_add(add_node *) = 0;
|
||||||
|
virtual std::any visit_sub(sub_node *) = 0;
|
||||||
|
virtual std::any visit_mul(mul_node *) = 0;
|
||||||
|
virtual std::any visit_div(div_node *) = 0;
|
||||||
|
virtual ~visitor() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct num_node final : node {
|
||||||
|
std::any number;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_num(this); }
|
||||||
|
~num_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct add_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_add(this); }
|
||||||
|
~add_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sub_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_sub(this); }
|
||||||
|
~sub_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mul_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_mul(this); }
|
||||||
|
~mul_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct div_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_div(this); }
|
||||||
|
~div_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
现在,你需要按照要求实现一个 `calculator` 类。对于一个 `calculator` 对象,通过虚函数重写基类 `visitor` 的接口。我们希望每次调用其 `visit` 方法,可以返回表达式的结果,且不修改原本的表达式。
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include "visitor.h"
|
||||||
|
|
||||||
|
struct calculator : visitor {
|
||||||
|
/// TODO: 完成所有需求,这应该不难
|
||||||
|
~calculator() override = default;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
你需要提交这份[代码](calc.h)
|
9
Prework/calc.h
Normal file
9
Prework/calc.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// 你需要提交这份代码
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "visitor.h"
|
||||||
|
|
||||||
|
struct calculator : visitor {
|
||||||
|
/// TODO: 完成所有需求
|
||||||
|
~calculator() override = default;
|
||||||
|
};
|
34
Prework/test.cpp
Normal file
34
Prework/test.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// 这是一份测试代码,仅供参考
|
||||||
|
// #include "calc_std.h"
|
||||||
|
#include "calc.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
|
node *generate(int);
|
||||||
|
|
||||||
|
// Expected: 17711
|
||||||
|
signed main() {
|
||||||
|
node *root = generate(20);
|
||||||
|
visitor *calc = new calculator;
|
||||||
|
auto result = calc->visit(root);
|
||||||
|
if (auto value = std::any_cast <double> (&result)) {
|
||||||
|
std::cout << "Result: " << *value << '\n';
|
||||||
|
} else {
|
||||||
|
std::cout << "Wrong Type" << '\n';
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 生成器,小孩子不懂写着玩的
|
||||||
|
node *generate(int depth) {
|
||||||
|
if (depth <= 0) {
|
||||||
|
num_node *ret = new num_node;
|
||||||
|
ret->number = (double)1.0;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
add_node *root = new add_node;
|
||||||
|
root->lnode = generate(depth - 1);
|
||||||
|
root->rnode = generate(depth - 2);
|
||||||
|
return root;
|
||||||
|
}
|
60
Prework/visitor.h
Normal file
60
Prework/visitor.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// 你不可以修改这份代码
|
||||||
|
#pragma once
|
||||||
|
#include <any>
|
||||||
|
|
||||||
|
struct visitor;
|
||||||
|
|
||||||
|
struct node {
|
||||||
|
virtual std::any accept(visitor *) = 0;
|
||||||
|
virtual ~node() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct num_node;
|
||||||
|
struct add_node;
|
||||||
|
struct sub_node;
|
||||||
|
struct mul_node;
|
||||||
|
struct div_node;
|
||||||
|
|
||||||
|
struct visitor {
|
||||||
|
virtual std::any visit(node *ctx) { return ctx->accept(this); }
|
||||||
|
virtual std::any visit_num(num_node *) = 0;
|
||||||
|
virtual std::any visit_add(add_node *) = 0;
|
||||||
|
virtual std::any visit_sub(sub_node *) = 0;
|
||||||
|
virtual std::any visit_mul(mul_node *) = 0;
|
||||||
|
virtual std::any visit_div(div_node *) = 0;
|
||||||
|
virtual ~visitor() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct num_node final : node {
|
||||||
|
std::any number;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_num(this); }
|
||||||
|
~num_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct add_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_add(this); }
|
||||||
|
~add_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sub_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_sub(this); }
|
||||||
|
~sub_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mul_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_mul(this); }
|
||||||
|
~mul_node() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct div_node final : node {
|
||||||
|
node *lnode;
|
||||||
|
node *rnode;
|
||||||
|
std::any accept(visitor *ctx) override { return ctx->visit_div(this); }
|
||||||
|
~div_node() override = default;
|
||||||
|
};
|
86
docs/antlr_guide.md
Normal file
86
docs/antlr_guide.md
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
# ANTLR in Python Interpreter
|
||||||
|
|
||||||
|
## 配置教程
|
||||||
|
|
||||||
|
### 配置 Antlr C++ 运行环境
|
||||||
|
|
||||||
|
Python 解释器采用 Antlr 作为前端语法分析器,其中核心代码编译时间较长,因此我们提前编译好了 Antlr 的运行环境,这样你的程序在编译时就不需要再编译 Antlr 的运行环境了。
|
||||||
|
|
||||||
|
为了在你自己的电脑上也使用 Antlr 运行环境,你需要将 Antlr 编译好的运行环境安装到你的电脑上。
|
||||||
|
|
||||||
|
将 `antlr-runtime_4.13.1_amd64.deb` 文件下载到 WSL 中,打开文件所在目录,执行以下命令安装:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo apt install ./antlr-runtime_4.13.1_amd64.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
在这个包中,含有 Antlr 4.13.1 的动态链接库、静态链接库以及头文件,如果不装这个包,
|
||||||
|
将导致你的程序在编译时找不到 Antlr 的头文件和动态链接库,从而编译失败。
|
||||||
|
|
||||||
|
使用 Archlinux 的同学可以直接使用以下命令安装运行环境:
|
||||||
|
```shell
|
||||||
|
pacman -S antlr4-runtime
|
||||||
|
```
|
||||||
|
|
||||||
|
如有在其他环境下编程的同学(比如 Windows、Mac 和除 Debian,Arch 之外的 Linux 系统),请联系助教。
|
||||||
|
|
||||||
|
### 生成语法树
|
||||||
|
|
||||||
|
#### 使用 VScode 插件(推荐)
|
||||||
|
|
||||||
|
首先在 Windows 环境下安装插件(注意,不要在 WSL 环境下安装):
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
安装后,点击卸载旁的箭头,安装 2.3.1 版本。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
安装完后重新加载。打开 `Python3.g4` 文件,右边会出现对应插件的图标,点击,等待其中的 PARSER RULES 等部分加载完毕。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
接下来配置运行文件。点击左侧的运行和调试,创建 `launch.json` 文件,并写入
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
"version": "2.3.1",
|
||||||
|
"configurations": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Debug ANTLR4 grammar",
|
||||||
|
"type": "antlr-debug",
|
||||||
|
"request": "launch",
|
||||||
|
"input": "./a.txt", // 输入文件(即你要运行的 Python 代码文件)
|
||||||
|
"grammar": "./resources/Python3Parser.g4", // 语法文件
|
||||||
|
"startRule": "file_input", // 语法入口规则,我们的公式语法入口规则是 file_input
|
||||||
|
"printParseTree": true, // 是否 打印/可视化 parse tree
|
||||||
|
"visualParseTree": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
最后打开要运行的文件,在左侧的运行和调试中,点击运行即可生成,如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### 使用 Clion 插件
|
||||||
|
|
||||||
|
由于本次 `.g4` 文件的特性,目前 ANTLR 插件只能支持不带 `INDENT` 和 `DEDENT` 规则的解释。
|
||||||
|
|
||||||
|
首先在插件市场中找到插件:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
安装后,右键 `.g4` 中的 `return_stmt` 或任何不包含 `INDENT` 和 `DEDENT` 的规则,点击 `test rule`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
之后在屏幕下方的 `antlr-preview` 中,左侧是待测试的代码,右侧是依据代码生成的语法树结构图。
|
||||||
|
|
||||||
|
## ANTLR 是什么
|
||||||
|
|
||||||
|
ANTLR(全名:ANother Tool for Language Recognition)是基于 LL(\*)算法实现的语法解析器生成器(parser generator),用 Java 语言编写,使用自上而下(top-down)的递归下降 LL 剖析器方法。
|
||||||
|
|
||||||
|
ANTLR 可以将输入的代码转化成与之对应的**树形结构**,即语法树,以便后续程序操作。按照上面的配置操作,即可得到一份 `Python` 代码对应的语法树。
|
239
docs/grammar.md
Normal file
239
docs/grammar.md
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
## Specific Python
|
||||||
|
|
||||||
|
### I. 程序结构
|
||||||
|
|
||||||
|
按照控制流逐行执行。
|
||||||
|
|
||||||
|
### II. 语法规则
|
||||||
|
|
||||||
|
#### 1. 字符集合
|
||||||
|
|
||||||
|
ASCII 编码,区分大小写,中文字符是**未定义**的,合法字符集如下:
|
||||||
|
|
||||||
|
- **标识符**(包括变量标识符、函数标识符):26 个小写英语字母,26 个大写英语字母,数码 `0` 到 `9`,下划线 `_`
|
||||||
|
- **标准运算符**:加号 `+`,减号 `-`,乘号 `*`,浮点除 `/`,整除`//`,取模 `%`
|
||||||
|
- **关系运算符**:大于 `>`,小于 `<`,大于等于 `>=`,小于等于 `<=`,不等于 `!=`,等于 `==`
|
||||||
|
- **增量运算符**:加法 `+=`,减法 `-=`,乘法 `*=`,浮点除 `/=`,整除 `//=`,取模`%=`
|
||||||
|
- **赋值运算符**:赋值 `=`
|
||||||
|
- **下标运算符**:取下标对象 `[]`
|
||||||
|
- **优先级运算符**:括号 `()`
|
||||||
|
- **分隔符**:逗号 `,`
|
||||||
|
- **特殊符号**:空格 ` `,换行符 `\n`,制表符 `\t`,注释标识符 `#`,字符串标识符 `"` 或 `'`。
|
||||||
|
|
||||||
|
#### 2. 关键字
|
||||||
|
|
||||||
|
```python
|
||||||
|
None
|
||||||
|
True
|
||||||
|
False
|
||||||
|
def
|
||||||
|
return
|
||||||
|
break
|
||||||
|
continue
|
||||||
|
if
|
||||||
|
elif
|
||||||
|
else
|
||||||
|
while
|
||||||
|
or
|
||||||
|
and
|
||||||
|
not
|
||||||
|
```
|
||||||
|
|
||||||
|
关键字不可作为变量名或函数名。
|
||||||
|
|
||||||
|
#### 3. 空白字符
|
||||||
|
|
||||||
|
**空格**、**制表符**在源文件中可以区分词素 (Token),同时在一行的开头可以表示缩进。
|
||||||
|
|
||||||
|
**换行符**表示新的语句的开始。
|
||||||
|
|
||||||
|
缩进在 Python 用于识别代码块,相关问题将在 Parser 中使用 Antlr4 解决,无需考虑相关的实现。
|
||||||
|
|
||||||
|
#### 4. 注释
|
||||||
|
|
||||||
|
从 `#` 开始到本行结束的内容都会被作为注释。
|
||||||
|
|
||||||
|
#### 5. 标识符
|
||||||
|
|
||||||
|
标识符的第一个字符必须是英文字母,第二个字符开始可以是英文字母、数字或者下划线。
|
||||||
|
|
||||||
|
标识符区分大小写。长度超过 $64$ 个字符的标识符是**未定义**的。
|
||||||
|
|
||||||
|
#### 6. 常量
|
||||||
|
|
||||||
|
- 逻辑常量:`True` 为真,`False` 为假
|
||||||
|
|
||||||
|
- 整数常量:
|
||||||
|
|
||||||
|
- 整数常量以十进制表示,非十进制的表示为**未定义**行为
|
||||||
|
- 整数常量不设负数,负数可以由正数取负号得到
|
||||||
|
|
||||||
|
- Python 中,整数的范围是没有限制的,此处同理,这意味着你必须实现高精度整数
|
||||||
|
|
||||||
|
- 首位为 $0$ 的整数常量是**未定义**的
|
||||||
|
|
||||||
|
- 浮点数常量:
|
||||||
|
|
||||||
|
- 浮点数常量以十进制表示
|
||||||
|
- 浮点数常量不设负数,负数可以由正数取负号得到
|
||||||
|
- 拥有前导 $0$ 的浮点数为**未定义**的,如`0001.1`
|
||||||
|
- 含有 e 的浮点数为**未定义**的,如 `1e5`
|
||||||
|
- 以 . 开头的浮点数为**未定义**的,如 `.123`
|
||||||
|
|
||||||
|
- 字符串常量
|
||||||
|
- 字符串常量是由双引号 `"` 或单引号 `'` 括起来的字符串
|
||||||
|
- 可以由两个字符串拼接而形成新的字符串常量。如 `"123""456"` 相当于 `"123456"`
|
||||||
|
- 字符串中的所有字符必须是可示字符 (printable character) 或空格中的一种
|
||||||
|
- 空值常量:`None` 用来表示变量没有指向任何值
|
||||||
|
|
||||||
|
### 7. 数据类型
|
||||||
|
|
||||||
|
- `bool`:只有 `True` 和 `False`
|
||||||
|
|
||||||
|
- `int`:高精度整数
|
||||||
|
|
||||||
|
- `float`: 与 C++ 中的 `double` 一致
|
||||||
|
|
||||||
|
- `str`:字符串,**不可修改!**
|
||||||
|
|
||||||
|
- 元组: 具体表现请参考 python (待完善)
|
||||||
|
|
||||||
|
### 8. 表达式
|
||||||
|
|
||||||
|
#### 8.1. 基础表达式
|
||||||
|
|
||||||
|
基础表达式包括单独出现的常量、变量、函数调用和数组访问。
|
||||||
|
|
||||||
|
#### 8.2. 算术表达式
|
||||||
|
|
||||||
|
合法的算术运算符包括:`+`, `-`, `*`, `/`, `//`, `%`,具体行为可以参照 C++,特殊行为有:
|
||||||
|
|
||||||
|
- 字符串运算符
|
||||||
|
- `str + str` 表示字符串的拼接
|
||||||
|
- `str * int` 表示字符串的重复
|
||||||
|
- `str <= str` 表示字符串的比较,比较规则同 C++ `std::striing`,`>=`, `==`等同理
|
||||||
|
- 除法
|
||||||
|
- `/` 表示浮点除,即计算结果为浮点数
|
||||||
|
- `//` 表示整除,即计算结果为整数。注意无论正负皆**向下取整**,例如 `-5 // 3 = -2`
|
||||||
|
- `%` 表示模运算,无论模数的正负,皆定义为:`a % b = a - (a // b) * b`
|
||||||
|
- 连续比较
|
||||||
|
- 存在 `1<2>3` 这样连续的关系运算符,处理方法是将其拆为相邻的比较并用 `and` 连接但**每个值最多只计算一次**
|
||||||
|
- 如 `a()<b()<c()`,等价于先翻译成 `a()<b() and b()<c()` 再进行计算, `a(),b(),c()` 最多只调用一次(因为短路运算符)
|
||||||
|
- 逻辑运算符
|
||||||
|
- `and` 等价于 C++ 中的 `&&`,`or` 等价于 C++ 中的 `||`, `not` 等价于 C++ 中的 `!`
|
||||||
|
- `and` 和 `or` 为**短路**运算符
|
||||||
|
- **隐式转化**
|
||||||
|
- 运算时如果两个运算数类型不一致,需转化成相同类型之后再进行运算
|
||||||
|
- 具体转化规则参考 C++
|
||||||
|
|
||||||
|
不包含在特殊行为和 C++ 标准中的行为均为**未定义**行为。
|
||||||
|
|
||||||
|
#### 8.3. 赋值表达式
|
||||||
|
|
||||||
|
- 语法与具体行为均可以参照 C++,并无特殊差异
|
||||||
|
- 给一个变量赋值的意义是将这个变量指向右值,右值不管类型
|
||||||
|
- **与标准 Python 不同,全局变量的生效范围是全部范围**(不用 global 关键字即可访问)
|
||||||
|
- 局部变量的生效范围是在当前语句块(被缩进和取消缩进包起来的部分),具体局部变量和全局变量划分规则和 C++ 一样
|
||||||
|
- **只有函数的定义会产生新的作用域**,作用域的产生请参考 Python
|
||||||
|
- 如 `a=1,a=”123”,a=1.1` 这三条语句依次执行,再输出 `a`,结果是 `1.1`,允许变量遮蔽
|
||||||
|
- 可以给多变量赋值,如 `a,b=1,2` 意思是 `a=1,b=2` 依次执行,此处或与标准 Python **不同**
|
||||||
|
- 增量赋值即为普通算术运算的简化表达,具体行为参考 C++
|
||||||
|
|
||||||
|
#### 8.4. 运算符优先级
|
||||||
|
|
||||||
|
从低到高依次为(其中处在相同行的运算符优先级相同)
|
||||||
|
|
||||||
|
```python
|
||||||
|
=
|
||||||
|
or
|
||||||
|
and
|
||||||
|
not
|
||||||
|
< > <= >= == !=
|
||||||
|
+ -
|
||||||
|
* / // %
|
||||||
|
()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. 语句
|
||||||
|
|
||||||
|
#### 9.1. 变量定义/赋值语句
|
||||||
|
|
||||||
|
- 单变量赋值:`var = value`
|
||||||
|
- 连续赋值:`var_1 = var_2 = ... = value`
|
||||||
|
|
||||||
|
参考[赋值表达式](####8.3. 赋值表达式)。
|
||||||
|
|
||||||
|
#### 9.2. 表达式语句
|
||||||
|
|
||||||
|
参考[表达式](###8. 表达式)
|
||||||
|
|
||||||
|
#### 9.3. 条件语句
|
||||||
|
|
||||||
|
```python
|
||||||
|
if expression_1:
|
||||||
|
# code block
|
||||||
|
elif expression_2:
|
||||||
|
# code block
|
||||||
|
else expression_3:
|
||||||
|
# code block
|
||||||
|
```
|
||||||
|
|
||||||
|
`elif` 相当于 `else if`,`else` 可以没有。
|
||||||
|
|
||||||
|
#### 9.4. 循环语句
|
||||||
|
|
||||||
|
```python
|
||||||
|
while expression:
|
||||||
|
# code block
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 9.5. 跳转语句
|
||||||
|
|
||||||
|
- 包括 `return`,`break`,和 `continue`
|
||||||
|
- 具体行为参考 C++
|
||||||
|
|
||||||
|
### 10. 函数
|
||||||
|
|
||||||
|
#### 10.1. 函数定义
|
||||||
|
|
||||||
|
```python
|
||||||
|
def func(parameters):
|
||||||
|
# code block
|
||||||
|
```
|
||||||
|
|
||||||
|
- 参数列表如 `a, b, c`,变量名之间用逗号分隔,可以为空
|
||||||
|
|
||||||
|
- 有些变量可以有默认值,但是都必须出现在无默认值的变量后面
|
||||||
|
- 函数可以有返回值,也可以没有返回值,无需显示声明。返回值可以为多变量,如 `return a, b`
|
||||||
|
|
||||||
|
#### 10.2. 函数调用
|
||||||
|
|
||||||
|
```python
|
||||||
|
func(parameters)
|
||||||
|
```
|
||||||
|
|
||||||
|
- 函数调用必须出现在该函数定义后。
|
||||||
|
|
||||||
|
- 参数有两种形式:keyword 和 positional
|
||||||
|
|
||||||
|
- Keyword argument 比如 `foo(a=1,b=2)` 表示传入参数 `a` 的值为 `1`,`b` 的值 `2`
|
||||||
|
|
||||||
|
- Positional argument 是指 `foo(1,2)` 这样按照出现顺序指代参数
|
||||||
|
|
||||||
|
- 若一个参数列表中同时有两种参数形式,那么 positional argument 必须出现在 keyword argument 之前。如 `foo(1,b=2)`
|
||||||
|
|
||||||
|
- 数据保证递归层数不超过 $2000$ 层
|
||||||
|
|
||||||
|
### 11. 内建函数
|
||||||
|
|
||||||
|
- `print`:输出,可以有任意个参数,逐个输出,中间用空格分隔。输出后换行。输出 `float` 保留 $6$ 位小数。输出字符串不要输出前后面的引号。如 `print("123",1.0)` 请输出 `123 1.000000`。
|
||||||
|
|
||||||
|
- `int`:将 `float` 或 `bool` 或 `str` 转成 `int`。
|
||||||
|
|
||||||
|
- `float`: 将 `int` 或 `bool` 或 `str` 转成 `float`。
|
||||||
|
|
||||||
|
- `str`: 将 `int` 或 `float` 或 `bool` 转成 `str`。
|
||||||
|
|
||||||
|
- `bool`: 将 `int` 或 `float` 或 `str` 转成 `bool`。对于 `str`,如果是 `""` 则为 `False`,否则为 `True`。
|
||||||
|
|
||||||
|
- 转型类函数都只有一个参数。
|
2
docs/implementation_details.md
Normal file
2
docs/implementation_details.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# 实现细节
|
||||||
|
|
BIN
docs/plugin-market.png
Normal file
BIN
docs/plugin-market.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 679 KiB |
BIN
docs/right-click.png
Normal file
BIN
docs/right-click.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 191 KiB |
14
docs/suggestions.md
Normal file
14
docs/suggestions.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
### 一些小建议
|
||||||
|
|
||||||
|
0. 有搞不明白的问题找助教啦~
|
||||||
|
|
||||||
|
1. git仓库中放置测试点可能使你的仓库克隆时间增长,导致评测变慢。
|
||||||
|
推荐将本仓库下载到本地后,只在你的仓库中放置必要的文件。
|
||||||
|
|
||||||
|
2. 建议使用多文件编程。将整个解释器分成多个模块,分别写在不同的文件中。
|
||||||
|
|
||||||
|
3. 清楚调用的函数的复杂度。
|
||||||
|
|
||||||
|
4. 你可以先 `using int2048 = long long;` 来方便前期编写。
|
||||||
|
|
||||||
|
TO_BE_CONTINUED
|
BIN
docs/vscode-antlr-result.png
Normal file
BIN
docs/vscode-antlr-result.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
BIN
docs/vscode-antlr.png
Normal file
BIN
docs/vscode-antlr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
docs/vscode-install.png
Normal file
BIN
docs/vscode-install.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
BIN
docs/vscode-plugin.png
Normal file
BIN
docs/vscode-plugin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 KiB |
182
docs/workflow_details.md
Normal file
182
docs/workflow_details.md
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
# 解释器作业的完成流程
|
||||||
|
|
||||||
|
## Step 1. 配置环境
|
||||||
|
|
||||||
|
见文档 [antlr_guide.md](antlr_guide.md)。
|
||||||
|
|
||||||
|
## Step 2. 阅读 "./resources/Python3Parser.g4"
|
||||||
|
|
||||||
|
**阅读 `.g4` 文件需要一定的正则表达式基础。**
|
||||||
|
如果你不会正则表达式,可以参考 [正则表达式 - 维基百科](https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F)。
|
||||||
|
|
||||||
|
我们假设有这样的语法规则(并不是我们这次作业的一部分):
|
||||||
|
|
||||||
|
```
|
||||||
|
plus: NUMBER '+' NUMBER;
|
||||||
|
NUMBER:[0-9]+;
|
||||||
|
ADD:'+';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3. 阅读 "./generated/Python3Parser.h"
|
||||||
|
|
||||||
|
你可以看到以下代码(对应着上面的语法规则):
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//...............
|
||||||
|
class PlusContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
PlusContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> NUMBER();
|
||||||
|
antlr4::tree::TerminalNode* NUMBER(size_t i);
|
||||||
|
antlr4::tree::TerminalNode* ADD();
|
||||||
|
|
||||||
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
||||||
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
}
|
||||||
|
//...............
|
||||||
|
```
|
||||||
|
|
||||||
|
因为在上述的 `plus` 语法中,`NUMBER` 一定要出现至少一次,所以 `PlusContext` 有以下两个函数:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> NUMBER();
|
||||||
|
antlr4::tree::TerminalNode* NUMBER(size_t i);
|
||||||
|
```
|
||||||
|
|
||||||
|
第一个函数返回一个 `vector`,包含了指向所有 `NUMBER` 的指针,第二个函数返回指向第 i 个 `NUMBER` 的指针,从 0 开始。
|
||||||
|
|
||||||
|
因为 `ADD` 只在 `plus` 中出现了一次,所以它只有以下函数,返回指向唯一的 `ADD` 的指针:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
antlr4::tree::TerminalNode* ADD()
|
||||||
|
```
|
||||||
|
|
||||||
|
对于一个 `temrinal node`,有以下方法:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//...............
|
||||||
|
std::string toString()
|
||||||
|
Token* TerminalNodeImpl::getSymbol()
|
||||||
|
/*
|
||||||
|
* for example, consider:
|
||||||
|
* antlr4::tree::TerminalNode *it;
|
||||||
|
* it->toString() returns the string, for example, "123456" or "a"
|
||||||
|
* (so you need to converse (std::string)"123456" to (int)123456)
|
||||||
|
* it->getSymbol()->getTokenIndex() returns where this word is in the whole input.
|
||||||
|
*/
|
||||||
|
//...............
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 4. 完成 "./src/Evalvisitor.h"
|
||||||
|
|
||||||
|
在这一步中,所要做的就是补全相关代码:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//...............
|
||||||
|
std::any visitPlus(Python3Parser::PlusContext *ctx)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* TODO
|
||||||
|
* the pseudo-code is:
|
||||||
|
* return visit(ctx->NUMBER(0))+visit(ctx->NUMBER(1));
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
//...............
|
||||||
|
```
|
||||||
|
|
||||||
|
当写:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
visit(ctx->NUMBER(0))
|
||||||
|
```
|
||||||
|
|
||||||
|
等价于写:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
visitAtom(ctx->NUMBER(0))
|
||||||
|
```
|
||||||
|
|
||||||
|
所以我们只需要用 `visit` 函数来访问各种结点,而不是用 `visitBalabala`,想想为什么?
|
||||||
|
|
||||||
|
## Step 5. 编译程序
|
||||||
|
|
||||||
|
输入以下代码即可:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cmake -B build
|
||||||
|
cmake --build build
|
||||||
|
```
|
||||||
|
|
||||||
|
如果你不会使用 `cmake`,你可以借助于 `Clion` 来实现,如果你不知道这步如何操作,请询问助教。
|
||||||
|
|
||||||
|
## 神奇的 std::any
|
||||||
|
|
||||||
|
关于这个类,你只需要会一个方法:`std::any_cast`。
|
||||||
|
|
||||||
|
譬如说,如果有以下的语法规则:
|
||||||
|
|
||||||
|
```
|
||||||
|
plus: atom '+' atom;
|
||||||
|
atom: NUMBER | STRING+;
|
||||||
|
NUMBER:[0-9]+;
|
||||||
|
STRING:[A-Z]+;
|
||||||
|
ADD:'+';
|
||||||
|
```
|
||||||
|
|
||||||
|
在 Parser.h 中的 `Context` 长这样:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//...............
|
||||||
|
class PlusContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
PlusContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<AtomContext*> atom();
|
||||||
|
AtomContext* atom(size_t i);
|
||||||
|
antlr4::tree::TerminalNode* ADD()
|
||||||
|
|
||||||
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
||||||
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
}
|
||||||
|
//notice that the atom is AtomContext* type rather than a TerminalNode* type.
|
||||||
|
//an easy way to tell the difference is: capital letter-TerminalNode; xxxContext otherwise
|
||||||
|
//...............
|
||||||
|
```
|
||||||
|
|
||||||
|
那么相应的代码就长这样:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//...............
|
||||||
|
std::any visitPlus(Python3Parser::PlusContext *ctx)
|
||||||
|
{
|
||||||
|
auto ret1 = visit(ctx->NUMBER());
|
||||||
|
auto ret2 = visit(ctx->NUMBER());
|
||||||
|
if (auto v1int = std::any_cast<int*>(ret1), v2int = std::any_cast<int*>(ret2);
|
||||||
|
v1int && v2int)
|
||||||
|
return *v1int + *v2int;
|
||||||
|
else if (auto v1str = std::any_cast<string*>(ret1), v2str = std::any_cast<string*>(ret2);
|
||||||
|
v1str && v2str)
|
||||||
|
return *v1str + *v2str;
|
||||||
|
else
|
||||||
|
throw(std::string("unsupported operand type(s) for +: ") + ret1.type().name() + " + " + ret2.type().name());//no need
|
||||||
|
}
|
||||||
|
//...............
|
||||||
|
```
|
||||||
|
|
||||||
|
我们保证测试文件的语法都是正确的,所以后两行实则是不需要的。
|
||||||
|
|
||||||
|
`any_cast` 模板函数可以直接将 `any` 类型转换为你想要的类型,但是如果转换失败,它会直接抛出异常。
|
||||||
|
而在上文的代码中,我们向模板填入的类型是目标类型的引用,所以如果类型不匹配、转换失败,它会返回 `nullptr`。
|
||||||
|
|
||||||
|
在 OOP 课程中,你们将会学习构造函数和析构函数。所以你们最好是在理解 `std::any` 是如何构造与析构的基础上,进行编程。通过阅读[cppreference](https://zh.cppreference.com/w/cpp/utility/any)来理解。如果这对于你们来说太过困难,请求助助教。
|
||||||
|
|
||||||
|
https://www.cnblogs.com/mangoyuan/p/6446046.html
|
||||||
|
|
||||||
|
https://www.cnblogs.com/xiaoshiwang/p/9590029.html
|
||||||
|
|
||||||
|
搜索 "C++11 traits" 来获得更多信息。
|
7
generated/CMakeLists.txt
Normal file
7
generated/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
|
||||||
|
include_directories(/usr/include/antlr4-runtime/)
|
||||||
|
|
||||||
|
file(GLOB PyAntlrSrc *.cpp)
|
||||||
|
|
||||||
|
add_library(PyAntlr STATIC ${PyAntlrSrc})
|
632
generated/Python3Lexer.cpp
Normal file
632
generated/Python3Lexer.cpp
Normal file
@ -0,0 +1,632 @@
|
|||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <regex>
|
||||||
|
|
||||||
|
|
||||||
|
// Generated from Python3Lexer.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
|
||||||
|
#include "Python3Lexer.h"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace antlr4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
using namespace antlr4;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
struct Python3LexerStaticData final {
|
||||||
|
Python3LexerStaticData(std::vector<std::string> ruleNames,
|
||||||
|
std::vector<std::string> channelNames,
|
||||||
|
std::vector<std::string> modeNames,
|
||||||
|
std::vector<std::string> literalNames,
|
||||||
|
std::vector<std::string> symbolicNames)
|
||||||
|
: ruleNames(std::move(ruleNames)), channelNames(std::move(channelNames)),
|
||||||
|
modeNames(std::move(modeNames)), literalNames(std::move(literalNames)),
|
||||||
|
symbolicNames(std::move(symbolicNames)),
|
||||||
|
vocabulary(this->literalNames, this->symbolicNames) {}
|
||||||
|
|
||||||
|
Python3LexerStaticData(const Python3LexerStaticData&) = delete;
|
||||||
|
Python3LexerStaticData(Python3LexerStaticData&&) = delete;
|
||||||
|
Python3LexerStaticData& operator=(const Python3LexerStaticData&) = delete;
|
||||||
|
Python3LexerStaticData& operator=(Python3LexerStaticData&&) = delete;
|
||||||
|
|
||||||
|
std::vector<antlr4::dfa::DFA> decisionToDFA;
|
||||||
|
antlr4::atn::PredictionContextCache sharedContextCache;
|
||||||
|
const std::vector<std::string> ruleNames;
|
||||||
|
const std::vector<std::string> channelNames;
|
||||||
|
const std::vector<std::string> modeNames;
|
||||||
|
const std::vector<std::string> literalNames;
|
||||||
|
const std::vector<std::string> symbolicNames;
|
||||||
|
const antlr4::dfa::Vocabulary vocabulary;
|
||||||
|
antlr4::atn::SerializedATNView serializedATN;
|
||||||
|
std::unique_ptr<antlr4::atn::ATN> atn;
|
||||||
|
};
|
||||||
|
|
||||||
|
::antlr4::internal::OnceFlag python3lexerLexerOnceFlag;
|
||||||
|
#if ANTLR4_USE_THREAD_LOCAL_CACHE
|
||||||
|
static thread_local
|
||||||
|
#endif
|
||||||
|
Python3LexerStaticData *python3lexerLexerStaticData = nullptr;
|
||||||
|
|
||||||
|
void python3lexerLexerInitialize() {
|
||||||
|
#if ANTLR4_USE_THREAD_LOCAL_CACHE
|
||||||
|
if (python3lexerLexerStaticData != nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
assert(python3lexerLexerStaticData == nullptr);
|
||||||
|
#endif
|
||||||
|
auto staticData = std::make_unique<Python3LexerStaticData>(
|
||||||
|
std::vector<std::string>{
|
||||||
|
"STRING", "NUMBER", "INTEGER", "DEF", "RETURN", "IF", "ELIF", "ELSE",
|
||||||
|
"WHILE", "FOR", "IN", "OR", "AND", "NOT", "NONE", "TRUE", "FALSE",
|
||||||
|
"CONTINUE", "BREAK", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL",
|
||||||
|
"DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER",
|
||||||
|
"IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
|
||||||
|
"COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK",
|
||||||
|
"OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS",
|
||||||
|
"DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN",
|
||||||
|
"GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2",
|
||||||
|
"AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN",
|
||||||
|
"DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
|
||||||
|
"LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN",
|
||||||
|
"SKIP_", "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM",
|
||||||
|
"LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT", "DIGIT",
|
||||||
|
"OCT_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT", "EXPONENT_FLOAT",
|
||||||
|
"INT_PART", "FRACTION", "EXPONENT", "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM",
|
||||||
|
"SHORT_BYTES_CHAR_NO_SINGLE_QUOTE", "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE",
|
||||||
|
"LONG_BYTES_CHAR", "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING",
|
||||||
|
"ID_START", "ID_CONTINUE"
|
||||||
|
},
|
||||||
|
std::vector<std::string>{
|
||||||
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
|
},
|
||||||
|
std::vector<std::string>{
|
||||||
|
"DEFAULT_MODE"
|
||||||
|
},
|
||||||
|
std::vector<std::string>{
|
||||||
|
"", "", "", "", "", "", "'def'", "'return'", "'if'", "'elif'", "'else'",
|
||||||
|
"'while'", "'for'", "'in'", "'or'", "'and'", "'not'", "'None'", "'True'",
|
||||||
|
"'False'", "'continue'", "'break'", "", "", "", "", "", "", "", "",
|
||||||
|
"", "", "'.'", "'...'", "'*'", "'('", "')'", "','", "':'", "';'",
|
||||||
|
"'**'", "'='", "'['", "']'", "'|'", "'^'", "'&'", "'<<'", "'>>'",
|
||||||
|
"'+'", "'-'", "'/'", "'%'", "'//'", "'~'", "'{'", "'}'", "'<'", "'>'",
|
||||||
|
"'=='", "'>='", "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='", "'-='",
|
||||||
|
"'*='", "'@='", "'/='", "'%='", "'&='", "'|='", "'^='", "'<<='", "'>>='",
|
||||||
|
"'**='", "'//='"
|
||||||
|
},
|
||||||
|
std::vector<std::string>{
|
||||||
|
"", "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "DEF", "RETURN",
|
||||||
|
"IF", "ELIF", "ELSE", "WHILE", "FOR", "IN", "OR", "AND", "NOT", "NONE",
|
||||||
|
"TRUE", "FALSE", "CONTINUE", "BREAK", "NEWLINE", "NAME", "STRING_LITERAL",
|
||||||
|
"BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER",
|
||||||
|
"BIN_INTEGER", "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR",
|
||||||
|
"OPEN_PAREN", "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", "POWER",
|
||||||
|
"ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT",
|
||||||
|
"RIGHT_SHIFT", "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE",
|
||||||
|
"CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ",
|
||||||
|
"NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN",
|
||||||
|
"MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN",
|
||||||
|
"OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN",
|
||||||
|
"POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR"
|
||||||
|
}
|
||||||
|
);
|
||||||
|
static const int32_t serializedATNSegment[] = {
|
||||||
|
4,0,80,732,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
|
||||||
|
6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,
|
||||||
|
7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,
|
||||||
|
7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,
|
||||||
|
7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,
|
||||||
|
7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,
|
||||||
|
7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,
|
||||||
|
7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,
|
||||||
|
7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,
|
||||||
|
7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,
|
||||||
|
7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,
|
||||||
|
7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,
|
||||||
|
7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,
|
||||||
|
7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,
|
||||||
|
7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,
|
||||||
|
7,104,1,0,1,0,3,0,214,8,0,1,1,1,1,1,1,3,1,219,8,1,1,2,1,2,1,2,1,2,3,2,
|
||||||
|
225,8,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,
|
||||||
|
6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,
|
||||||
|
1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,
|
||||||
|
1,13,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,
|
||||||
|
1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,
|
||||||
|
1,18,1,18,1,18,1,18,1,19,1,19,1,19,3,19,309,8,19,1,19,1,19,3,19,313,8,
|
||||||
|
19,1,19,3,19,316,8,19,3,19,318,8,19,1,19,1,19,1,20,1,20,5,20,324,8,20,
|
||||||
|
10,20,12,20,327,9,20,1,21,1,21,1,21,1,21,1,21,3,21,334,8,21,1,21,1,21,
|
||||||
|
3,21,338,8,21,1,22,1,22,1,22,1,22,1,22,3,22,345,8,22,1,22,1,22,3,22,349,
|
||||||
|
8,22,1,23,1,23,5,23,353,8,23,10,23,12,23,356,9,23,1,23,4,23,359,8,23,
|
||||||
|
11,23,12,23,360,3,23,363,8,23,1,24,1,24,1,24,4,24,368,8,24,11,24,12,24,
|
||||||
|
369,1,25,1,25,1,25,4,25,375,8,25,11,25,12,25,376,1,26,1,26,1,26,4,26,
|
||||||
|
382,8,26,11,26,12,26,383,1,27,1,27,3,27,388,8,27,1,28,1,28,3,28,392,8,
|
||||||
|
28,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,30,1,31,1,31,1,32,1,32,1,32,1,
|
||||||
|
33,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,
|
||||||
|
39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,
|
||||||
|
44,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,49,1,49,1,50,1,50,1,
|
||||||
|
50,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,
|
||||||
|
56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,
|
||||||
|
61,1,61,1,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,65,1,
|
||||||
|
66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,69,1,69,1,69,1,70,1,70,1,
|
||||||
|
70,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,74,1,74,1,
|
||||||
|
74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76,3,76,528,8,76,1,76,1,76,1,
|
||||||
|
77,1,77,1,78,1,78,1,78,5,78,537,8,78,10,78,12,78,540,9,78,1,78,1,78,1,
|
||||||
|
78,1,78,5,78,546,8,78,10,78,12,78,549,9,78,1,78,3,78,552,8,78,1,79,1,
|
||||||
|
79,1,79,1,79,1,79,5,79,559,8,79,10,79,12,79,562,9,79,1,79,1,79,1,79,1,
|
||||||
|
79,1,79,1,79,1,79,1,79,5,79,572,8,79,10,79,12,79,575,9,79,1,79,1,79,1,
|
||||||
|
79,3,79,580,8,79,1,80,1,80,3,80,584,8,80,1,81,1,81,1,82,1,82,1,82,1,82,
|
||||||
|
3,82,592,8,82,1,83,1,83,1,84,1,84,1,85,1,85,1,86,1,86,1,87,1,87,1,88,
|
||||||
|
3,88,605,8,88,1,88,1,88,1,88,1,88,3,88,611,8,88,1,89,1,89,3,89,615,8,
|
||||||
|
89,1,89,1,89,1,90,4,90,620,8,90,11,90,12,90,621,1,91,1,91,4,91,626,8,
|
||||||
|
91,11,91,12,91,627,1,92,1,92,3,92,632,8,92,1,92,4,92,635,8,92,11,92,12,
|
||||||
|
92,636,1,93,1,93,1,93,5,93,642,8,93,10,93,12,93,645,9,93,1,93,1,93,1,
|
||||||
|
93,1,93,5,93,651,8,93,10,93,12,93,654,9,93,1,93,3,93,657,8,93,1,94,1,
|
||||||
|
94,1,94,1,94,1,94,5,94,664,8,94,10,94,12,94,667,9,94,1,94,1,94,1,94,1,
|
||||||
|
94,1,94,1,94,1,94,1,94,5,94,677,8,94,10,94,12,94,680,9,94,1,94,1,94,1,
|
||||||
|
94,3,94,685,8,94,1,95,1,95,3,95,689,8,95,1,96,3,96,692,8,96,1,97,3,97,
|
||||||
|
695,8,97,1,98,3,98,698,8,98,1,99,1,99,1,99,1,100,4,100,704,8,100,11,100,
|
||||||
|
12,100,705,1,101,1,101,5,101,710,8,101,10,101,12,101,713,9,101,1,102,
|
||||||
|
1,102,3,102,717,8,102,1,102,3,102,720,8,102,1,102,1,102,3,102,724,8,102,
|
||||||
|
1,103,3,103,727,8,103,1,104,1,104,3,104,731,8,104,4,560,573,665,678,0,
|
||||||
|
105,1,3,3,4,5,5,7,6,9,7,11,8,13,9,15,10,17,11,19,12,21,13,23,14,25,15,
|
||||||
|
27,16,29,17,31,18,33,19,35,20,37,21,39,22,41,23,43,24,45,25,47,26,49,
|
||||||
|
27,51,28,53,29,55,30,57,31,59,32,61,33,63,34,65,35,67,36,69,37,71,38,
|
||||||
|
73,39,75,40,77,41,79,42,81,43,83,44,85,45,87,46,89,47,91,48,93,49,95,
|
||||||
|
50,97,51,99,52,101,53,103,54,105,55,107,56,109,57,111,58,113,59,115,60,
|
||||||
|
117,61,119,62,121,63,123,64,125,65,127,66,129,67,131,68,133,69,135,70,
|
||||||
|
137,71,139,72,141,73,143,74,145,75,147,76,149,77,151,78,153,79,155,80,
|
||||||
|
157,0,159,0,161,0,163,0,165,0,167,0,169,0,171,0,173,0,175,0,177,0,179,
|
||||||
|
0,181,0,183,0,185,0,187,0,189,0,191,0,193,0,195,0,197,0,199,0,201,0,203,
|
||||||
|
0,205,0,207,0,209,0,1,0,25,6,0,70,70,82,82,85,85,102,102,114,114,117,
|
||||||
|
117,2,0,70,70,102,102,2,0,82,82,114,114,2,0,66,66,98,98,2,0,79,79,111,
|
||||||
|
111,2,0,88,88,120,120,2,0,74,74,106,106,4,0,10,10,12,13,39,39,92,92,4,
|
||||||
|
0,10,10,12,13,34,34,92,92,1,0,92,92,1,0,49,57,1,0,48,57,1,0,48,55,3,0,
|
||||||
|
48,57,65,70,97,102,1,0,48,49,2,0,69,69,101,101,2,0,43,43,45,45,5,0,0,
|
||||||
|
9,11,12,14,38,40,91,93,127,5,0,0,9,11,12,14,33,35,91,93,127,2,0,0,91,
|
||||||
|
93,127,1,0,0,127,2,0,9,9,32,32,2,0,10,10,12,13,295,0,65,90,95,95,97,122,
|
||||||
|
170,170,181,181,186,186,192,214,216,246,248,577,592,705,710,721,736,740,
|
||||||
|
750,750,890,890,902,902,904,906,908,908,910,929,931,974,976,1013,1015,
|
||||||
|
1153,1162,1230,1232,1273,1280,1295,1329,1366,1369,1369,1377,1415,1488,
|
||||||
|
1514,1520,1522,1569,1594,1600,1610,1646,1647,1649,1747,1749,1749,1765,
|
||||||
|
1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1901,1920,
|
||||||
|
1957,1969,1969,2308,2361,2365,2365,2384,2384,2392,2401,2429,2429,2437,
|
||||||
|
2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,
|
||||||
|
2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,
|
||||||
|
2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,
|
||||||
|
2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,
|
||||||
|
2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,
|
||||||
|
2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,
|
||||||
|
2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,
|
||||||
|
3001,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3168,3169,3205,
|
||||||
|
3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,
|
||||||
|
3297,3333,3340,3342,3344,3346,3368,3370,3385,3424,3425,3461,3478,3482,
|
||||||
|
3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,
|
||||||
|
3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,
|
||||||
|
3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,
|
||||||
|
3780,3782,3782,3804,3805,3840,3840,3904,3911,3913,3946,3976,3979,4096,
|
||||||
|
4129,4131,4135,4137,4138,4176,4181,4256,4293,4304,4346,4348,4348,4352,
|
||||||
|
4441,4447,4514,4520,4601,4608,4680,4682,4685,4688,4694,4696,4696,4698,
|
||||||
|
4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,
|
||||||
|
4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,
|
||||||
|
5740,5743,5750,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,
|
||||||
|
5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,
|
||||||
|
6263,6272,6312,6400,6428,6480,6509,6512,6516,6528,6569,6593,6599,6656,
|
||||||
|
6678,7424,7615,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,
|
||||||
|
8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,
|
||||||
|
8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,
|
||||||
|
8180,8182,8188,8305,8305,8319,8319,8336,8340,8450,8450,8455,8455,8458,
|
||||||
|
8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8497,8499,
|
||||||
|
8505,8508,8511,8517,8521,8544,8579,11264,11310,11312,11358,11392,11492,
|
||||||
|
11520,11557,11568,11621,11631,11631,11648,11670,11680,11686,11688,11694,
|
||||||
|
11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,
|
||||||
|
12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12443,12447,
|
||||||
|
12449,12538,12540,12543,12549,12588,12593,12686,12704,12727,12784,12799,
|
||||||
|
13312,19893,19968,40891,40960,42124,43008,43009,43011,43013,43015,43018,
|
||||||
|
43020,43042,44032,55203,63744,64045,64048,64106,64112,64217,64256,64262,
|
||||||
|
64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,
|
||||||
|
64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,
|
||||||
|
65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,
|
||||||
|
65474,65479,65482,65487,65490,65495,65498,65500,148,0,48,57,768,879,1155,
|
||||||
|
1158,1425,1465,1467,1469,1471,1471,1473,1474,1476,1477,1479,1479,1552,
|
||||||
|
1557,1611,1630,1632,1641,1648,1648,1750,1756,1759,1764,1767,1768,1770,
|
||||||
|
1773,1776,1785,1809,1809,1840,1866,1958,1968,2305,2307,2364,2364,2366,
|
||||||
|
2381,2385,2388,2402,2403,2406,2415,2433,2435,2492,2492,2494,2500,2503,
|
||||||
|
2504,2507,2509,2519,2519,2530,2531,2534,2543,2561,2563,2620,2620,2622,
|
||||||
|
2626,2631,2632,2635,2637,2662,2673,2689,2691,2748,2748,2750,2757,2759,
|
||||||
|
2761,2763,2765,2786,2787,2790,2799,2817,2819,2876,2876,2878,2883,2887,
|
||||||
|
2888,2891,2893,2902,2903,2918,2927,2946,2946,3006,3010,3014,3016,3018,
|
||||||
|
3021,3031,3031,3046,3055,3073,3075,3134,3140,3142,3144,3146,3149,3157,
|
||||||
|
3158,3174,3183,3202,3203,3260,3260,3262,3268,3270,3272,3274,3277,3285,
|
||||||
|
3286,3302,3311,3330,3331,3390,3395,3398,3400,3402,3405,3415,3415,3430,
|
||||||
|
3439,3458,3459,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3633,
|
||||||
|
3633,3636,3642,3655,3662,3664,3673,3761,3761,3764,3769,3771,3772,3784,
|
||||||
|
3789,3792,3801,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,
|
||||||
|
3903,3953,3972,3974,3975,3984,3991,3993,4028,4038,4038,4140,4146,4150,
|
||||||
|
4153,4160,4169,4182,4185,4959,4959,4969,4977,5906,5908,5938,5940,5970,
|
||||||
|
5971,6002,6003,6070,6099,6109,6109,6112,6121,6155,6157,6160,6169,6313,
|
||||||
|
6313,6432,6443,6448,6459,6470,6479,6576,6592,6600,6601,6608,6617,6679,
|
||||||
|
6683,7616,7619,8255,8256,8276,8276,8400,8412,8417,8417,8421,8427,12330,
|
||||||
|
12335,12441,12442,43010,43010,43014,43014,43019,43019,43043,43047,64286,
|
||||||
|
64286,65024,65039,65056,65059,65075,65076,65101,65103,65296,65305,65343,
|
||||||
|
65343,764,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,
|
||||||
|
0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,
|
||||||
|
1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,
|
||||||
|
0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,
|
||||||
|
0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,
|
||||||
|
1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,
|
||||||
|
0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,
|
||||||
|
0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,
|
||||||
|
1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,
|
||||||
|
0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,
|
||||||
|
0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,
|
||||||
|
0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,
|
||||||
|
0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,
|
||||||
|
0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,
|
||||||
|
0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,
|
||||||
|
0,1,213,1,0,0,0,3,218,1,0,0,0,5,224,1,0,0,0,7,226,1,0,0,0,9,230,1,0,0,
|
||||||
|
0,11,237,1,0,0,0,13,240,1,0,0,0,15,245,1,0,0,0,17,250,1,0,0,0,19,256,
|
||||||
|
1,0,0,0,21,260,1,0,0,0,23,263,1,0,0,0,25,266,1,0,0,0,27,270,1,0,0,0,29,
|
||||||
|
274,1,0,0,0,31,279,1,0,0,0,33,284,1,0,0,0,35,290,1,0,0,0,37,299,1,0,0,
|
||||||
|
0,39,317,1,0,0,0,41,321,1,0,0,0,43,333,1,0,0,0,45,344,1,0,0,0,47,362,
|
||||||
|
1,0,0,0,49,364,1,0,0,0,51,371,1,0,0,0,53,378,1,0,0,0,55,387,1,0,0,0,57,
|
||||||
|
391,1,0,0,0,59,395,1,0,0,0,61,397,1,0,0,0,63,401,1,0,0,0,65,403,1,0,0,
|
||||||
|
0,67,406,1,0,0,0,69,409,1,0,0,0,71,411,1,0,0,0,73,413,1,0,0,0,75,415,
|
||||||
|
1,0,0,0,77,418,1,0,0,0,79,420,1,0,0,0,81,423,1,0,0,0,83,426,1,0,0,0,85,
|
||||||
|
428,1,0,0,0,87,430,1,0,0,0,89,432,1,0,0,0,91,435,1,0,0,0,93,438,1,0,0,
|
||||||
|
0,95,440,1,0,0,0,97,442,1,0,0,0,99,444,1,0,0,0,101,446,1,0,0,0,103,449,
|
||||||
|
1,0,0,0,105,451,1,0,0,0,107,454,1,0,0,0,109,457,1,0,0,0,111,459,1,0,0,
|
||||||
|
0,113,461,1,0,0,0,115,464,1,0,0,0,117,467,1,0,0,0,119,470,1,0,0,0,121,
|
||||||
|
473,1,0,0,0,123,476,1,0,0,0,125,478,1,0,0,0,127,481,1,0,0,0,129,484,1,
|
||||||
|
0,0,0,131,487,1,0,0,0,133,490,1,0,0,0,135,493,1,0,0,0,137,496,1,0,0,0,
|
||||||
|
139,499,1,0,0,0,141,502,1,0,0,0,143,505,1,0,0,0,145,508,1,0,0,0,147,512,
|
||||||
|
1,0,0,0,149,516,1,0,0,0,151,520,1,0,0,0,153,527,1,0,0,0,155,531,1,0,0,
|
||||||
|
0,157,551,1,0,0,0,159,579,1,0,0,0,161,583,1,0,0,0,163,585,1,0,0,0,165,
|
||||||
|
591,1,0,0,0,167,593,1,0,0,0,169,595,1,0,0,0,171,597,1,0,0,0,173,599,1,
|
||||||
|
0,0,0,175,601,1,0,0,0,177,610,1,0,0,0,179,614,1,0,0,0,181,619,1,0,0,0,
|
||||||
|
183,623,1,0,0,0,185,629,1,0,0,0,187,656,1,0,0,0,189,684,1,0,0,0,191,688,
|
||||||
|
1,0,0,0,193,691,1,0,0,0,195,694,1,0,0,0,197,697,1,0,0,0,199,699,1,0,0,
|
||||||
|
0,201,703,1,0,0,0,203,707,1,0,0,0,205,714,1,0,0,0,207,726,1,0,0,0,209,
|
||||||
|
730,1,0,0,0,211,214,3,43,21,0,212,214,3,45,22,0,213,211,1,0,0,0,213,212,
|
||||||
|
1,0,0,0,214,2,1,0,0,0,215,219,3,5,2,0,216,219,3,55,27,0,217,219,3,57,
|
||||||
|
28,0,218,215,1,0,0,0,218,216,1,0,0,0,218,217,1,0,0,0,219,4,1,0,0,0,220,
|
||||||
|
225,3,47,23,0,221,225,3,49,24,0,222,225,3,51,25,0,223,225,3,53,26,0,224,
|
||||||
|
220,1,0,0,0,224,221,1,0,0,0,224,222,1,0,0,0,224,223,1,0,0,0,225,6,1,0,
|
||||||
|
0,0,226,227,5,100,0,0,227,228,5,101,0,0,228,229,5,102,0,0,229,8,1,0,0,
|
||||||
|
0,230,231,5,114,0,0,231,232,5,101,0,0,232,233,5,116,0,0,233,234,5,117,
|
||||||
|
0,0,234,235,5,114,0,0,235,236,5,110,0,0,236,10,1,0,0,0,237,238,5,105,
|
||||||
|
0,0,238,239,5,102,0,0,239,12,1,0,0,0,240,241,5,101,0,0,241,242,5,108,
|
||||||
|
0,0,242,243,5,105,0,0,243,244,5,102,0,0,244,14,1,0,0,0,245,246,5,101,
|
||||||
|
0,0,246,247,5,108,0,0,247,248,5,115,0,0,248,249,5,101,0,0,249,16,1,0,
|
||||||
|
0,0,250,251,5,119,0,0,251,252,5,104,0,0,252,253,5,105,0,0,253,254,5,108,
|
||||||
|
0,0,254,255,5,101,0,0,255,18,1,0,0,0,256,257,5,102,0,0,257,258,5,111,
|
||||||
|
0,0,258,259,5,114,0,0,259,20,1,0,0,0,260,261,5,105,0,0,261,262,5,110,
|
||||||
|
0,0,262,22,1,0,0,0,263,264,5,111,0,0,264,265,5,114,0,0,265,24,1,0,0,0,
|
||||||
|
266,267,5,97,0,0,267,268,5,110,0,0,268,269,5,100,0,0,269,26,1,0,0,0,270,
|
||||||
|
271,5,110,0,0,271,272,5,111,0,0,272,273,5,116,0,0,273,28,1,0,0,0,274,
|
||||||
|
275,5,78,0,0,275,276,5,111,0,0,276,277,5,110,0,0,277,278,5,101,0,0,278,
|
||||||
|
30,1,0,0,0,279,280,5,84,0,0,280,281,5,114,0,0,281,282,5,117,0,0,282,283,
|
||||||
|
5,101,0,0,283,32,1,0,0,0,284,285,5,70,0,0,285,286,5,97,0,0,286,287,5,
|
||||||
|
108,0,0,287,288,5,115,0,0,288,289,5,101,0,0,289,34,1,0,0,0,290,291,5,
|
||||||
|
99,0,0,291,292,5,111,0,0,292,293,5,110,0,0,293,294,5,116,0,0,294,295,
|
||||||
|
5,105,0,0,295,296,5,110,0,0,296,297,5,117,0,0,297,298,5,101,0,0,298,36,
|
||||||
|
1,0,0,0,299,300,5,98,0,0,300,301,5,114,0,0,301,302,5,101,0,0,302,303,
|
||||||
|
5,97,0,0,303,304,5,107,0,0,304,38,1,0,0,0,305,306,4,19,0,0,306,318,3,
|
||||||
|
201,100,0,307,309,5,13,0,0,308,307,1,0,0,0,308,309,1,0,0,0,309,310,1,
|
||||||
|
0,0,0,310,313,5,10,0,0,311,313,2,12,13,0,312,308,1,0,0,0,312,311,1,0,
|
||||||
|
0,0,313,315,1,0,0,0,314,316,3,201,100,0,315,314,1,0,0,0,315,316,1,0,0,
|
||||||
|
0,316,318,1,0,0,0,317,305,1,0,0,0,317,312,1,0,0,0,318,319,1,0,0,0,319,
|
||||||
|
320,6,19,0,0,320,40,1,0,0,0,321,325,3,207,103,0,322,324,3,209,104,0,323,
|
||||||
|
322,1,0,0,0,324,327,1,0,0,0,325,323,1,0,0,0,325,326,1,0,0,0,326,42,1,
|
||||||
|
0,0,0,327,325,1,0,0,0,328,334,7,0,0,0,329,330,7,1,0,0,330,334,7,2,0,0,
|
||||||
|
331,332,7,2,0,0,332,334,7,1,0,0,333,328,1,0,0,0,333,329,1,0,0,0,333,331,
|
||||||
|
1,0,0,0,333,334,1,0,0,0,334,337,1,0,0,0,335,338,3,157,78,0,336,338,3,
|
||||||
|
159,79,0,337,335,1,0,0,0,337,336,1,0,0,0,338,44,1,0,0,0,339,345,7,3,0,
|
||||||
|
0,340,341,7,3,0,0,341,345,7,2,0,0,342,343,7,2,0,0,343,345,7,3,0,0,344,
|
||||||
|
339,1,0,0,0,344,340,1,0,0,0,344,342,1,0,0,0,345,348,1,0,0,0,346,349,3,
|
||||||
|
187,93,0,347,349,3,189,94,0,348,346,1,0,0,0,348,347,1,0,0,0,349,46,1,
|
||||||
|
0,0,0,350,354,3,167,83,0,351,353,3,169,84,0,352,351,1,0,0,0,353,356,1,
|
||||||
|
0,0,0,354,352,1,0,0,0,354,355,1,0,0,0,355,363,1,0,0,0,356,354,1,0,0,0,
|
||||||
|
357,359,5,48,0,0,358,357,1,0,0,0,359,360,1,0,0,0,360,358,1,0,0,0,360,
|
||||||
|
361,1,0,0,0,361,363,1,0,0,0,362,350,1,0,0,0,362,358,1,0,0,0,363,48,1,
|
||||||
|
0,0,0,364,365,5,48,0,0,365,367,7,4,0,0,366,368,3,171,85,0,367,366,1,0,
|
||||||
|
0,0,368,369,1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,50,1,0,0,0,371,
|
||||||
|
372,5,48,0,0,372,374,7,5,0,0,373,375,3,173,86,0,374,373,1,0,0,0,375,376,
|
||||||
|
1,0,0,0,376,374,1,0,0,0,376,377,1,0,0,0,377,52,1,0,0,0,378,379,5,48,0,
|
||||||
|
0,379,381,7,3,0,0,380,382,3,175,87,0,381,380,1,0,0,0,382,383,1,0,0,0,
|
||||||
|
383,381,1,0,0,0,383,384,1,0,0,0,384,54,1,0,0,0,385,388,3,177,88,0,386,
|
||||||
|
388,3,179,89,0,387,385,1,0,0,0,387,386,1,0,0,0,388,56,1,0,0,0,389,392,
|
||||||
|
3,55,27,0,390,392,3,181,90,0,391,389,1,0,0,0,391,390,1,0,0,0,392,393,
|
||||||
|
1,0,0,0,393,394,7,6,0,0,394,58,1,0,0,0,395,396,5,46,0,0,396,60,1,0,0,
|
||||||
|
0,397,398,5,46,0,0,398,399,5,46,0,0,399,400,5,46,0,0,400,62,1,0,0,0,401,
|
||||||
|
402,5,42,0,0,402,64,1,0,0,0,403,404,5,40,0,0,404,405,6,32,1,0,405,66,
|
||||||
|
1,0,0,0,406,407,5,41,0,0,407,408,6,33,2,0,408,68,1,0,0,0,409,410,5,44,
|
||||||
|
0,0,410,70,1,0,0,0,411,412,5,58,0,0,412,72,1,0,0,0,413,414,5,59,0,0,414,
|
||||||
|
74,1,0,0,0,415,416,5,42,0,0,416,417,5,42,0,0,417,76,1,0,0,0,418,419,5,
|
||||||
|
61,0,0,419,78,1,0,0,0,420,421,5,91,0,0,421,422,6,39,3,0,422,80,1,0,0,
|
||||||
|
0,423,424,5,93,0,0,424,425,6,40,4,0,425,82,1,0,0,0,426,427,5,124,0,0,
|
||||||
|
427,84,1,0,0,0,428,429,5,94,0,0,429,86,1,0,0,0,430,431,5,38,0,0,431,88,
|
||||||
|
1,0,0,0,432,433,5,60,0,0,433,434,5,60,0,0,434,90,1,0,0,0,435,436,5,62,
|
||||||
|
0,0,436,437,5,62,0,0,437,92,1,0,0,0,438,439,5,43,0,0,439,94,1,0,0,0,440,
|
||||||
|
441,5,45,0,0,441,96,1,0,0,0,442,443,5,47,0,0,443,98,1,0,0,0,444,445,5,
|
||||||
|
37,0,0,445,100,1,0,0,0,446,447,5,47,0,0,447,448,5,47,0,0,448,102,1,0,
|
||||||
|
0,0,449,450,5,126,0,0,450,104,1,0,0,0,451,452,5,123,0,0,452,453,6,52,
|
||||||
|
5,0,453,106,1,0,0,0,454,455,5,125,0,0,455,456,6,53,6,0,456,108,1,0,0,
|
||||||
|
0,457,458,5,60,0,0,458,110,1,0,0,0,459,460,5,62,0,0,460,112,1,0,0,0,461,
|
||||||
|
462,5,61,0,0,462,463,5,61,0,0,463,114,1,0,0,0,464,465,5,62,0,0,465,466,
|
||||||
|
5,61,0,0,466,116,1,0,0,0,467,468,5,60,0,0,468,469,5,61,0,0,469,118,1,
|
||||||
|
0,0,0,470,471,5,60,0,0,471,472,5,62,0,0,472,120,1,0,0,0,473,474,5,33,
|
||||||
|
0,0,474,475,5,61,0,0,475,122,1,0,0,0,476,477,5,64,0,0,477,124,1,0,0,0,
|
||||||
|
478,479,5,45,0,0,479,480,5,62,0,0,480,126,1,0,0,0,481,482,5,43,0,0,482,
|
||||||
|
483,5,61,0,0,483,128,1,0,0,0,484,485,5,45,0,0,485,486,5,61,0,0,486,130,
|
||||||
|
1,0,0,0,487,488,5,42,0,0,488,489,5,61,0,0,489,132,1,0,0,0,490,491,5,64,
|
||||||
|
0,0,491,492,5,61,0,0,492,134,1,0,0,0,493,494,5,47,0,0,494,495,5,61,0,
|
||||||
|
0,495,136,1,0,0,0,496,497,5,37,0,0,497,498,5,61,0,0,498,138,1,0,0,0,499,
|
||||||
|
500,5,38,0,0,500,501,5,61,0,0,501,140,1,0,0,0,502,503,5,124,0,0,503,504,
|
||||||
|
5,61,0,0,504,142,1,0,0,0,505,506,5,94,0,0,506,507,5,61,0,0,507,144,1,
|
||||||
|
0,0,0,508,509,5,60,0,0,509,510,5,60,0,0,510,511,5,61,0,0,511,146,1,0,
|
||||||
|
0,0,512,513,5,62,0,0,513,514,5,62,0,0,514,515,5,61,0,0,515,148,1,0,0,
|
||||||
|
0,516,517,5,42,0,0,517,518,5,42,0,0,518,519,5,61,0,0,519,150,1,0,0,0,
|
||||||
|
520,521,5,47,0,0,521,522,5,47,0,0,522,523,5,61,0,0,523,152,1,0,0,0,524,
|
||||||
|
528,3,201,100,0,525,528,3,203,101,0,526,528,3,205,102,0,527,524,1,0,0,
|
||||||
|
0,527,525,1,0,0,0,527,526,1,0,0,0,528,529,1,0,0,0,529,530,6,76,7,0,530,
|
||||||
|
154,1,0,0,0,531,532,9,0,0,0,532,156,1,0,0,0,533,538,5,39,0,0,534,537,
|
||||||
|
3,165,82,0,535,537,8,7,0,0,536,534,1,0,0,0,536,535,1,0,0,0,537,540,1,
|
||||||
|
0,0,0,538,536,1,0,0,0,538,539,1,0,0,0,539,541,1,0,0,0,540,538,1,0,0,0,
|
||||||
|
541,552,5,39,0,0,542,547,5,34,0,0,543,546,3,165,82,0,544,546,8,8,0,0,
|
||||||
|
545,543,1,0,0,0,545,544,1,0,0,0,546,549,1,0,0,0,547,545,1,0,0,0,547,548,
|
||||||
|
1,0,0,0,548,550,1,0,0,0,549,547,1,0,0,0,550,552,5,34,0,0,551,533,1,0,
|
||||||
|
0,0,551,542,1,0,0,0,552,158,1,0,0,0,553,554,5,39,0,0,554,555,5,39,0,0,
|
||||||
|
555,556,5,39,0,0,556,560,1,0,0,0,557,559,3,161,80,0,558,557,1,0,0,0,559,
|
||||||
|
562,1,0,0,0,560,561,1,0,0,0,560,558,1,0,0,0,561,563,1,0,0,0,562,560,1,
|
||||||
|
0,0,0,563,564,5,39,0,0,564,565,5,39,0,0,565,580,5,39,0,0,566,567,5,34,
|
||||||
|
0,0,567,568,5,34,0,0,568,569,5,34,0,0,569,573,1,0,0,0,570,572,3,161,80,
|
||||||
|
0,571,570,1,0,0,0,572,575,1,0,0,0,573,574,1,0,0,0,573,571,1,0,0,0,574,
|
||||||
|
576,1,0,0,0,575,573,1,0,0,0,576,577,5,34,0,0,577,578,5,34,0,0,578,580,
|
||||||
|
5,34,0,0,579,553,1,0,0,0,579,566,1,0,0,0,580,160,1,0,0,0,581,584,3,163,
|
||||||
|
81,0,582,584,3,165,82,0,583,581,1,0,0,0,583,582,1,0,0,0,584,162,1,0,0,
|
||||||
|
0,585,586,8,9,0,0,586,164,1,0,0,0,587,588,5,92,0,0,588,592,9,0,0,0,589,
|
||||||
|
590,5,92,0,0,590,592,3,39,19,0,591,587,1,0,0,0,591,589,1,0,0,0,592,166,
|
||||||
|
1,0,0,0,593,594,7,10,0,0,594,168,1,0,0,0,595,596,7,11,0,0,596,170,1,0,
|
||||||
|
0,0,597,598,7,12,0,0,598,172,1,0,0,0,599,600,7,13,0,0,600,174,1,0,0,0,
|
||||||
|
601,602,7,14,0,0,602,176,1,0,0,0,603,605,3,181,90,0,604,603,1,0,0,0,604,
|
||||||
|
605,1,0,0,0,605,606,1,0,0,0,606,611,3,183,91,0,607,608,3,181,90,0,608,
|
||||||
|
609,5,46,0,0,609,611,1,0,0,0,610,604,1,0,0,0,610,607,1,0,0,0,611,178,
|
||||||
|
1,0,0,0,612,615,3,181,90,0,613,615,3,177,88,0,614,612,1,0,0,0,614,613,
|
||||||
|
1,0,0,0,615,616,1,0,0,0,616,617,3,185,92,0,617,180,1,0,0,0,618,620,3,
|
||||||
|
169,84,0,619,618,1,0,0,0,620,621,1,0,0,0,621,619,1,0,0,0,621,622,1,0,
|
||||||
|
0,0,622,182,1,0,0,0,623,625,5,46,0,0,624,626,3,169,84,0,625,624,1,0,0,
|
||||||
|
0,626,627,1,0,0,0,627,625,1,0,0,0,627,628,1,0,0,0,628,184,1,0,0,0,629,
|
||||||
|
631,7,15,0,0,630,632,7,16,0,0,631,630,1,0,0,0,631,632,1,0,0,0,632,634,
|
||||||
|
1,0,0,0,633,635,3,169,84,0,634,633,1,0,0,0,635,636,1,0,0,0,636,634,1,
|
||||||
|
0,0,0,636,637,1,0,0,0,637,186,1,0,0,0,638,643,5,39,0,0,639,642,3,193,
|
||||||
|
96,0,640,642,3,199,99,0,641,639,1,0,0,0,641,640,1,0,0,0,642,645,1,0,0,
|
||||||
|
0,643,641,1,0,0,0,643,644,1,0,0,0,644,646,1,0,0,0,645,643,1,0,0,0,646,
|
||||||
|
657,5,39,0,0,647,652,5,34,0,0,648,651,3,195,97,0,649,651,3,199,99,0,650,
|
||||||
|
648,1,0,0,0,650,649,1,0,0,0,651,654,1,0,0,0,652,650,1,0,0,0,652,653,1,
|
||||||
|
0,0,0,653,655,1,0,0,0,654,652,1,0,0,0,655,657,5,34,0,0,656,638,1,0,0,
|
||||||
|
0,656,647,1,0,0,0,657,188,1,0,0,0,658,659,5,39,0,0,659,660,5,39,0,0,660,
|
||||||
|
661,5,39,0,0,661,665,1,0,0,0,662,664,3,191,95,0,663,662,1,0,0,0,664,667,
|
||||||
|
1,0,0,0,665,666,1,0,0,0,665,663,1,0,0,0,666,668,1,0,0,0,667,665,1,0,0,
|
||||||
|
0,668,669,5,39,0,0,669,670,5,39,0,0,670,685,5,39,0,0,671,672,5,34,0,0,
|
||||||
|
672,673,5,34,0,0,673,674,5,34,0,0,674,678,1,0,0,0,675,677,3,191,95,0,
|
||||||
|
676,675,1,0,0,0,677,680,1,0,0,0,678,679,1,0,0,0,678,676,1,0,0,0,679,681,
|
||||||
|
1,0,0,0,680,678,1,0,0,0,681,682,5,34,0,0,682,683,5,34,0,0,683,685,5,34,
|
||||||
|
0,0,684,658,1,0,0,0,684,671,1,0,0,0,685,190,1,0,0,0,686,689,3,197,98,
|
||||||
|
0,687,689,3,199,99,0,688,686,1,0,0,0,688,687,1,0,0,0,689,192,1,0,0,0,
|
||||||
|
690,692,7,17,0,0,691,690,1,0,0,0,692,194,1,0,0,0,693,695,7,18,0,0,694,
|
||||||
|
693,1,0,0,0,695,196,1,0,0,0,696,698,7,19,0,0,697,696,1,0,0,0,698,198,
|
||||||
|
1,0,0,0,699,700,5,92,0,0,700,701,7,20,0,0,701,200,1,0,0,0,702,704,7,21,
|
||||||
|
0,0,703,702,1,0,0,0,704,705,1,0,0,0,705,703,1,0,0,0,705,706,1,0,0,0,706,
|
||||||
|
202,1,0,0,0,707,711,5,35,0,0,708,710,8,22,0,0,709,708,1,0,0,0,710,713,
|
||||||
|
1,0,0,0,711,709,1,0,0,0,711,712,1,0,0,0,712,204,1,0,0,0,713,711,1,0,0,
|
||||||
|
0,714,716,5,92,0,0,715,717,3,201,100,0,716,715,1,0,0,0,716,717,1,0,0,
|
||||||
|
0,717,723,1,0,0,0,718,720,5,13,0,0,719,718,1,0,0,0,719,720,1,0,0,0,720,
|
||||||
|
721,1,0,0,0,721,724,5,10,0,0,722,724,2,12,13,0,723,719,1,0,0,0,723,722,
|
||||||
|
1,0,0,0,724,206,1,0,0,0,725,727,7,23,0,0,726,725,1,0,0,0,727,208,1,0,
|
||||||
|
0,0,728,731,3,207,103,0,729,731,7,24,0,0,730,728,1,0,0,0,730,729,1,0,
|
||||||
|
0,0,731,210,1,0,0,0,58,0,213,218,224,308,312,315,317,325,333,337,344,
|
||||||
|
348,354,360,362,369,376,383,387,391,527,536,538,545,547,551,560,573,579,
|
||||||
|
583,591,604,610,614,621,627,631,636,641,643,650,652,656,665,678,684,688,
|
||||||
|
691,694,697,705,711,716,719,723,726,730,8,1,19,0,1,32,1,1,33,2,1,39,3,
|
||||||
|
1,40,4,1,52,5,1,53,6,6,0,0
|
||||||
|
};
|
||||||
|
staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
|
||||||
|
|
||||||
|
antlr4::atn::ATNDeserializer deserializer;
|
||||||
|
staticData->atn = deserializer.deserialize(staticData->serializedATN);
|
||||||
|
|
||||||
|
const size_t count = staticData->atn->getNumberOfDecisions();
|
||||||
|
staticData->decisionToDFA.reserve(count);
|
||||||
|
for (size_t i = 0; i < count; i++) {
|
||||||
|
staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
|
||||||
|
}
|
||||||
|
python3lexerLexerStaticData = staticData.release();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Python3Lexer::Python3Lexer(CharStream *input) : Lexer(input) {
|
||||||
|
Python3Lexer::initialize();
|
||||||
|
_interpreter = new atn::LexerATNSimulator(this, *python3lexerLexerStaticData->atn, python3lexerLexerStaticData->decisionToDFA, python3lexerLexerStaticData->sharedContextCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
Python3Lexer::~Python3Lexer() {
|
||||||
|
delete _interpreter;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Python3Lexer::getGrammarFileName() const {
|
||||||
|
return "Python3Lexer.g4";
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string>& Python3Lexer::getRuleNames() const {
|
||||||
|
return python3lexerLexerStaticData->ruleNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string>& Python3Lexer::getChannelNames() const {
|
||||||
|
return python3lexerLexerStaticData->channelNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string>& Python3Lexer::getModeNames() const {
|
||||||
|
return python3lexerLexerStaticData->modeNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dfa::Vocabulary& Python3Lexer::getVocabulary() const {
|
||||||
|
return python3lexerLexerStaticData->vocabulary;
|
||||||
|
}
|
||||||
|
|
||||||
|
antlr4::atn::SerializedATNView Python3Lexer::getSerializedATN() const {
|
||||||
|
return python3lexerLexerStaticData->serializedATN;
|
||||||
|
}
|
||||||
|
|
||||||
|
const atn::ATN& Python3Lexer::getATN() const {
|
||||||
|
return *python3lexerLexerStaticData->atn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Python3Lexer::action(RuleContext *context, size_t ruleIndex, size_t actionIndex) {
|
||||||
|
switch (ruleIndex) {
|
||||||
|
case 19: NEWLINEAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 32: OPEN_PARENAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 33: CLOSE_PARENAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 39: OPEN_BRACKAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 40: CLOSE_BRACKAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 52: OPEN_BRACEAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
case 53: CLOSE_BRACEAction(antlrcpp::downCast<antlr4::RuleContext *>(context), actionIndex); break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Python3Lexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) {
|
||||||
|
switch (ruleIndex) {
|
||||||
|
case 19: return NEWLINESempred(antlrcpp::downCast<antlr4::RuleContext *>(context), predicateIndex);
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::NEWLINEAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
std::string pattern1="[^\r\n\f]+";
|
||||||
|
std::string pattern2="[\r\n\f]+";
|
||||||
|
std::regex re1(pattern1);
|
||||||
|
std::regex re2(pattern2);
|
||||||
|
std::string fmt="";
|
||||||
|
std::string newLine=regex_replace(getText(),re1,fmt);
|
||||||
|
std::string spaces = regex_replace(getText(),re2,fmt);
|
||||||
|
int next = _input->LA(1);
|
||||||
|
if (opened > 0 || next == '\r' || next == '\n' || next == '\f' || next == '#') {
|
||||||
|
// If we're inside a list or on a blank line, ignore all indents,
|
||||||
|
// dedents and line breaks.
|
||||||
|
skip();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
emit(commonToken(NEWLINE, newLine));
|
||||||
|
int indent = getIndentationCount(spaces);
|
||||||
|
int previous = indents.empty() ? 0 : indents.top();
|
||||||
|
if (indent == previous) {
|
||||||
|
// skip indents of the same size as the present indent-size
|
||||||
|
skip();
|
||||||
|
}
|
||||||
|
else if (indent > previous) {
|
||||||
|
indents.push(indent);
|
||||||
|
emit(commonToken(Python3Lexer::INDENT, spaces));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Possibly emit more than 1 DEDENT token.
|
||||||
|
while(!indents.empty() && indents.top() > indent) {
|
||||||
|
this->emit(createDedent());
|
||||||
|
indents.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::OPEN_PARENAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 1: opened++; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::CLOSE_PARENAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 2: opened--; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::OPEN_BRACKAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 3: opened++; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::CLOSE_BRACKAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 4: opened--; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::OPEN_BRACEAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 5: opened++; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Python3Lexer::CLOSE_BRACEAction(antlr4::RuleContext *context, size_t actionIndex) {
|
||||||
|
switch (actionIndex) {
|
||||||
|
case 6: opened--; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Python3Lexer::NEWLINESempred(antlr4::RuleContext *_localctx, size_t predicateIndex) {
|
||||||
|
switch (predicateIndex) {
|
||||||
|
case 0: return atStartOfInput();
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Python3Lexer::initialize() {
|
||||||
|
#if ANTLR4_USE_THREAD_LOCAL_CACHE
|
||||||
|
python3lexerLexerInitialize();
|
||||||
|
#else
|
||||||
|
::antlr4::internal::call_once(python3lexerLexerOnceFlag, python3lexerLexerInitialize);
|
||||||
|
#endif
|
||||||
|
}
|
186
generated/Python3Lexer.h
Normal file
186
generated/Python3Lexer.h
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <regex>
|
||||||
|
|
||||||
|
|
||||||
|
// Generated from Python3Lexer.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "antlr4-runtime.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Python3Lexer : public antlr4::Lexer {
|
||||||
|
public:
|
||||||
|
enum {
|
||||||
|
INDENT = 1, DEDENT = 2, STRING = 3, NUMBER = 4, INTEGER = 5, DEF = 6,
|
||||||
|
RETURN = 7, IF = 8, ELIF = 9, ELSE = 10, WHILE = 11, FOR = 12, IN = 13,
|
||||||
|
OR = 14, AND = 15, NOT = 16, NONE = 17, TRUE = 18, FALSE = 19, CONTINUE = 20,
|
||||||
|
BREAK = 21, NEWLINE = 22, NAME = 23, STRING_LITERAL = 24, BYTES_LITERAL = 25,
|
||||||
|
DECIMAL_INTEGER = 26, OCT_INTEGER = 27, HEX_INTEGER = 28, BIN_INTEGER = 29,
|
||||||
|
FLOAT_NUMBER = 30, IMAG_NUMBER = 31, DOT = 32, ELLIPSIS = 33, STAR = 34,
|
||||||
|
OPEN_PAREN = 35, CLOSE_PAREN = 36, COMMA = 37, COLON = 38, SEMI_COLON = 39,
|
||||||
|
POWER = 40, ASSIGN = 41, OPEN_BRACK = 42, CLOSE_BRACK = 43, OR_OP = 44,
|
||||||
|
XOR = 45, AND_OP = 46, LEFT_SHIFT = 47, RIGHT_SHIFT = 48, ADD = 49,
|
||||||
|
MINUS = 50, DIV = 51, MOD = 52, IDIV = 53, NOT_OP = 54, OPEN_BRACE = 55,
|
||||||
|
CLOSE_BRACE = 56, LESS_THAN = 57, GREATER_THAN = 58, EQUALS = 59, GT_EQ = 60,
|
||||||
|
LT_EQ = 61, NOT_EQ_1 = 62, NOT_EQ_2 = 63, AT = 64, ARROW = 65, ADD_ASSIGN = 66,
|
||||||
|
SUB_ASSIGN = 67, MULT_ASSIGN = 68, AT_ASSIGN = 69, DIV_ASSIGN = 70,
|
||||||
|
MOD_ASSIGN = 71, AND_ASSIGN = 72, OR_ASSIGN = 73, XOR_ASSIGN = 74, LEFT_SHIFT_ASSIGN = 75,
|
||||||
|
RIGHT_SHIFT_ASSIGN = 76, POWER_ASSIGN = 77, IDIV_ASSIGN = 78, SKIP_ = 79,
|
||||||
|
UNKNOWN_CHAR = 80
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Python3Lexer(antlr4::CharStream *input);
|
||||||
|
|
||||||
|
~Python3Lexer() override;
|
||||||
|
|
||||||
|
|
||||||
|
// A queue where extra tokens are pushed on (see the NEWLINE lexer rule).
|
||||||
|
private: std::list<antlr4::Token*> tokens ;
|
||||||
|
// The stack that keeps track of the indentation level.
|
||||||
|
private: std::stack<int> indents ;
|
||||||
|
// The amount of opened braces, brackets and parenthesis.
|
||||||
|
private: int opened = 0;
|
||||||
|
// The most recently produced token.
|
||||||
|
private: antlr4::Token* lastToken = nullptr;
|
||||||
|
|
||||||
|
public: void emit(std::unique_ptr<antlr4::Token> t) override {
|
||||||
|
token.release();
|
||||||
|
token=std::move(t);
|
||||||
|
|
||||||
|
tokens.push_back(token.get());
|
||||||
|
// std::cout<<t->toString()<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public: std::unique_ptr<antlr4::Token> nextToken() override {
|
||||||
|
// Check if the end-of-file is ahead and there are still some DEDENTS expected.
|
||||||
|
if (_input->LA(1) == EOF && !this->indents.empty()) {
|
||||||
|
// Remove any trailing EOF tokens from our buffer.
|
||||||
|
for(auto i=tokens.rbegin();i!=tokens.rend();){
|
||||||
|
auto tmp=i;
|
||||||
|
i++;
|
||||||
|
if((*tmp)->getType()==EOF){
|
||||||
|
tokens.erase(tmp.base());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// First emit an extra line break that serves as the end of the statement.
|
||||||
|
std::unique_ptr<antlr4::Token> tmp=commonToken(Python3Lexer::NEWLINE, "\n");
|
||||||
|
this->emit(std::move(tmp));
|
||||||
|
|
||||||
|
// Now emit as much DEDENT tokens as needed.
|
||||||
|
while (!indents.empty()) {
|
||||||
|
auto tmp=createDedent();
|
||||||
|
this->emit(std::move(tmp));
|
||||||
|
indents.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put the EOF back on the token stream.
|
||||||
|
this->emit(commonToken(static_cast<int>(Python3Lexer::EOF), "<EOF>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<antlr4::Token> next = Lexer::nextToken();
|
||||||
|
|
||||||
|
if (next->getChannel() == antlr4::Token::DEFAULT_CHANNEL) {
|
||||||
|
// Keep track of the last token on the default channel.
|
||||||
|
this->lastToken = next.get();
|
||||||
|
}
|
||||||
|
if (tokens.empty()) {
|
||||||
|
return std::move(next);
|
||||||
|
} else{
|
||||||
|
next.release();
|
||||||
|
auto tmp=tokens.front();
|
||||||
|
tokens.pop_front();
|
||||||
|
return std::unique_ptr<antlr4::Token>(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private: std::unique_ptr<antlr4::Token> createDedent() {
|
||||||
|
auto dedent = commonToken(Python3Lexer::DEDENT, "");
|
||||||
|
dedent->setLine(this->lastToken->getLine());
|
||||||
|
return std::move(dedent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private: std::unique_ptr<antlr4::CommonToken> commonToken(int type,std::string text) {
|
||||||
|
int stop = this->getCharIndex() - 1;
|
||||||
|
int start = text.empty() ? stop : stop - text.length() + 1;
|
||||||
|
return std::move(std::unique_ptr<antlr4::CommonToken>(new antlr4::CommonToken({ this, _input },
|
||||||
|
type,
|
||||||
|
DEFAULT_TOKEN_CHANNEL, start, stop)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculates the indentation of the provided spaces, taking the
|
||||||
|
// following rules into account:
|
||||||
|
//
|
||||||
|
// "Tabs are replaced (from left to right) by one to eight spaces
|
||||||
|
// such that the total number of characters up to and including
|
||||||
|
// the replacement is a multiple of eight [...]"
|
||||||
|
//
|
||||||
|
// -- https://docs.python.org/3.1/reference/lexical_analysis.html#indentation
|
||||||
|
static int getIndentationCount(std::string spaces) {
|
||||||
|
int count = 0;
|
||||||
|
for (char ch : spaces) {
|
||||||
|
switch (ch) {
|
||||||
|
case '\t':
|
||||||
|
count += 8 - (count % 8);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// A normal space char.
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool atStartOfInput() {
|
||||||
|
return Lexer::getCharPositionInLine() == 0 && Lexer::getLine() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string getGrammarFileName() const override;
|
||||||
|
|
||||||
|
const std::vector<std::string>& getRuleNames() const override;
|
||||||
|
|
||||||
|
const std::vector<std::string>& getChannelNames() const override;
|
||||||
|
|
||||||
|
const std::vector<std::string>& getModeNames() const override;
|
||||||
|
|
||||||
|
const antlr4::dfa::Vocabulary& getVocabulary() const override;
|
||||||
|
|
||||||
|
antlr4::atn::SerializedATNView getSerializedATN() const override;
|
||||||
|
|
||||||
|
const antlr4::atn::ATN& getATN() const override;
|
||||||
|
|
||||||
|
void action(antlr4::RuleContext *context, size_t ruleIndex, size_t actionIndex) override;
|
||||||
|
|
||||||
|
bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override;
|
||||||
|
|
||||||
|
// By default the static state used to implement the lexer is lazily initialized during the first
|
||||||
|
// call to the constructor. You can call this function if you wish to initialize the static state
|
||||||
|
// ahead of time.
|
||||||
|
static void initialize();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Individual action functions triggered by action() above.
|
||||||
|
void NEWLINEAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void OPEN_PARENAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void CLOSE_PARENAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void OPEN_BRACKAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void CLOSE_BRACKAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void OPEN_BRACEAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
void CLOSE_BRACEAction(antlr4::RuleContext *context, size_t actionIndex);
|
||||||
|
|
||||||
|
// Individual semantic predicate functions triggered by sempred() above.
|
||||||
|
bool NEWLINESempred(antlr4::RuleContext *_localctx, size_t predicateIndex);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
282
generated/Python3Lexer.interp
Normal file
282
generated/Python3Lexer.interp
Normal file
File diff suppressed because one or more lines are too long
143
generated/Python3Lexer.tokens
Normal file
143
generated/Python3Lexer.tokens
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
INDENT=1
|
||||||
|
DEDENT=2
|
||||||
|
STRING=3
|
||||||
|
NUMBER=4
|
||||||
|
INTEGER=5
|
||||||
|
DEF=6
|
||||||
|
RETURN=7
|
||||||
|
IF=8
|
||||||
|
ELIF=9
|
||||||
|
ELSE=10
|
||||||
|
WHILE=11
|
||||||
|
FOR=12
|
||||||
|
IN=13
|
||||||
|
OR=14
|
||||||
|
AND=15
|
||||||
|
NOT=16
|
||||||
|
NONE=17
|
||||||
|
TRUE=18
|
||||||
|
FALSE=19
|
||||||
|
CONTINUE=20
|
||||||
|
BREAK=21
|
||||||
|
NEWLINE=22
|
||||||
|
NAME=23
|
||||||
|
STRING_LITERAL=24
|
||||||
|
BYTES_LITERAL=25
|
||||||
|
DECIMAL_INTEGER=26
|
||||||
|
OCT_INTEGER=27
|
||||||
|
HEX_INTEGER=28
|
||||||
|
BIN_INTEGER=29
|
||||||
|
FLOAT_NUMBER=30
|
||||||
|
IMAG_NUMBER=31
|
||||||
|
DOT=32
|
||||||
|
ELLIPSIS=33
|
||||||
|
STAR=34
|
||||||
|
OPEN_PAREN=35
|
||||||
|
CLOSE_PAREN=36
|
||||||
|
COMMA=37
|
||||||
|
COLON=38
|
||||||
|
SEMI_COLON=39
|
||||||
|
POWER=40
|
||||||
|
ASSIGN=41
|
||||||
|
OPEN_BRACK=42
|
||||||
|
CLOSE_BRACK=43
|
||||||
|
OR_OP=44
|
||||||
|
XOR=45
|
||||||
|
AND_OP=46
|
||||||
|
LEFT_SHIFT=47
|
||||||
|
RIGHT_SHIFT=48
|
||||||
|
ADD=49
|
||||||
|
MINUS=50
|
||||||
|
DIV=51
|
||||||
|
MOD=52
|
||||||
|
IDIV=53
|
||||||
|
NOT_OP=54
|
||||||
|
OPEN_BRACE=55
|
||||||
|
CLOSE_BRACE=56
|
||||||
|
LESS_THAN=57
|
||||||
|
GREATER_THAN=58
|
||||||
|
EQUALS=59
|
||||||
|
GT_EQ=60
|
||||||
|
LT_EQ=61
|
||||||
|
NOT_EQ_1=62
|
||||||
|
NOT_EQ_2=63
|
||||||
|
AT=64
|
||||||
|
ARROW=65
|
||||||
|
ADD_ASSIGN=66
|
||||||
|
SUB_ASSIGN=67
|
||||||
|
MULT_ASSIGN=68
|
||||||
|
AT_ASSIGN=69
|
||||||
|
DIV_ASSIGN=70
|
||||||
|
MOD_ASSIGN=71
|
||||||
|
AND_ASSIGN=72
|
||||||
|
OR_ASSIGN=73
|
||||||
|
XOR_ASSIGN=74
|
||||||
|
LEFT_SHIFT_ASSIGN=75
|
||||||
|
RIGHT_SHIFT_ASSIGN=76
|
||||||
|
POWER_ASSIGN=77
|
||||||
|
IDIV_ASSIGN=78
|
||||||
|
SKIP_=79
|
||||||
|
UNKNOWN_CHAR=80
|
||||||
|
'def'=6
|
||||||
|
'return'=7
|
||||||
|
'if'=8
|
||||||
|
'elif'=9
|
||||||
|
'else'=10
|
||||||
|
'while'=11
|
||||||
|
'for'=12
|
||||||
|
'in'=13
|
||||||
|
'or'=14
|
||||||
|
'and'=15
|
||||||
|
'not'=16
|
||||||
|
'None'=17
|
||||||
|
'True'=18
|
||||||
|
'False'=19
|
||||||
|
'continue'=20
|
||||||
|
'break'=21
|
||||||
|
'.'=32
|
||||||
|
'...'=33
|
||||||
|
'*'=34
|
||||||
|
'('=35
|
||||||
|
')'=36
|
||||||
|
','=37
|
||||||
|
':'=38
|
||||||
|
';'=39
|
||||||
|
'**'=40
|
||||||
|
'='=41
|
||||||
|
'['=42
|
||||||
|
']'=43
|
||||||
|
'|'=44
|
||||||
|
'^'=45
|
||||||
|
'&'=46
|
||||||
|
'<<'=47
|
||||||
|
'>>'=48
|
||||||
|
'+'=49
|
||||||
|
'-'=50
|
||||||
|
'/'=51
|
||||||
|
'%'=52
|
||||||
|
'//'=53
|
||||||
|
'~'=54
|
||||||
|
'{'=55
|
||||||
|
'}'=56
|
||||||
|
'<'=57
|
||||||
|
'>'=58
|
||||||
|
'=='=59
|
||||||
|
'>='=60
|
||||||
|
'<='=61
|
||||||
|
'<>'=62
|
||||||
|
'!='=63
|
||||||
|
'@'=64
|
||||||
|
'->'=65
|
||||||
|
'+='=66
|
||||||
|
'-='=67
|
||||||
|
'*='=68
|
||||||
|
'@='=69
|
||||||
|
'/='=70
|
||||||
|
'%='=71
|
||||||
|
'&='=72
|
||||||
|
'|='=73
|
||||||
|
'^='=74
|
||||||
|
'<<='=75
|
||||||
|
'>>='=76
|
||||||
|
'**='=77
|
||||||
|
'//='=78
|
3012
generated/Python3Parser.cpp
Normal file
3012
generated/Python3Parser.cpp
Normal file
File diff suppressed because it is too large
Load Diff
661
generated/Python3Parser.h
Normal file
661
generated/Python3Parser.h
Normal file
@ -0,0 +1,661 @@
|
|||||||
|
|
||||||
|
// Generated from Python3Parser.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "antlr4-runtime.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Python3Parser : public antlr4::Parser {
|
||||||
|
public:
|
||||||
|
enum {
|
||||||
|
INDENT = 1, DEDENT = 2, STRING = 3, NUMBER = 4, INTEGER = 5, DEF = 6,
|
||||||
|
RETURN = 7, IF = 8, ELIF = 9, ELSE = 10, WHILE = 11, FOR = 12, IN = 13,
|
||||||
|
OR = 14, AND = 15, NOT = 16, NONE = 17, TRUE = 18, FALSE = 19, CONTINUE = 20,
|
||||||
|
BREAK = 21, NEWLINE = 22, NAME = 23, STRING_LITERAL = 24, BYTES_LITERAL = 25,
|
||||||
|
DECIMAL_INTEGER = 26, OCT_INTEGER = 27, HEX_INTEGER = 28, BIN_INTEGER = 29,
|
||||||
|
FLOAT_NUMBER = 30, IMAG_NUMBER = 31, DOT = 32, ELLIPSIS = 33, STAR = 34,
|
||||||
|
OPEN_PAREN = 35, CLOSE_PAREN = 36, COMMA = 37, COLON = 38, SEMI_COLON = 39,
|
||||||
|
POWER = 40, ASSIGN = 41, OPEN_BRACK = 42, CLOSE_BRACK = 43, OR_OP = 44,
|
||||||
|
XOR = 45, AND_OP = 46, LEFT_SHIFT = 47, RIGHT_SHIFT = 48, ADD = 49,
|
||||||
|
MINUS = 50, DIV = 51, MOD = 52, IDIV = 53, NOT_OP = 54, OPEN_BRACE = 55,
|
||||||
|
CLOSE_BRACE = 56, LESS_THAN = 57, GREATER_THAN = 58, EQUALS = 59, GT_EQ = 60,
|
||||||
|
LT_EQ = 61, NOT_EQ_1 = 62, NOT_EQ_2 = 63, AT = 64, ARROW = 65, ADD_ASSIGN = 66,
|
||||||
|
SUB_ASSIGN = 67, MULT_ASSIGN = 68, AT_ASSIGN = 69, DIV_ASSIGN = 70,
|
||||||
|
MOD_ASSIGN = 71, AND_ASSIGN = 72, OR_ASSIGN = 73, XOR_ASSIGN = 74, LEFT_SHIFT_ASSIGN = 75,
|
||||||
|
RIGHT_SHIFT_ASSIGN = 76, POWER_ASSIGN = 77, IDIV_ASSIGN = 78, SKIP_ = 79,
|
||||||
|
UNKNOWN_CHAR = 80
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
RuleFile_input = 0, RuleFuncdef = 1, RuleParameters = 2, RuleTypedargslist = 3,
|
||||||
|
RuleTfpdef = 4, RuleStmt = 5, RuleSimple_stmt = 6, RuleSmall_stmt = 7,
|
||||||
|
RuleExpr_stmt = 8, RuleAugassign = 9, RuleFlow_stmt = 10, RuleBreak_stmt = 11,
|
||||||
|
RuleContinue_stmt = 12, RuleReturn_stmt = 13, RuleCompound_stmt = 14,
|
||||||
|
RuleIf_stmt = 15, RuleWhile_stmt = 16, RuleSuite = 17, RuleTest = 18,
|
||||||
|
RuleOr_test = 19, RuleAnd_test = 20, RuleNot_test = 21, RuleComparison = 22,
|
||||||
|
RuleComp_op = 23, RuleArith_expr = 24, RuleAddorsub_op = 25, RuleTerm = 26,
|
||||||
|
RuleMuldivmod_op = 27, RuleFactor = 28, RuleAtom_expr = 29, RuleTrailer = 30,
|
||||||
|
RuleAtom = 31, RuleTestlist = 32, RuleArglist = 33, RuleArgument = 34
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit Python3Parser(antlr4::TokenStream *input);
|
||||||
|
|
||||||
|
Python3Parser(antlr4::TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options);
|
||||||
|
|
||||||
|
~Python3Parser() override;
|
||||||
|
|
||||||
|
std::string getGrammarFileName() const override;
|
||||||
|
|
||||||
|
const antlr4::atn::ATN& getATN() const override;
|
||||||
|
|
||||||
|
const std::vector<std::string>& getRuleNames() const override;
|
||||||
|
|
||||||
|
const antlr4::dfa::Vocabulary& getVocabulary() const override;
|
||||||
|
|
||||||
|
antlr4::atn::SerializedATNView getSerializedATN() const override;
|
||||||
|
|
||||||
|
|
||||||
|
class File_inputContext;
|
||||||
|
class FuncdefContext;
|
||||||
|
class ParametersContext;
|
||||||
|
class TypedargslistContext;
|
||||||
|
class TfpdefContext;
|
||||||
|
class StmtContext;
|
||||||
|
class Simple_stmtContext;
|
||||||
|
class Small_stmtContext;
|
||||||
|
class Expr_stmtContext;
|
||||||
|
class AugassignContext;
|
||||||
|
class Flow_stmtContext;
|
||||||
|
class Break_stmtContext;
|
||||||
|
class Continue_stmtContext;
|
||||||
|
class Return_stmtContext;
|
||||||
|
class Compound_stmtContext;
|
||||||
|
class If_stmtContext;
|
||||||
|
class While_stmtContext;
|
||||||
|
class SuiteContext;
|
||||||
|
class TestContext;
|
||||||
|
class Or_testContext;
|
||||||
|
class And_testContext;
|
||||||
|
class Not_testContext;
|
||||||
|
class ComparisonContext;
|
||||||
|
class Comp_opContext;
|
||||||
|
class Arith_exprContext;
|
||||||
|
class Addorsub_opContext;
|
||||||
|
class TermContext;
|
||||||
|
class Muldivmod_opContext;
|
||||||
|
class FactorContext;
|
||||||
|
class Atom_exprContext;
|
||||||
|
class TrailerContext;
|
||||||
|
class AtomContext;
|
||||||
|
class TestlistContext;
|
||||||
|
class ArglistContext;
|
||||||
|
class ArgumentContext;
|
||||||
|
|
||||||
|
class File_inputContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
File_inputContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *EOF();
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> NEWLINE();
|
||||||
|
antlr4::tree::TerminalNode* NEWLINE(size_t i);
|
||||||
|
std::vector<StmtContext *> stmt();
|
||||||
|
StmtContext* stmt(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
File_inputContext* file_input();
|
||||||
|
|
||||||
|
class FuncdefContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
FuncdefContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *DEF();
|
||||||
|
antlr4::tree::TerminalNode *NAME();
|
||||||
|
ParametersContext *parameters();
|
||||||
|
antlr4::tree::TerminalNode *COLON();
|
||||||
|
SuiteContext *suite();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
FuncdefContext* funcdef();
|
||||||
|
|
||||||
|
class ParametersContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
ParametersContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *OPEN_PAREN();
|
||||||
|
antlr4::tree::TerminalNode *CLOSE_PAREN();
|
||||||
|
TypedargslistContext *typedargslist();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ParametersContext* parameters();
|
||||||
|
|
||||||
|
class TypedargslistContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TypedargslistContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<TfpdefContext *> tfpdef();
|
||||||
|
TfpdefContext* tfpdef(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode* ASSIGN(size_t i);
|
||||||
|
std::vector<TestContext *> test();
|
||||||
|
TestContext* test(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> COMMA();
|
||||||
|
antlr4::tree::TerminalNode* COMMA(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TypedargslistContext* typedargslist();
|
||||||
|
|
||||||
|
class TfpdefContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TfpdefContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *NAME();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TfpdefContext* tfpdef();
|
||||||
|
|
||||||
|
class StmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Simple_stmtContext *simple_stmt();
|
||||||
|
Compound_stmtContext *compound_stmt();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
StmtContext* stmt();
|
||||||
|
|
||||||
|
class Simple_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Simple_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Small_stmtContext *small_stmt();
|
||||||
|
antlr4::tree::TerminalNode *NEWLINE();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Simple_stmtContext* simple_stmt();
|
||||||
|
|
||||||
|
class Small_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Small_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Expr_stmtContext *expr_stmt();
|
||||||
|
Flow_stmtContext *flow_stmt();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Small_stmtContext* small_stmt();
|
||||||
|
|
||||||
|
class Expr_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Expr_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<TestlistContext *> testlist();
|
||||||
|
TestlistContext* testlist(size_t i);
|
||||||
|
AugassignContext *augassign();
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode* ASSIGN(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Expr_stmtContext* expr_stmt();
|
||||||
|
|
||||||
|
class AugassignContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
AugassignContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *ADD_ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode *SUB_ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode *MULT_ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode *DIV_ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode *IDIV_ASSIGN();
|
||||||
|
antlr4::tree::TerminalNode *MOD_ASSIGN();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
AugassignContext* augassign();
|
||||||
|
|
||||||
|
class Flow_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Flow_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Break_stmtContext *break_stmt();
|
||||||
|
Continue_stmtContext *continue_stmt();
|
||||||
|
Return_stmtContext *return_stmt();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Flow_stmtContext* flow_stmt();
|
||||||
|
|
||||||
|
class Break_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Break_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *BREAK();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Break_stmtContext* break_stmt();
|
||||||
|
|
||||||
|
class Continue_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Continue_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *CONTINUE();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Continue_stmtContext* continue_stmt();
|
||||||
|
|
||||||
|
class Return_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Return_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *RETURN();
|
||||||
|
TestlistContext *testlist();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Return_stmtContext* return_stmt();
|
||||||
|
|
||||||
|
class Compound_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Compound_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
If_stmtContext *if_stmt();
|
||||||
|
While_stmtContext *while_stmt();
|
||||||
|
FuncdefContext *funcdef();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Compound_stmtContext* compound_stmt();
|
||||||
|
|
||||||
|
class If_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
If_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *IF();
|
||||||
|
std::vector<TestContext *> test();
|
||||||
|
TestContext* test(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> COLON();
|
||||||
|
antlr4::tree::TerminalNode* COLON(size_t i);
|
||||||
|
std::vector<SuiteContext *> suite();
|
||||||
|
SuiteContext* suite(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> ELIF();
|
||||||
|
antlr4::tree::TerminalNode* ELIF(size_t i);
|
||||||
|
antlr4::tree::TerminalNode *ELSE();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
If_stmtContext* if_stmt();
|
||||||
|
|
||||||
|
class While_stmtContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
While_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *WHILE();
|
||||||
|
TestContext *test();
|
||||||
|
antlr4::tree::TerminalNode *COLON();
|
||||||
|
SuiteContext *suite();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
While_stmtContext* while_stmt();
|
||||||
|
|
||||||
|
class SuiteContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
SuiteContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Simple_stmtContext *simple_stmt();
|
||||||
|
antlr4::tree::TerminalNode *NEWLINE();
|
||||||
|
antlr4::tree::TerminalNode *INDENT();
|
||||||
|
antlr4::tree::TerminalNode *DEDENT();
|
||||||
|
std::vector<StmtContext *> stmt();
|
||||||
|
StmtContext* stmt(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
SuiteContext* suite();
|
||||||
|
|
||||||
|
class TestContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TestContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
Or_testContext *or_test();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TestContext* test();
|
||||||
|
|
||||||
|
class Or_testContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Or_testContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<And_testContext *> and_test();
|
||||||
|
And_testContext* and_test(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> OR();
|
||||||
|
antlr4::tree::TerminalNode* OR(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Or_testContext* or_test();
|
||||||
|
|
||||||
|
class And_testContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
And_testContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<Not_testContext *> not_test();
|
||||||
|
Not_testContext* not_test(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> AND();
|
||||||
|
antlr4::tree::TerminalNode* AND(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
And_testContext* and_test();
|
||||||
|
|
||||||
|
class Not_testContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Not_testContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *NOT();
|
||||||
|
Not_testContext *not_test();
|
||||||
|
ComparisonContext *comparison();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Not_testContext* not_test();
|
||||||
|
|
||||||
|
class ComparisonContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
ComparisonContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<Arith_exprContext *> arith_expr();
|
||||||
|
Arith_exprContext* arith_expr(size_t i);
|
||||||
|
std::vector<Comp_opContext *> comp_op();
|
||||||
|
Comp_opContext* comp_op(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ComparisonContext* comparison();
|
||||||
|
|
||||||
|
class Comp_opContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Comp_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *LESS_THAN();
|
||||||
|
antlr4::tree::TerminalNode *GREATER_THAN();
|
||||||
|
antlr4::tree::TerminalNode *EQUALS();
|
||||||
|
antlr4::tree::TerminalNode *GT_EQ();
|
||||||
|
antlr4::tree::TerminalNode *LT_EQ();
|
||||||
|
antlr4::tree::TerminalNode *NOT_EQ_2();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Comp_opContext* comp_op();
|
||||||
|
|
||||||
|
class Arith_exprContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Arith_exprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<TermContext *> term();
|
||||||
|
TermContext* term(size_t i);
|
||||||
|
std::vector<Addorsub_opContext *> addorsub_op();
|
||||||
|
Addorsub_opContext* addorsub_op(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Arith_exprContext* arith_expr();
|
||||||
|
|
||||||
|
class Addorsub_opContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Addorsub_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *ADD();
|
||||||
|
antlr4::tree::TerminalNode *MINUS();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Addorsub_opContext* addorsub_op();
|
||||||
|
|
||||||
|
class TermContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TermContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<FactorContext *> factor();
|
||||||
|
FactorContext* factor(size_t i);
|
||||||
|
std::vector<Muldivmod_opContext *> muldivmod_op();
|
||||||
|
Muldivmod_opContext* muldivmod_op(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TermContext* term();
|
||||||
|
|
||||||
|
class Muldivmod_opContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Muldivmod_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *STAR();
|
||||||
|
antlr4::tree::TerminalNode *DIV();
|
||||||
|
antlr4::tree::TerminalNode *IDIV();
|
||||||
|
antlr4::tree::TerminalNode *MOD();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Muldivmod_opContext* muldivmod_op();
|
||||||
|
|
||||||
|
class FactorContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
FactorContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
FactorContext *factor();
|
||||||
|
antlr4::tree::TerminalNode *ADD();
|
||||||
|
antlr4::tree::TerminalNode *MINUS();
|
||||||
|
Atom_exprContext *atom_expr();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
FactorContext* factor();
|
||||||
|
|
||||||
|
class Atom_exprContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
Atom_exprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
AtomContext *atom();
|
||||||
|
TrailerContext *trailer();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Atom_exprContext* atom_expr();
|
||||||
|
|
||||||
|
class TrailerContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TrailerContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *OPEN_PAREN();
|
||||||
|
antlr4::tree::TerminalNode *CLOSE_PAREN();
|
||||||
|
ArglistContext *arglist();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TrailerContext* trailer();
|
||||||
|
|
||||||
|
class AtomContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
AtomContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
antlr4::tree::TerminalNode *NAME();
|
||||||
|
antlr4::tree::TerminalNode *NUMBER();
|
||||||
|
antlr4::tree::TerminalNode *NONE();
|
||||||
|
antlr4::tree::TerminalNode *TRUE();
|
||||||
|
antlr4::tree::TerminalNode *FALSE();
|
||||||
|
antlr4::tree::TerminalNode *OPEN_PAREN();
|
||||||
|
TestContext *test();
|
||||||
|
antlr4::tree::TerminalNode *CLOSE_PAREN();
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> STRING();
|
||||||
|
antlr4::tree::TerminalNode* STRING(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
AtomContext* atom();
|
||||||
|
|
||||||
|
class TestlistContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
TestlistContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<TestContext *> test();
|
||||||
|
TestContext* test(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> COMMA();
|
||||||
|
antlr4::tree::TerminalNode* COMMA(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TestlistContext* testlist();
|
||||||
|
|
||||||
|
class ArglistContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
ArglistContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<ArgumentContext *> argument();
|
||||||
|
ArgumentContext* argument(size_t i);
|
||||||
|
std::vector<antlr4::tree::TerminalNode *> COMMA();
|
||||||
|
antlr4::tree::TerminalNode* COMMA(size_t i);
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ArglistContext* arglist();
|
||||||
|
|
||||||
|
class ArgumentContext : public antlr4::ParserRuleContext {
|
||||||
|
public:
|
||||||
|
ArgumentContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
||||||
|
virtual size_t getRuleIndex() const override;
|
||||||
|
std::vector<TestContext *> test();
|
||||||
|
TestContext* test(size_t i);
|
||||||
|
antlr4::tree::TerminalNode *ASSIGN();
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ArgumentContext* argument();
|
||||||
|
|
||||||
|
|
||||||
|
// By default the static state used to implement the parser is lazily initialized during the first
|
||||||
|
// call to the constructor. You can call this function if you wish to initialize the static state
|
||||||
|
// ahead of time.
|
||||||
|
static void initialize();
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
206
generated/Python3Parser.interp
Normal file
206
generated/Python3Parser.interp
Normal file
File diff suppressed because one or more lines are too long
143
generated/Python3Parser.tokens
Normal file
143
generated/Python3Parser.tokens
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
INDENT=1
|
||||||
|
DEDENT=2
|
||||||
|
STRING=3
|
||||||
|
NUMBER=4
|
||||||
|
INTEGER=5
|
||||||
|
DEF=6
|
||||||
|
RETURN=7
|
||||||
|
IF=8
|
||||||
|
ELIF=9
|
||||||
|
ELSE=10
|
||||||
|
WHILE=11
|
||||||
|
FOR=12
|
||||||
|
IN=13
|
||||||
|
OR=14
|
||||||
|
AND=15
|
||||||
|
NOT=16
|
||||||
|
NONE=17
|
||||||
|
TRUE=18
|
||||||
|
FALSE=19
|
||||||
|
CONTINUE=20
|
||||||
|
BREAK=21
|
||||||
|
NEWLINE=22
|
||||||
|
NAME=23
|
||||||
|
STRING_LITERAL=24
|
||||||
|
BYTES_LITERAL=25
|
||||||
|
DECIMAL_INTEGER=26
|
||||||
|
OCT_INTEGER=27
|
||||||
|
HEX_INTEGER=28
|
||||||
|
BIN_INTEGER=29
|
||||||
|
FLOAT_NUMBER=30
|
||||||
|
IMAG_NUMBER=31
|
||||||
|
DOT=32
|
||||||
|
ELLIPSIS=33
|
||||||
|
STAR=34
|
||||||
|
OPEN_PAREN=35
|
||||||
|
CLOSE_PAREN=36
|
||||||
|
COMMA=37
|
||||||
|
COLON=38
|
||||||
|
SEMI_COLON=39
|
||||||
|
POWER=40
|
||||||
|
ASSIGN=41
|
||||||
|
OPEN_BRACK=42
|
||||||
|
CLOSE_BRACK=43
|
||||||
|
OR_OP=44
|
||||||
|
XOR=45
|
||||||
|
AND_OP=46
|
||||||
|
LEFT_SHIFT=47
|
||||||
|
RIGHT_SHIFT=48
|
||||||
|
ADD=49
|
||||||
|
MINUS=50
|
||||||
|
DIV=51
|
||||||
|
MOD=52
|
||||||
|
IDIV=53
|
||||||
|
NOT_OP=54
|
||||||
|
OPEN_BRACE=55
|
||||||
|
CLOSE_BRACE=56
|
||||||
|
LESS_THAN=57
|
||||||
|
GREATER_THAN=58
|
||||||
|
EQUALS=59
|
||||||
|
GT_EQ=60
|
||||||
|
LT_EQ=61
|
||||||
|
NOT_EQ_1=62
|
||||||
|
NOT_EQ_2=63
|
||||||
|
AT=64
|
||||||
|
ARROW=65
|
||||||
|
ADD_ASSIGN=66
|
||||||
|
SUB_ASSIGN=67
|
||||||
|
MULT_ASSIGN=68
|
||||||
|
AT_ASSIGN=69
|
||||||
|
DIV_ASSIGN=70
|
||||||
|
MOD_ASSIGN=71
|
||||||
|
AND_ASSIGN=72
|
||||||
|
OR_ASSIGN=73
|
||||||
|
XOR_ASSIGN=74
|
||||||
|
LEFT_SHIFT_ASSIGN=75
|
||||||
|
RIGHT_SHIFT_ASSIGN=76
|
||||||
|
POWER_ASSIGN=77
|
||||||
|
IDIV_ASSIGN=78
|
||||||
|
SKIP_=79
|
||||||
|
UNKNOWN_CHAR=80
|
||||||
|
'def'=6
|
||||||
|
'return'=7
|
||||||
|
'if'=8
|
||||||
|
'elif'=9
|
||||||
|
'else'=10
|
||||||
|
'while'=11
|
||||||
|
'for'=12
|
||||||
|
'in'=13
|
||||||
|
'or'=14
|
||||||
|
'and'=15
|
||||||
|
'not'=16
|
||||||
|
'None'=17
|
||||||
|
'True'=18
|
||||||
|
'False'=19
|
||||||
|
'continue'=20
|
||||||
|
'break'=21
|
||||||
|
'.'=32
|
||||||
|
'...'=33
|
||||||
|
'*'=34
|
||||||
|
'('=35
|
||||||
|
')'=36
|
||||||
|
','=37
|
||||||
|
':'=38
|
||||||
|
';'=39
|
||||||
|
'**'=40
|
||||||
|
'='=41
|
||||||
|
'['=42
|
||||||
|
']'=43
|
||||||
|
'|'=44
|
||||||
|
'^'=45
|
||||||
|
'&'=46
|
||||||
|
'<<'=47
|
||||||
|
'>>'=48
|
||||||
|
'+'=49
|
||||||
|
'-'=50
|
||||||
|
'/'=51
|
||||||
|
'%'=52
|
||||||
|
'//'=53
|
||||||
|
'~'=54
|
||||||
|
'{'=55
|
||||||
|
'}'=56
|
||||||
|
'<'=57
|
||||||
|
'>'=58
|
||||||
|
'=='=59
|
||||||
|
'>='=60
|
||||||
|
'<='=61
|
||||||
|
'<>'=62
|
||||||
|
'!='=63
|
||||||
|
'@'=64
|
||||||
|
'->'=65
|
||||||
|
'+='=66
|
||||||
|
'-='=67
|
||||||
|
'*='=68
|
||||||
|
'@='=69
|
||||||
|
'/='=70
|
||||||
|
'%='=71
|
||||||
|
'&='=72
|
||||||
|
'|='=73
|
||||||
|
'^='=74
|
||||||
|
'<<='=75
|
||||||
|
'>>='=76
|
||||||
|
'**='=77
|
||||||
|
'//='=78
|
7
generated/Python3ParserBaseVisitor.cpp
Normal file
7
generated/Python3ParserBaseVisitor.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
// Generated from Python3Parser.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
|
||||||
|
#include "Python3ParserBaseVisitor.h"
|
||||||
|
|
||||||
|
|
160
generated/Python3ParserBaseVisitor.h
Normal file
160
generated/Python3ParserBaseVisitor.h
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
|
||||||
|
// Generated from Python3Parser.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "antlr4-runtime.h"
|
||||||
|
#include "Python3ParserVisitor.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class provides an empty implementation of Python3ParserVisitor, which can be
|
||||||
|
* extended to create a visitor which only needs to handle a subset of the available methods.
|
||||||
|
*/
|
||||||
|
class Python3ParserBaseVisitor : public Python3ParserVisitor {
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual std::any visitFile_input(Python3Parser::File_inputContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitFuncdef(Python3Parser::FuncdefContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitParameters(Python3Parser::ParametersContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTypedargslist(Python3Parser::TypedargslistContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTfpdef(Python3Parser::TfpdefContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitStmt(Python3Parser::StmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitSimple_stmt(Python3Parser::Simple_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitSmall_stmt(Python3Parser::Small_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitExpr_stmt(Python3Parser::Expr_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitAugassign(Python3Parser::AugassignContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitBreak_stmt(Python3Parser::Break_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitContinue_stmt(Python3Parser::Continue_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitCompound_stmt(Python3Parser::Compound_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitIf_stmt(Python3Parser::If_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitWhile_stmt(Python3Parser::While_stmtContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitSuite(Python3Parser::SuiteContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTest(Python3Parser::TestContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitOr_test(Python3Parser::Or_testContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitAnd_test(Python3Parser::And_testContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitNot_test(Python3Parser::Not_testContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitComparison(Python3Parser::ComparisonContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitComp_op(Python3Parser::Comp_opContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitArith_expr(Python3Parser::Arith_exprContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitAddorsub_op(Python3Parser::Addorsub_opContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTerm(Python3Parser::TermContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitMuldivmod_op(Python3Parser::Muldivmod_opContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitFactor(Python3Parser::FactorContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitAtom_expr(Python3Parser::Atom_exprContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTrailer(Python3Parser::TrailerContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitAtom(Python3Parser::AtomContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitTestlist(Python3Parser::TestlistContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitArglist(Python3Parser::ArglistContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::any visitArgument(Python3Parser::ArgumentContext *ctx) override {
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
7
generated/Python3ParserVisitor.cpp
Normal file
7
generated/Python3ParserVisitor.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
// Generated from Python3Parser.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
|
||||||
|
#include "Python3ParserVisitor.h"
|
||||||
|
|
||||||
|
|
94
generated/Python3ParserVisitor.h
Normal file
94
generated/Python3ParserVisitor.h
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
|
||||||
|
// Generated from Python3Parser.g4 by ANTLR 4.13.1
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "antlr4-runtime.h"
|
||||||
|
#include "Python3Parser.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class defines an abstract visitor for a parse tree
|
||||||
|
* produced by Python3Parser.
|
||||||
|
*/
|
||||||
|
class Python3ParserVisitor : public antlr4::tree::AbstractParseTreeVisitor {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visit parse trees produced by Python3Parser.
|
||||||
|
*/
|
||||||
|
virtual std::any visitFile_input(Python3Parser::File_inputContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitFuncdef(Python3Parser::FuncdefContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitParameters(Python3Parser::ParametersContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTypedargslist(Python3Parser::TypedargslistContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTfpdef(Python3Parser::TfpdefContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitStmt(Python3Parser::StmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitSimple_stmt(Python3Parser::Simple_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitSmall_stmt(Python3Parser::Small_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitExpr_stmt(Python3Parser::Expr_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitAugassign(Python3Parser::AugassignContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitFlow_stmt(Python3Parser::Flow_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitBreak_stmt(Python3Parser::Break_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitContinue_stmt(Python3Parser::Continue_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitReturn_stmt(Python3Parser::Return_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitCompound_stmt(Python3Parser::Compound_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitIf_stmt(Python3Parser::If_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitWhile_stmt(Python3Parser::While_stmtContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitSuite(Python3Parser::SuiteContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTest(Python3Parser::TestContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitOr_test(Python3Parser::Or_testContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitAnd_test(Python3Parser::And_testContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitNot_test(Python3Parser::Not_testContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitComparison(Python3Parser::ComparisonContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitComp_op(Python3Parser::Comp_opContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitArith_expr(Python3Parser::Arith_exprContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitAddorsub_op(Python3Parser::Addorsub_opContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTerm(Python3Parser::TermContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitMuldivmod_op(Python3Parser::Muldivmod_opContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitFactor(Python3Parser::FactorContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitAtom_expr(Python3Parser::Atom_exprContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTrailer(Python3Parser::TrailerContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitAtom(Python3Parser::AtomContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitTestlist(Python3Parser::TestlistContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitArglist(Python3Parser::ArglistContext *context) = 0;
|
||||||
|
|
||||||
|
virtual std::any visitArgument(Python3Parser::ArgumentContext *context) = 0;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
92
readme.md
Normal file
92
readme.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# 🐍Python Interpreter
|
||||||
|
|
||||||
|
## 🧾 目录
|
||||||
|
|
||||||
|
- [✨ 简介](#✨简介)
|
||||||
|
- [📚 作业说明](#📚作业说明)
|
||||||
|
- [⚠️ 实现要求](#⚠️实现要求)
|
||||||
|
- [🛎️ 评测方式](#🛎️评测方式)
|
||||||
|
- [提交方式](#提交方式)
|
||||||
|
- [测试点分布](#测试点分布)
|
||||||
|
- [💎Bonus](#💎Bonus)
|
||||||
|
- [📝Guide](#📝Guide)
|
||||||
|
- [📄 语法](#📄语法)
|
||||||
|
- [⚙️ANTLR](#⚙️Antlr)
|
||||||
|
- [🧪 实现](#🧪实现)
|
||||||
|
- [📇 索引](#📇索引)
|
||||||
|
|
||||||
|
## ✨简介
|
||||||
|
|
||||||
|
本次大作业要求你们实现一个简单的 Python 解释器,接受简化过的 Python 代码,按照控制流执行代码。
|
||||||
|
|
||||||
|
> 解释器(Interpreter),是一种计算机程序,能够把解释型语言解释执行。
|
||||||
|
> 解释器就像一位“中间人”。解释器边解释边执行,因此依赖于解释器的程序运行速度比较缓慢。
|
||||||
|
> 解释器的好处是它不需要重新编译整个程序,从而减轻了每次程序更新后编译的负担。
|
||||||
|
> 相对的,编译器一次性将所有源代码编译成二进制文件,执行时无需依赖编译器或其他额外的程序。
|
||||||
|
|
||||||
|
## 📚作业说明
|
||||||
|
|
||||||
|
### ⚠️实现要求
|
||||||
|
|
||||||
|
1. 使用 OOP 实现 Python Interpreter,锻炼 OOP 能力。若不按照要求会在 code review 时扣除一定分数。
|
||||||
|
2. 作业不低于按数据总的通过比例线性给分。助教会下发部分数据在作业仓库中,还有另一部分数据不会提供。
|
||||||
|
这意味着你需要自己手写测试数据给自己测试,如果你对自己造的数据是否满足要求有疑问,请及时向助教询问。
|
||||||
|
3. 首先完成 Prework 里面的前置任务。前置任务不计分,但要求**必做**。如果不完成前置任务则 Python 解释器将没有分数。
|
||||||
|
|
||||||
|
### 🛎️评测方式
|
||||||
|
|
||||||
|
使用 `git` 在 OJ 上进行提交。OJ 将根据根目录下的 `CMakeLists.txt` 来构建你的程序。
|
||||||
|
|
||||||
|
#### 提交方式
|
||||||
|
|
||||||
|
在代码提交页面输入你 `git` 仓库的地址
|
||||||
|
|
||||||
|
#### 测试点分布
|
||||||
|
|
||||||
|
测试点分布如下:
|
||||||
|
|
||||||
|
```text
|
||||||
|
BigIntegerTest: 1 - 20
|
||||||
|
Sample: 21 - 34
|
||||||
|
AdvancedTest: 35 - 52
|
||||||
|
ComplexTest: 53 - 56
|
||||||
|
CornerTest: 57 - 66
|
||||||
|
```
|
||||||
|
|
||||||
|
### 💎Bonus
|
||||||
|
|
||||||
|
1. 修改 `.g4` 与 `Evalvisitor` 来支持更高级的语法规则
|
||||||
|
2. 增加语法检查
|
||||||
|
3. 不使用 Antlr4,自己实现 Lexer 和 Parser
|
||||||
|
|
||||||
|
实现任何的 bonus 之前,都请与助教联系。
|
||||||
|
|
||||||
|
## 📝Guide
|
||||||
|
|
||||||
|
关于本次大作业的所有问题,都可以在 [Q&A](https://notes.sjtu.edu.cn/4RNcROAgTHmWhs1ZX4OJ7w) 中或者本仓库的 issue 中提问。助教会更新在 Q&A 和文档中。
|
||||||
|
|
||||||
|
### 📄语法
|
||||||
|
|
||||||
|
本次作业使用的 Python 的语法在 [Grammar](docs/grammar.md) 查看。
|
||||||
|
|
||||||
|
### ⚙️ANTLR
|
||||||
|
|
||||||
|
关于 ANTLR 的安装与使用,详见 [ANTLR](docs/antlr_guide.md)。
|
||||||
|
|
||||||
|
### 🧪实现
|
||||||
|
|
||||||
|
如果你想知道从何下手,可以参考 [完成流程](docs/workflow_details.md) 与 [实现细节](docs/implementation_details.md)。
|
||||||
|
|
||||||
|
### 📇索引
|
||||||
|
|
||||||
|
如果你想查看一段 Python 代码,通过 ANTLR 生成的语法树的结构,参考:[1](docs/antlr_guide.md#antlr-配置)。
|
||||||
|
|
||||||
|
如果你想知道 `std::any` 是什么,参考:[完成流程](docs/workflow_details.md) 和 [前置任务](Prework/README.md)。
|
||||||
|
|
||||||
|
如果你想知道 `ctx` 大致是什么,参考:[实现细节](docs/implementation_details.md)。
|
||||||
|
|
||||||
|
如果你想知道怎么遍历树,参考:[4](docs/workflow_details.md#step-4-完成-srcevalvisitorh)。
|
||||||
|
|
||||||
|
如果你想看一个 demo 来理解这个作业,参考:[5](https://github.com/ACMClassCourse-2021/Apple-Pie-Interpreter)。
|
||||||
|
|
||||||
|
还有一些 [小建议](docs/suggestions.md)。
|
902
resources/Python3Lexer.g4
Normal file
902
resources/Python3Lexer.g4
Normal file
@ -0,0 +1,902 @@
|
|||||||
|
lexer grammar Python3Lexer;
|
||||||
|
tokens {
|
||||||
|
INDENT,
|
||||||
|
DEDENT
|
||||||
|
}
|
||||||
|
|
||||||
|
@header {
|
||||||
|
#include <list>
|
||||||
|
#include <regex>
|
||||||
|
}
|
||||||
|
|
||||||
|
@lexer::members {
|
||||||
|
// A queue where extra tokens are pushed on (see the NEWLINE lexer rule).
|
||||||
|
private: std::list<antlr4::Token*> tokens ;
|
||||||
|
// The stack that keeps track of the indentation level.
|
||||||
|
private: std::stack<int> indents ;
|
||||||
|
// The amount of opened braces, brackets and parenthesis.
|
||||||
|
private: int opened = 0;
|
||||||
|
// The most recently produced token.
|
||||||
|
private: antlr4::Token* lastToken = nullptr;
|
||||||
|
|
||||||
|
public: void emit(std::unique_ptr<antlr4::Token> t) override {
|
||||||
|
token.release();
|
||||||
|
token=std::move(t);
|
||||||
|
|
||||||
|
tokens.push_back(token.get());
|
||||||
|
// std::cout<<t->toString()<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public: std::unique_ptr<antlr4::Token> nextToken() override {
|
||||||
|
// Check if the end-of-file is ahead and there are still some DEDENTS expected.
|
||||||
|
if (_input->LA(1) == EOF && !this->indents.empty()) {
|
||||||
|
// Remove any trailing EOF tokens from our buffer.
|
||||||
|
for(auto i=tokens.rbegin();i!=tokens.rend();){
|
||||||
|
auto tmp=i;
|
||||||
|
i++;
|
||||||
|
if((*tmp)->getType()==EOF){
|
||||||
|
tokens.erase(tmp.base());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// First emit an extra line break that serves as the end of the statement.
|
||||||
|
std::unique_ptr<antlr4::Token> tmp=commonToken(Python3Lexer::NEWLINE, "\n");
|
||||||
|
this->emit(std::move(tmp));
|
||||||
|
|
||||||
|
// Now emit as much DEDENT tokens as needed.
|
||||||
|
while (!indents.empty()) {
|
||||||
|
auto tmp=createDedent();
|
||||||
|
this->emit(std::move(tmp));
|
||||||
|
indents.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put the EOF back on the token stream.
|
||||||
|
this->emit(commonToken(static_cast<int>(Python3Lexer::EOF), "<EOF>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<antlr4::Token> next = Lexer::nextToken();
|
||||||
|
|
||||||
|
if (next->getChannel() == antlr4::Token::DEFAULT_CHANNEL) {
|
||||||
|
// Keep track of the last token on the default channel.
|
||||||
|
this->lastToken = next.get();
|
||||||
|
}
|
||||||
|
if (tokens.empty()) {
|
||||||
|
return std::move(next);
|
||||||
|
} else{
|
||||||
|
next.release();
|
||||||
|
auto tmp=tokens.front();
|
||||||
|
tokens.pop_front();
|
||||||
|
return std::unique_ptr<antlr4::Token>(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private: std::unique_ptr<antlr4::Token> createDedent() {
|
||||||
|
auto dedent = commonToken(Python3Lexer::DEDENT, "");
|
||||||
|
dedent->setLine(this->lastToken->getLine());
|
||||||
|
return std::move(dedent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private: std::unique_ptr<antlr4::CommonToken> commonToken(int type,std::string text) {
|
||||||
|
int stop = this->getCharIndex() - 1;
|
||||||
|
int start = text.empty() ? stop : stop - text.length() + 1;
|
||||||
|
return std::move(std::unique_ptr<antlr4::CommonToken>(new antlr4::CommonToken({ this, _input },
|
||||||
|
type,
|
||||||
|
DEFAULT_TOKEN_CHANNEL, start, stop)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculates the indentation of the provided spaces, taking the
|
||||||
|
// following rules into account:
|
||||||
|
//
|
||||||
|
// "Tabs are replaced (from left to right) by one to eight spaces
|
||||||
|
// such that the total number of characters up to and including
|
||||||
|
// the replacement is a multiple of eight [...]"
|
||||||
|
//
|
||||||
|
// -- https://docs.python.org/3.1/reference/lexical_analysis.html#indentation
|
||||||
|
static int getIndentationCount(std::string spaces) {
|
||||||
|
int count = 0;
|
||||||
|
for (char ch : spaces) {
|
||||||
|
switch (ch) {
|
||||||
|
case '\t':
|
||||||
|
count += 8 - (count % 8);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// A normal space char.
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool atStartOfInput() {
|
||||||
|
return Lexer::getCharPositionInLine() == 0 && Lexer::getLine() == 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
STRING: STRING_LITERAL | BYTES_LITERAL;
|
||||||
|
|
||||||
|
NUMBER: INTEGER | FLOAT_NUMBER | IMAG_NUMBER;
|
||||||
|
|
||||||
|
INTEGER:
|
||||||
|
DECIMAL_INTEGER
|
||||||
|
| OCT_INTEGER
|
||||||
|
| HEX_INTEGER
|
||||||
|
| BIN_INTEGER;
|
||||||
|
|
||||||
|
DEF: 'def';
|
||||||
|
RETURN: 'return';
|
||||||
|
IF: 'if';
|
||||||
|
ELIF: 'elif';
|
||||||
|
ELSE: 'else';
|
||||||
|
WHILE: 'while';
|
||||||
|
FOR: 'for';
|
||||||
|
IN: 'in';
|
||||||
|
OR: 'or';
|
||||||
|
AND: 'and';
|
||||||
|
NOT: 'not';
|
||||||
|
NONE: 'None';
|
||||||
|
TRUE: 'True';
|
||||||
|
FALSE: 'False';
|
||||||
|
CONTINUE: 'continue';
|
||||||
|
BREAK: 'break';
|
||||||
|
|
||||||
|
NEWLINE: (
|
||||||
|
{atStartOfInput()}? SPACES
|
||||||
|
| ( '\r'? '\n' | '\r' | '\f') SPACES?
|
||||||
|
) {
|
||||||
|
{
|
||||||
|
std::string pattern1="[^\r\n\f]+";
|
||||||
|
std::string pattern2="[\r\n\f]+";
|
||||||
|
std::regex re1(pattern1);
|
||||||
|
std::regex re2(pattern2);
|
||||||
|
std::string fmt="";
|
||||||
|
std::string newLine=regex_replace(getText(),re1,fmt);
|
||||||
|
std::string spaces = regex_replace(getText(),re2,fmt);
|
||||||
|
int next = _input->LA(1);
|
||||||
|
if (opened > 0 || next == '\r' || next == '\n' || next == '\f' || next == '#') {
|
||||||
|
// If we're inside a list or on a blank line, ignore all indents,
|
||||||
|
// dedents and line breaks.
|
||||||
|
skip();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
emit(commonToken(NEWLINE, newLine));
|
||||||
|
int indent = getIndentationCount(spaces);
|
||||||
|
int previous = indents.empty() ? 0 : indents.top();
|
||||||
|
if (indent == previous) {
|
||||||
|
// skip indents of the same size as the present indent-size
|
||||||
|
skip();
|
||||||
|
}
|
||||||
|
else if (indent > previous) {
|
||||||
|
indents.push(indent);
|
||||||
|
emit(commonToken(Python3Lexer::INDENT, spaces));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Possibly emit more than 1 DEDENT token.
|
||||||
|
while(!indents.empty() && indents.top() > indent) {
|
||||||
|
this->emit(createDedent());
|
||||||
|
indents.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// identifier ::= id_start id_continue*
|
||||||
|
NAME: ID_START ID_CONTINUE*;
|
||||||
|
|
||||||
|
/// stringliteral ::= [stringprefix](shortstring | longstring) / stringprefix ::= "r" | "u" | "R" |
|
||||||
|
// "U" | "f" | "F" / | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF"
|
||||||
|
STRING_LITERAL: ([rR] | [uU] | [fF] | ( [fF] [rR]) | ( [rR] [fF]))? (
|
||||||
|
SHORT_STRING
|
||||||
|
| LONG_STRING
|
||||||
|
);
|
||||||
|
|
||||||
|
/// bytesliteral ::= bytesprefix(shortbytes | longbytes) / bytesprefix ::= "b" | "B" | "br" | "Br" |
|
||||||
|
// "bR" | "BR" | "rb" | "rB" | "Rb" | "RB"
|
||||||
|
BYTES_LITERAL: ([bB] | ( [bB] [rR]) | ( [rR] [bB])) (
|
||||||
|
SHORT_BYTES
|
||||||
|
| LONG_BYTES
|
||||||
|
);
|
||||||
|
|
||||||
|
/// decimalinteger ::= nonzerodigit digit* | "0"+
|
||||||
|
DECIMAL_INTEGER: NON_ZERO_DIGIT DIGIT* | '0'+;
|
||||||
|
|
||||||
|
/// octinteger ::= "0" ("o" | "O") octdigit+
|
||||||
|
OCT_INTEGER: '0' [oO] OCT_DIGIT+;
|
||||||
|
|
||||||
|
/// hexinteger ::= "0" ("x" | "X") hexdigit+
|
||||||
|
HEX_INTEGER: '0' [xX] HEX_DIGIT+;
|
||||||
|
|
||||||
|
/// bininteger ::= "0" ("b" | "B") bindigit+
|
||||||
|
BIN_INTEGER: '0' [bB] BIN_DIGIT+;
|
||||||
|
|
||||||
|
/// floatnumber ::= pointfloat | exponentfloat
|
||||||
|
FLOAT_NUMBER: POINT_FLOAT | EXPONENT_FLOAT;
|
||||||
|
|
||||||
|
/// imagnumber ::= (floatnumber | intpart) ("j" | "J")
|
||||||
|
IMAG_NUMBER: ( FLOAT_NUMBER | INT_PART) [jJ];
|
||||||
|
|
||||||
|
DOT: '.';
|
||||||
|
ELLIPSIS: '...';
|
||||||
|
STAR: '*';
|
||||||
|
OPEN_PAREN: '(' {opened++;};
|
||||||
|
CLOSE_PAREN: ')' {opened--;};
|
||||||
|
COMMA: ',';
|
||||||
|
COLON: ':';
|
||||||
|
SEMI_COLON: ';';
|
||||||
|
POWER: '**';
|
||||||
|
ASSIGN: '=';
|
||||||
|
OPEN_BRACK: '[' {opened++;};
|
||||||
|
CLOSE_BRACK: ']' {opened--;};
|
||||||
|
OR_OP: '|';
|
||||||
|
XOR: '^';
|
||||||
|
AND_OP: '&';
|
||||||
|
LEFT_SHIFT: '<<';
|
||||||
|
RIGHT_SHIFT: '>>';
|
||||||
|
ADD: '+';
|
||||||
|
MINUS: '-';
|
||||||
|
DIV: '/';
|
||||||
|
MOD: '%';
|
||||||
|
IDIV: '//';
|
||||||
|
NOT_OP: '~';
|
||||||
|
OPEN_BRACE: '{' {opened++;};
|
||||||
|
CLOSE_BRACE: '}' {opened--;};
|
||||||
|
LESS_THAN: '<';
|
||||||
|
GREATER_THAN: '>';
|
||||||
|
EQUALS: '==';
|
||||||
|
GT_EQ: '>=';
|
||||||
|
LT_EQ: '<=';
|
||||||
|
NOT_EQ_1: '<>';
|
||||||
|
NOT_EQ_2: '!=';
|
||||||
|
AT: '@';
|
||||||
|
ARROW: '->';
|
||||||
|
ADD_ASSIGN: '+=';
|
||||||
|
SUB_ASSIGN: '-=';
|
||||||
|
MULT_ASSIGN: '*=';
|
||||||
|
AT_ASSIGN: '@=';
|
||||||
|
DIV_ASSIGN: '/=';
|
||||||
|
MOD_ASSIGN: '%=';
|
||||||
|
AND_ASSIGN: '&=';
|
||||||
|
OR_ASSIGN: '|=';
|
||||||
|
XOR_ASSIGN: '^=';
|
||||||
|
LEFT_SHIFT_ASSIGN: '<<=';
|
||||||
|
RIGHT_SHIFT_ASSIGN: '>>=';
|
||||||
|
POWER_ASSIGN: '**=';
|
||||||
|
IDIV_ASSIGN: '//=';
|
||||||
|
|
||||||
|
SKIP_: ( SPACES | COMMENT | LINE_JOINING) -> skip;
|
||||||
|
|
||||||
|
UNKNOWN_CHAR: .;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fragments
|
||||||
|
*/
|
||||||
|
|
||||||
|
/// shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"' / shortstringitem ::=
|
||||||
|
// shortstringchar | stringescapeseq / shortstringchar ::= <any source character except "\" or
|
||||||
|
// newline or the quote>
|
||||||
|
fragment SHORT_STRING:
|
||||||
|
'\'' (STRING_ESCAPE_SEQ | ~[\\\r\n\f'])* '\''
|
||||||
|
| '"' ( STRING_ESCAPE_SEQ | ~[\\\r\n\f"])* '"';
|
||||||
|
/// longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
|
||||||
|
fragment LONG_STRING:
|
||||||
|
'\'\'\'' LONG_STRING_ITEM*? '\'\'\''
|
||||||
|
| '"""' LONG_STRING_ITEM*? '"""';
|
||||||
|
|
||||||
|
/// longstringitem ::= longstringchar | stringescapeseq
|
||||||
|
fragment LONG_STRING_ITEM: LONG_STRING_CHAR | STRING_ESCAPE_SEQ;
|
||||||
|
|
||||||
|
/// longstringchar ::= <any source character except "\">
|
||||||
|
fragment LONG_STRING_CHAR: ~'\\';
|
||||||
|
|
||||||
|
/// stringescapeseq ::= "\" <any source character>
|
||||||
|
fragment STRING_ESCAPE_SEQ: '\\' . | '\\' NEWLINE;
|
||||||
|
|
||||||
|
/// nonzerodigit ::= "1"..."9"
|
||||||
|
fragment NON_ZERO_DIGIT: [1-9];
|
||||||
|
|
||||||
|
/// digit ::= "0"..."9"
|
||||||
|
fragment DIGIT: [0-9];
|
||||||
|
|
||||||
|
/// octdigit ::= "0"..."7"
|
||||||
|
fragment OCT_DIGIT: [0-7];
|
||||||
|
|
||||||
|
/// hexdigit ::= digit | "a"..."f" | "A"..."F"
|
||||||
|
fragment HEX_DIGIT: [0-9a-fA-F];
|
||||||
|
|
||||||
|
/// bindigit ::= "0" | "1"
|
||||||
|
fragment BIN_DIGIT: [01];
|
||||||
|
|
||||||
|
/// pointfloat ::= [intpart] fraction | intpart "."
|
||||||
|
fragment POINT_FLOAT: INT_PART? FRACTION | INT_PART '.';
|
||||||
|
|
||||||
|
/// exponentfloat ::= (intpart | pointfloat) exponent
|
||||||
|
fragment EXPONENT_FLOAT: ( INT_PART | POINT_FLOAT) EXPONENT;
|
||||||
|
|
||||||
|
/// intpart ::= digit+
|
||||||
|
fragment INT_PART: DIGIT+;
|
||||||
|
|
||||||
|
/// fraction ::= "." digit+
|
||||||
|
fragment FRACTION: '.' DIGIT+;
|
||||||
|
|
||||||
|
/// exponent ::= ("e" | "E") ["+" | "-"] digit+
|
||||||
|
fragment EXPONENT: [eE] [+-]? DIGIT+;
|
||||||
|
|
||||||
|
/// shortbytes ::= "'" shortbytesitem* "'" | '"' shortbytesitem* '"' / shortbytesitem ::=
|
||||||
|
// shortbyteschar | bytesescapeseq
|
||||||
|
fragment SHORT_BYTES:
|
||||||
|
'\'' (SHORT_BYTES_CHAR_NO_SINGLE_QUOTE | BYTES_ESCAPE_SEQ)* '\''
|
||||||
|
| '"' (SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE | BYTES_ESCAPE_SEQ)* '"';
|
||||||
|
|
||||||
|
/// longbytes ::= "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
|
||||||
|
fragment LONG_BYTES:
|
||||||
|
'\'\'\'' LONG_BYTES_ITEM*? '\'\'\''
|
||||||
|
| '"""' LONG_BYTES_ITEM*? '"""';
|
||||||
|
|
||||||
|
/// longbytesitem ::= longbyteschar | bytesescapeseq
|
||||||
|
fragment LONG_BYTES_ITEM: LONG_BYTES_CHAR | BYTES_ESCAPE_SEQ;
|
||||||
|
|
||||||
|
/// shortbyteschar ::= <any ASCII character except "\" or newline or the quote>
|
||||||
|
fragment SHORT_BYTES_CHAR_NO_SINGLE_QUOTE:
|
||||||
|
[\u0000-\u0009]
|
||||||
|
| [\u000B-\u000C]
|
||||||
|
| [\u000E-\u0026]
|
||||||
|
| [\u0028-\u005B]
|
||||||
|
| [\u005D-\u007F];
|
||||||
|
|
||||||
|
fragment SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE:
|
||||||
|
[\u0000-\u0009]
|
||||||
|
| [\u000B-\u000C]
|
||||||
|
| [\u000E-\u0021]
|
||||||
|
| [\u0023-\u005B]
|
||||||
|
| [\u005D-\u007F];
|
||||||
|
|
||||||
|
/// longbyteschar ::= <any ASCII character except "\">
|
||||||
|
fragment LONG_BYTES_CHAR: [\u0000-\u005B] | [\u005D-\u007F];
|
||||||
|
|
||||||
|
/// bytesescapeseq ::= "\" <any ASCII character>
|
||||||
|
fragment BYTES_ESCAPE_SEQ: '\\' [\u0000-\u007F];
|
||||||
|
|
||||||
|
fragment SPACES: [ \t]+;
|
||||||
|
|
||||||
|
fragment COMMENT: '#' ~[\r\n\f]*;
|
||||||
|
|
||||||
|
fragment LINE_JOINING: '\\' SPACES? ( '\r'? '\n' | '\r' | '\f');
|
||||||
|
|
||||||
|
/// id_start ::= <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
|
||||||
|
fragment ID_START:
|
||||||
|
'_'
|
||||||
|
| [A-Z]
|
||||||
|
| [a-z]
|
||||||
|
| '\u00AA'
|
||||||
|
| '\u00B5'
|
||||||
|
| '\u00BA'
|
||||||
|
| [\u00C0-\u00D6]
|
||||||
|
| [\u00D8-\u00F6]
|
||||||
|
| [\u00F8-\u01BA]
|
||||||
|
| '\u01BB'
|
||||||
|
| [\u01BC-\u01BF]
|
||||||
|
| [\u01C0-\u01C3]
|
||||||
|
| [\u01C4-\u0241]
|
||||||
|
| [\u0250-\u02AF]
|
||||||
|
| [\u02B0-\u02C1]
|
||||||
|
| [\u02C6-\u02D1]
|
||||||
|
| [\u02E0-\u02E4]
|
||||||
|
| '\u02EE'
|
||||||
|
| '\u037A'
|
||||||
|
| '\u0386'
|
||||||
|
| [\u0388-\u038A]
|
||||||
|
| '\u038C'
|
||||||
|
| [\u038E-\u03A1]
|
||||||
|
| [\u03A3-\u03CE]
|
||||||
|
| [\u03D0-\u03F5]
|
||||||
|
| [\u03F7-\u0481]
|
||||||
|
| [\u048A-\u04CE]
|
||||||
|
| [\u04D0-\u04F9]
|
||||||
|
| [\u0500-\u050F]
|
||||||
|
| [\u0531-\u0556]
|
||||||
|
| '\u0559'
|
||||||
|
| [\u0561-\u0587]
|
||||||
|
| [\u05D0-\u05EA]
|
||||||
|
| [\u05F0-\u05F2]
|
||||||
|
| [\u0621-\u063A]
|
||||||
|
| '\u0640'
|
||||||
|
| [\u0641-\u064A]
|
||||||
|
| [\u066E-\u066F]
|
||||||
|
| [\u0671-\u06D3]
|
||||||
|
| '\u06D5'
|
||||||
|
| [\u06E5-\u06E6]
|
||||||
|
| [\u06EE-\u06EF]
|
||||||
|
| [\u06FA-\u06FC]
|
||||||
|
| '\u06FF'
|
||||||
|
| '\u0710'
|
||||||
|
| [\u0712-\u072F]
|
||||||
|
| [\u074D-\u076D]
|
||||||
|
| [\u0780-\u07A5]
|
||||||
|
| '\u07B1'
|
||||||
|
| [\u0904-\u0939]
|
||||||
|
| '\u093D'
|
||||||
|
| '\u0950'
|
||||||
|
| [\u0958-\u0961]
|
||||||
|
| '\u097D'
|
||||||
|
| [\u0985-\u098C]
|
||||||
|
| [\u098F-\u0990]
|
||||||
|
| [\u0993-\u09A8]
|
||||||
|
| [\u09AA-\u09B0]
|
||||||
|
| '\u09B2'
|
||||||
|
| [\u09B6-\u09B9]
|
||||||
|
| '\u09BD'
|
||||||
|
| '\u09CE'
|
||||||
|
| [\u09DC-\u09DD]
|
||||||
|
| [\u09DF-\u09E1]
|
||||||
|
| [\u09F0-\u09F1]
|
||||||
|
| [\u0A05-\u0A0A]
|
||||||
|
| [\u0A0F-\u0A10]
|
||||||
|
| [\u0A13-\u0A28]
|
||||||
|
| [\u0A2A-\u0A30]
|
||||||
|
| [\u0A32-\u0A33]
|
||||||
|
| [\u0A35-\u0A36]
|
||||||
|
| [\u0A38-\u0A39]
|
||||||
|
| [\u0A59-\u0A5C]
|
||||||
|
| '\u0A5E'
|
||||||
|
| [\u0A72-\u0A74]
|
||||||
|
| [\u0A85-\u0A8D]
|
||||||
|
| [\u0A8F-\u0A91]
|
||||||
|
| [\u0A93-\u0AA8]
|
||||||
|
| [\u0AAA-\u0AB0]
|
||||||
|
| [\u0AB2-\u0AB3]
|
||||||
|
| [\u0AB5-\u0AB9]
|
||||||
|
| '\u0ABD'
|
||||||
|
| '\u0AD0'
|
||||||
|
| [\u0AE0-\u0AE1]
|
||||||
|
| [\u0B05-\u0B0C]
|
||||||
|
| [\u0B0F-\u0B10]
|
||||||
|
| [\u0B13-\u0B28]
|
||||||
|
| [\u0B2A-\u0B30]
|
||||||
|
| [\u0B32-\u0B33]
|
||||||
|
| [\u0B35-\u0B39]
|
||||||
|
| '\u0B3D'
|
||||||
|
| [\u0B5C-\u0B5D]
|
||||||
|
| [\u0B5F-\u0B61]
|
||||||
|
| '\u0B71'
|
||||||
|
| '\u0B83'
|
||||||
|
| [\u0B85-\u0B8A]
|
||||||
|
| [\u0B8E-\u0B90]
|
||||||
|
| [\u0B92-\u0B95]
|
||||||
|
| [\u0B99-\u0B9A]
|
||||||
|
| '\u0B9C'
|
||||||
|
| [\u0B9E-\u0B9F]
|
||||||
|
| [\u0BA3-\u0BA4]
|
||||||
|
| [\u0BA8-\u0BAA]
|
||||||
|
| [\u0BAE-\u0BB9]
|
||||||
|
| [\u0C05-\u0C0C]
|
||||||
|
| [\u0C0E-\u0C10]
|
||||||
|
| [\u0C12-\u0C28]
|
||||||
|
| [\u0C2A-\u0C33]
|
||||||
|
| [\u0C35-\u0C39]
|
||||||
|
| [\u0C60-\u0C61]
|
||||||
|
| [\u0C85-\u0C8C]
|
||||||
|
| [\u0C8E-\u0C90]
|
||||||
|
| [\u0C92-\u0CA8]
|
||||||
|
| [\u0CAA-\u0CB3]
|
||||||
|
| [\u0CB5-\u0CB9]
|
||||||
|
| '\u0CBD'
|
||||||
|
| '\u0CDE'
|
||||||
|
| [\u0CE0-\u0CE1]
|
||||||
|
| [\u0D05-\u0D0C]
|
||||||
|
| [\u0D0E-\u0D10]
|
||||||
|
| [\u0D12-\u0D28]
|
||||||
|
| [\u0D2A-\u0D39]
|
||||||
|
| [\u0D60-\u0D61]
|
||||||
|
| [\u0D85-\u0D96]
|
||||||
|
| [\u0D9A-\u0DB1]
|
||||||
|
| [\u0DB3-\u0DBB]
|
||||||
|
| '\u0DBD'
|
||||||
|
| [\u0DC0-\u0DC6]
|
||||||
|
| [\u0E01-\u0E30]
|
||||||
|
| [\u0E32-\u0E33]
|
||||||
|
| [\u0E40-\u0E45]
|
||||||
|
| '\u0E46'
|
||||||
|
| [\u0E81-\u0E82]
|
||||||
|
| '\u0E84'
|
||||||
|
| [\u0E87-\u0E88]
|
||||||
|
| '\u0E8A'
|
||||||
|
| '\u0E8D'
|
||||||
|
| [\u0E94-\u0E97]
|
||||||
|
| [\u0E99-\u0E9F]
|
||||||
|
| [\u0EA1-\u0EA3]
|
||||||
|
| '\u0EA5'
|
||||||
|
| '\u0EA7'
|
||||||
|
| [\u0EAA-\u0EAB]
|
||||||
|
| [\u0EAD-\u0EB0]
|
||||||
|
| [\u0EB2-\u0EB3]
|
||||||
|
| '\u0EBD'
|
||||||
|
| [\u0EC0-\u0EC4]
|
||||||
|
| '\u0EC6'
|
||||||
|
| [\u0EDC-\u0EDD]
|
||||||
|
| '\u0F00'
|
||||||
|
| [\u0F40-\u0F47]
|
||||||
|
| [\u0F49-\u0F6A]
|
||||||
|
| [\u0F88-\u0F8B]
|
||||||
|
| [\u1000-\u1021]
|
||||||
|
| [\u1023-\u1027]
|
||||||
|
| [\u1029-\u102A]
|
||||||
|
| [\u1050-\u1055]
|
||||||
|
| [\u10A0-\u10C5]
|
||||||
|
| [\u10D0-\u10FA]
|
||||||
|
| '\u10FC'
|
||||||
|
| [\u1100-\u1159]
|
||||||
|
| [\u115F-\u11A2]
|
||||||
|
| [\u11A8-\u11F9]
|
||||||
|
| [\u1200-\u1248]
|
||||||
|
| [\u124A-\u124D]
|
||||||
|
| [\u1250-\u1256]
|
||||||
|
| '\u1258'
|
||||||
|
| [\u125A-\u125D]
|
||||||
|
| [\u1260-\u1288]
|
||||||
|
| [\u128A-\u128D]
|
||||||
|
| [\u1290-\u12B0]
|
||||||
|
| [\u12B2-\u12B5]
|
||||||
|
| [\u12B8-\u12BE]
|
||||||
|
| '\u12C0'
|
||||||
|
| [\u12C2-\u12C5]
|
||||||
|
| [\u12C8-\u12D6]
|
||||||
|
| [\u12D8-\u1310]
|
||||||
|
| [\u1312-\u1315]
|
||||||
|
| [\u1318-\u135A]
|
||||||
|
| [\u1380-\u138F]
|
||||||
|
| [\u13A0-\u13F4]
|
||||||
|
| [\u1401-\u166C]
|
||||||
|
| [\u166F-\u1676]
|
||||||
|
| [\u1681-\u169A]
|
||||||
|
| [\u16A0-\u16EA]
|
||||||
|
| [\u16EE-\u16F0]
|
||||||
|
| [\u1700-\u170C]
|
||||||
|
| [\u170E-\u1711]
|
||||||
|
| [\u1720-\u1731]
|
||||||
|
| [\u1740-\u1751]
|
||||||
|
| [\u1760-\u176C]
|
||||||
|
| [\u176E-\u1770]
|
||||||
|
| [\u1780-\u17B3]
|
||||||
|
| '\u17D7'
|
||||||
|
| '\u17DC'
|
||||||
|
| [\u1820-\u1842]
|
||||||
|
| '\u1843'
|
||||||
|
| [\u1844-\u1877]
|
||||||
|
| [\u1880-\u18A8]
|
||||||
|
| [\u1900-\u191C]
|
||||||
|
| [\u1950-\u196D]
|
||||||
|
| [\u1970-\u1974]
|
||||||
|
| [\u1980-\u19A9]
|
||||||
|
| [\u19C1-\u19C7]
|
||||||
|
| [\u1A00-\u1A16]
|
||||||
|
| [\u1D00-\u1D2B]
|
||||||
|
| [\u1D2C-\u1D61]
|
||||||
|
| [\u1D62-\u1D77]
|
||||||
|
| '\u1D78'
|
||||||
|
| [\u1D79-\u1D9A]
|
||||||
|
| [\u1D9B-\u1DBF]
|
||||||
|
| [\u1E00-\u1E9B]
|
||||||
|
| [\u1EA0-\u1EF9]
|
||||||
|
| [\u1F00-\u1F15]
|
||||||
|
| [\u1F18-\u1F1D]
|
||||||
|
| [\u1F20-\u1F45]
|
||||||
|
| [\u1F48-\u1F4D]
|
||||||
|
| [\u1F50-\u1F57]
|
||||||
|
| '\u1F59'
|
||||||
|
| '\u1F5B'
|
||||||
|
| '\u1F5D'
|
||||||
|
| [\u1F5F-\u1F7D]
|
||||||
|
| [\u1F80-\u1FB4]
|
||||||
|
| [\u1FB6-\u1FBC]
|
||||||
|
| '\u1FBE'
|
||||||
|
| [\u1FC2-\u1FC4]
|
||||||
|
| [\u1FC6-\u1FCC]
|
||||||
|
| [\u1FD0-\u1FD3]
|
||||||
|
| [\u1FD6-\u1FDB]
|
||||||
|
| [\u1FE0-\u1FEC]
|
||||||
|
| [\u1FF2-\u1FF4]
|
||||||
|
| [\u1FF6-\u1FFC]
|
||||||
|
| '\u2071'
|
||||||
|
| '\u207F'
|
||||||
|
| [\u2090-\u2094]
|
||||||
|
| '\u2102'
|
||||||
|
| '\u2107'
|
||||||
|
| [\u210A-\u2113]
|
||||||
|
| '\u2115'
|
||||||
|
| '\u2118'
|
||||||
|
| [\u2119-\u211D]
|
||||||
|
| '\u2124'
|
||||||
|
| '\u2126'
|
||||||
|
| '\u2128'
|
||||||
|
| [\u212A-\u212D]
|
||||||
|
| '\u212E'
|
||||||
|
| [\u212F-\u2131]
|
||||||
|
| [\u2133-\u2134]
|
||||||
|
| [\u2135-\u2138]
|
||||||
|
| '\u2139'
|
||||||
|
| [\u213C-\u213F]
|
||||||
|
| [\u2145-\u2149]
|
||||||
|
| [\u2160-\u2183]
|
||||||
|
| [\u2C00-\u2C2E]
|
||||||
|
| [\u2C30-\u2C5E]
|
||||||
|
| [\u2C80-\u2CE4]
|
||||||
|
| [\u2D00-\u2D25]
|
||||||
|
| [\u2D30-\u2D65]
|
||||||
|
| '\u2D6F'
|
||||||
|
| [\u2D80-\u2D96]
|
||||||
|
| [\u2DA0-\u2DA6]
|
||||||
|
| [\u2DA8-\u2DAE]
|
||||||
|
| [\u2DB0-\u2DB6]
|
||||||
|
| [\u2DB8-\u2DBE]
|
||||||
|
| [\u2DC0-\u2DC6]
|
||||||
|
| [\u2DC8-\u2DCE]
|
||||||
|
| [\u2DD0-\u2DD6]
|
||||||
|
| [\u2DD8-\u2DDE]
|
||||||
|
| '\u3005'
|
||||||
|
| '\u3006'
|
||||||
|
| '\u3007'
|
||||||
|
| [\u3021-\u3029]
|
||||||
|
| [\u3031-\u3035]
|
||||||
|
| [\u3038-\u303A]
|
||||||
|
| '\u303B'
|
||||||
|
| '\u303C'
|
||||||
|
| [\u3041-\u3096]
|
||||||
|
| [\u309B-\u309C]
|
||||||
|
| [\u309D-\u309E]
|
||||||
|
| '\u309F'
|
||||||
|
| [\u30A1-\u30FA]
|
||||||
|
| [\u30FC-\u30FE]
|
||||||
|
| '\u30FF'
|
||||||
|
| [\u3105-\u312C]
|
||||||
|
| [\u3131-\u318E]
|
||||||
|
| [\u31A0-\u31B7]
|
||||||
|
| [\u31F0-\u31FF]
|
||||||
|
| [\u3400-\u4DB5]
|
||||||
|
| [\u4E00-\u9FBB]
|
||||||
|
| [\uA000-\uA014]
|
||||||
|
| '\uA015'
|
||||||
|
| [\uA016-\uA48C]
|
||||||
|
| [\uA800-\uA801]
|
||||||
|
| [\uA803-\uA805]
|
||||||
|
| [\uA807-\uA80A]
|
||||||
|
| [\uA80C-\uA822]
|
||||||
|
| [\uAC00-\uD7A3]
|
||||||
|
| [\uF900-\uFA2D]
|
||||||
|
| [\uFA30-\uFA6A]
|
||||||
|
| [\uFA70-\uFAD9]
|
||||||
|
| [\uFB00-\uFB06]
|
||||||
|
| [\uFB13-\uFB17]
|
||||||
|
| '\uFB1D'
|
||||||
|
| [\uFB1F-\uFB28]
|
||||||
|
| [\uFB2A-\uFB36]
|
||||||
|
| [\uFB38-\uFB3C]
|
||||||
|
| '\uFB3E'
|
||||||
|
| [\uFB40-\uFB41]
|
||||||
|
| [\uFB43-\uFB44]
|
||||||
|
| [\uFB46-\uFBB1]
|
||||||
|
| [\uFBD3-\uFD3D]
|
||||||
|
| [\uFD50-\uFD8F]
|
||||||
|
| [\uFD92-\uFDC7]
|
||||||
|
| [\uFDF0-\uFDFB]
|
||||||
|
| [\uFE70-\uFE74]
|
||||||
|
| [\uFE76-\uFEFC]
|
||||||
|
| [\uFF21-\uFF3A]
|
||||||
|
| [\uFF41-\uFF5A]
|
||||||
|
| [\uFF66-\uFF6F]
|
||||||
|
| '\uFF70'
|
||||||
|
| [\uFF71-\uFF9D]
|
||||||
|
| [\uFF9E-\uFF9F]
|
||||||
|
| [\uFFA0-\uFFBE]
|
||||||
|
| [\uFFC2-\uFFC7]
|
||||||
|
| [\uFFCA-\uFFCF]
|
||||||
|
| [\uFFD2-\uFFD7]
|
||||||
|
| [\uFFDA-\uFFDC];
|
||||||
|
|
||||||
|
/// id_continue ::= <all characters in id_start, plus characters in the categories Mn, Mc, Nd, Pc and others with the Other_ID_Continue property>
|
||||||
|
fragment ID_CONTINUE:
|
||||||
|
ID_START
|
||||||
|
| [0-9]
|
||||||
|
| [\u0300-\u036F]
|
||||||
|
| [\u0483-\u0486]
|
||||||
|
| [\u0591-\u05B9]
|
||||||
|
| [\u05BB-\u05BD]
|
||||||
|
| '\u05BF'
|
||||||
|
| [\u05C1-\u05C2]
|
||||||
|
| [\u05C4-\u05C5]
|
||||||
|
| '\u05C7'
|
||||||
|
| [\u0610-\u0615]
|
||||||
|
| [\u064B-\u065E]
|
||||||
|
| [\u0660-\u0669]
|
||||||
|
| '\u0670'
|
||||||
|
| [\u06D6-\u06DC]
|
||||||
|
| [\u06DF-\u06E4]
|
||||||
|
| [\u06E7-\u06E8]
|
||||||
|
| [\u06EA-\u06ED]
|
||||||
|
| [\u06F0-\u06F9]
|
||||||
|
| '\u0711'
|
||||||
|
| [\u0730-\u074A]
|
||||||
|
| [\u07A6-\u07B0]
|
||||||
|
| [\u0901-\u0902]
|
||||||
|
| '\u0903'
|
||||||
|
| '\u093C'
|
||||||
|
| [\u093E-\u0940]
|
||||||
|
| [\u0941-\u0948]
|
||||||
|
| [\u0949-\u094C]
|
||||||
|
| '\u094D'
|
||||||
|
| [\u0951-\u0954]
|
||||||
|
| [\u0962-\u0963]
|
||||||
|
| [\u0966-\u096F]
|
||||||
|
| '\u0981'
|
||||||
|
| [\u0982-\u0983]
|
||||||
|
| '\u09BC'
|
||||||
|
| [\u09BE-\u09C0]
|
||||||
|
| [\u09C1-\u09C4]
|
||||||
|
| [\u09C7-\u09C8]
|
||||||
|
| [\u09CB-\u09CC]
|
||||||
|
| '\u09CD'
|
||||||
|
| '\u09D7'
|
||||||
|
| [\u09E2-\u09E3]
|
||||||
|
| [\u09E6-\u09EF]
|
||||||
|
| [\u0A01-\u0A02]
|
||||||
|
| '\u0A03'
|
||||||
|
| '\u0A3C'
|
||||||
|
| [\u0A3E-\u0A40]
|
||||||
|
| [\u0A41-\u0A42]
|
||||||
|
| [\u0A47-\u0A48]
|
||||||
|
| [\u0A4B-\u0A4D]
|
||||||
|
| [\u0A66-\u0A6F]
|
||||||
|
| [\u0A70-\u0A71]
|
||||||
|
| [\u0A81-\u0A82]
|
||||||
|
| '\u0A83'
|
||||||
|
| '\u0ABC'
|
||||||
|
| [\u0ABE-\u0AC0]
|
||||||
|
| [\u0AC1-\u0AC5]
|
||||||
|
| [\u0AC7-\u0AC8]
|
||||||
|
| '\u0AC9'
|
||||||
|
| [\u0ACB-\u0ACC]
|
||||||
|
| '\u0ACD'
|
||||||
|
| [\u0AE2-\u0AE3]
|
||||||
|
| [\u0AE6-\u0AEF]
|
||||||
|
| '\u0B01'
|
||||||
|
| [\u0B02-\u0B03]
|
||||||
|
| '\u0B3C'
|
||||||
|
| '\u0B3E'
|
||||||
|
| '\u0B3F'
|
||||||
|
| '\u0B40'
|
||||||
|
| [\u0B41-\u0B43]
|
||||||
|
| [\u0B47-\u0B48]
|
||||||
|
| [\u0B4B-\u0B4C]
|
||||||
|
| '\u0B4D'
|
||||||
|
| '\u0B56'
|
||||||
|
| '\u0B57'
|
||||||
|
| [\u0B66-\u0B6F]
|
||||||
|
| '\u0B82'
|
||||||
|
| [\u0BBE-\u0BBF]
|
||||||
|
| '\u0BC0'
|
||||||
|
| [\u0BC1-\u0BC2]
|
||||||
|
| [\u0BC6-\u0BC8]
|
||||||
|
| [\u0BCA-\u0BCC]
|
||||||
|
| '\u0BCD'
|
||||||
|
| '\u0BD7'
|
||||||
|
| [\u0BE6-\u0BEF]
|
||||||
|
| [\u0C01-\u0C03]
|
||||||
|
| [\u0C3E-\u0C40]
|
||||||
|
| [\u0C41-\u0C44]
|
||||||
|
| [\u0C46-\u0C48]
|
||||||
|
| [\u0C4A-\u0C4D]
|
||||||
|
| [\u0C55-\u0C56]
|
||||||
|
| [\u0C66-\u0C6F]
|
||||||
|
| [\u0C82-\u0C83]
|
||||||
|
| '\u0CBC'
|
||||||
|
| '\u0CBE'
|
||||||
|
| '\u0CBF'
|
||||||
|
| [\u0CC0-\u0CC4]
|
||||||
|
| '\u0CC6'
|
||||||
|
| [\u0CC7-\u0CC8]
|
||||||
|
| [\u0CCA-\u0CCB]
|
||||||
|
| [\u0CCC-\u0CCD]
|
||||||
|
| [\u0CD5-\u0CD6]
|
||||||
|
| [\u0CE6-\u0CEF]
|
||||||
|
| [\u0D02-\u0D03]
|
||||||
|
| [\u0D3E-\u0D40]
|
||||||
|
| [\u0D41-\u0D43]
|
||||||
|
| [\u0D46-\u0D48]
|
||||||
|
| [\u0D4A-\u0D4C]
|
||||||
|
| '\u0D4D'
|
||||||
|
| '\u0D57'
|
||||||
|
| [\u0D66-\u0D6F]
|
||||||
|
| [\u0D82-\u0D83]
|
||||||
|
| '\u0DCA'
|
||||||
|
| [\u0DCF-\u0DD1]
|
||||||
|
| [\u0DD2-\u0DD4]
|
||||||
|
| '\u0DD6'
|
||||||
|
| [\u0DD8-\u0DDF]
|
||||||
|
| [\u0DF2-\u0DF3]
|
||||||
|
| '\u0E31'
|
||||||
|
| [\u0E34-\u0E3A]
|
||||||
|
| [\u0E47-\u0E4E]
|
||||||
|
| [\u0E50-\u0E59]
|
||||||
|
| '\u0EB1'
|
||||||
|
| [\u0EB4-\u0EB9]
|
||||||
|
| [\u0EBB-\u0EBC]
|
||||||
|
| [\u0EC8-\u0ECD]
|
||||||
|
| [\u0ED0-\u0ED9]
|
||||||
|
| [\u0F18-\u0F19]
|
||||||
|
| [\u0F20-\u0F29]
|
||||||
|
| '\u0F35'
|
||||||
|
| '\u0F37'
|
||||||
|
| '\u0F39'
|
||||||
|
| [\u0F3E-\u0F3F]
|
||||||
|
| [\u0F71-\u0F7E]
|
||||||
|
| '\u0F7F'
|
||||||
|
| [\u0F80-\u0F84]
|
||||||
|
| [\u0F86-\u0F87]
|
||||||
|
| [\u0F90-\u0F97]
|
||||||
|
| [\u0F99-\u0FBC]
|
||||||
|
| '\u0FC6'
|
||||||
|
| '\u102C'
|
||||||
|
| [\u102D-\u1030]
|
||||||
|
| '\u1031'
|
||||||
|
| '\u1032'
|
||||||
|
| [\u1036-\u1037]
|
||||||
|
| '\u1038'
|
||||||
|
| '\u1039'
|
||||||
|
| [\u1040-\u1049]
|
||||||
|
| [\u1056-\u1057]
|
||||||
|
| [\u1058-\u1059]
|
||||||
|
| '\u135F'
|
||||||
|
| [\u1369-\u1371]
|
||||||
|
| [\u1712-\u1714]
|
||||||
|
| [\u1732-\u1734]
|
||||||
|
| [\u1752-\u1753]
|
||||||
|
| [\u1772-\u1773]
|
||||||
|
| '\u17B6'
|
||||||
|
| [\u17B7-\u17BD]
|
||||||
|
| [\u17BE-\u17C5]
|
||||||
|
| '\u17C6'
|
||||||
|
| [\u17C7-\u17C8]
|
||||||
|
| [\u17C9-\u17D3]
|
||||||
|
| '\u17DD'
|
||||||
|
| [\u17E0-\u17E9]
|
||||||
|
| [\u180B-\u180D]
|
||||||
|
| [\u1810-\u1819]
|
||||||
|
| '\u18A9'
|
||||||
|
| [\u1920-\u1922]
|
||||||
|
| [\u1923-\u1926]
|
||||||
|
| [\u1927-\u1928]
|
||||||
|
| [\u1929-\u192B]
|
||||||
|
| [\u1930-\u1931]
|
||||||
|
| '\u1932'
|
||||||
|
| [\u1933-\u1938]
|
||||||
|
| [\u1939-\u193B]
|
||||||
|
| [\u1946-\u194F]
|
||||||
|
| [\u19B0-\u19C0]
|
||||||
|
| [\u19C8-\u19C9]
|
||||||
|
| [\u19D0-\u19D9]
|
||||||
|
| [\u1A17-\u1A18]
|
||||||
|
| [\u1A19-\u1A1B]
|
||||||
|
| [\u1DC0-\u1DC3]
|
||||||
|
| [\u203F-\u2040]
|
||||||
|
| '\u2054'
|
||||||
|
| [\u20D0-\u20DC]
|
||||||
|
| '\u20E1'
|
||||||
|
| [\u20E5-\u20EB]
|
||||||
|
| [\u302A-\u302F]
|
||||||
|
| [\u3099-\u309A]
|
||||||
|
| '\uA802'
|
||||||
|
| '\uA806'
|
||||||
|
| '\uA80B'
|
||||||
|
| [\uA823-\uA824]
|
||||||
|
| [\uA825-\uA826]
|
||||||
|
| '\uA827'
|
||||||
|
| '\uFB1E'
|
||||||
|
| [\uFE00-\uFE0F]
|
||||||
|
| [\uFE20-\uFE23]
|
||||||
|
| [\uFE33-\uFE34]
|
||||||
|
| [\uFE4D-\uFE4F]
|
||||||
|
| [\uFF10-\uFF19]
|
||||||
|
| '\uFF3F';
|
44
resources/Python3Parser.g4
Normal file
44
resources/Python3Parser.g4
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
parser grammar Python3Parser;
|
||||||
|
|
||||||
|
options {
|
||||||
|
tokenVocab = Python3Lexer;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_input: (NEWLINE | stmt)* EOF;
|
||||||
|
funcdef: 'def' NAME parameters ':' suite;
|
||||||
|
parameters: '(' typedargslist? ')';
|
||||||
|
typedargslist: (tfpdef ('=' test)? (',' tfpdef ('=' test)?)*);
|
||||||
|
tfpdef: NAME ;
|
||||||
|
|
||||||
|
stmt: simple_stmt | compound_stmt;
|
||||||
|
simple_stmt: small_stmt NEWLINE;
|
||||||
|
small_stmt: expr_stmt | flow_stmt;
|
||||||
|
expr_stmt: testlist ( (augassign testlist) |
|
||||||
|
('=' testlist)*);//连等 加等/减等/...
|
||||||
|
augassign: ('+=' | '-=' | '*=' | '/=' | '//=' | '%=' );
|
||||||
|
flow_stmt: break_stmt | continue_stmt | return_stmt;
|
||||||
|
break_stmt: 'break';
|
||||||
|
continue_stmt: 'continue';
|
||||||
|
return_stmt: 'return' (testlist)?;
|
||||||
|
compound_stmt: if_stmt | while_stmt | funcdef ;
|
||||||
|
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ('else' ':' suite)?;
|
||||||
|
while_stmt: 'while' test ':' suite;
|
||||||
|
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT;
|
||||||
|
test: or_test ;
|
||||||
|
or_test: and_test ('or' and_test)*;
|
||||||
|
and_test: not_test ('and' not_test)*;
|
||||||
|
not_test: 'not' not_test | comparison;
|
||||||
|
comparison: arith_expr (comp_op arith_expr)*;
|
||||||
|
comp_op: '<'|'>'|'=='|'>='|'<=' | '!=';
|
||||||
|
arith_expr: term (addorsub_op term)*;
|
||||||
|
addorsub_op: '+'|'-';
|
||||||
|
term: factor (muldivmod_op factor)*;
|
||||||
|
muldivmod_op: '*'|'/'|'//'|'%';
|
||||||
|
factor: ('+'|'-') factor | atom_expr;
|
||||||
|
atom_expr: atom trailer?;
|
||||||
|
trailer: '(' (arglist)? ')' ;
|
||||||
|
atom: (NAME | NUMBER | STRING+| 'None' | 'True' | 'False' | ('(' test ')'));
|
||||||
|
testlist: test (',' test)* (',')?;//算式 eg: a,b a a+b
|
||||||
|
arglist: argument (',' argument)* (',')?;
|
||||||
|
argument: ( test |
|
||||||
|
test '=' test );
|
BIN
resources/antlr4-runtime_4.13.1_amd64.deb
Normal file
BIN
resources/antlr4-runtime_4.13.1_amd64.deb
Normal file
Binary file not shown.
13
resources/gen.sh
Executable file
13
resources/gen.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd $(dirname $0)
|
||||||
|
|
||||||
|
antlr4 -no-listener -visitor -Dlanguage=Cpp Python3Lexer.g4 Python3Parser.g4 -o "../generated"
|
||||||
|
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# If you do no want to do the bonus of
|
||||||
|
# "Supporting More Grammar of Python",
|
||||||
|
# You do no need to understand this file currently.
|
||||||
|
#
|
||||||
|
###
|
1
src/Evalvisitor.cpp
Normal file
1
src/Evalvisitor.cpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "Evalvisitor.h"
|
14
src/Evalvisitor.h
Normal file
14
src/Evalvisitor.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifndef PYTHON_INTERPRETER_EVALVISITOR_H
|
||||||
|
#define PYTHON_INTERPRETER_EVALVISITOR_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "Python3ParserBaseVisitor.h"
|
||||||
|
|
||||||
|
|
||||||
|
class EvalVisitor : public Python3ParserBaseVisitor {
|
||||||
|
// TODO: override all methods of Python3ParserBaseVisitor
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif//PYTHON_INTERPRETER_EVALVISITOR_H
|
20
src/main.cpp
Normal file
20
src/main.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "Evalvisitor.h"
|
||||||
|
#include "Python3Lexer.h"
|
||||||
|
#include "Python3Parser.h"
|
||||||
|
#include "antlr4-runtime.h"
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
2
testcases/basic-testcases/test0.in
Normal file
2
testcases/basic-testcases/test0.in
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#WELCOME!
|
||||||
|
#HAVE A GOOD DAY!
|
0
testcases/basic-testcases/test0.out
Normal file
0
testcases/basic-testcases/test0.out
Normal file
2
testcases/basic-testcases/test1.in
Normal file
2
testcases/basic-testcases/test1.in
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#Hello, World!
|
||||||
|
print("Hello, World!")
|
1
testcases/basic-testcases/test1.out
Normal file
1
testcases/basic-testcases/test1.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hello, World!
|
4
testcases/basic-testcases/test10.in
Normal file
4
testcases/basic-testcases/test10.in
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#Function Test
|
||||||
|
def foo():
|
||||||
|
return
|
||||||
|
foo()
|
0
testcases/basic-testcases/test10.out
Normal file
0
testcases/basic-testcases/test10.out
Normal file
7
testcases/basic-testcases/test11.in
Normal file
7
testcases/basic-testcases/test11.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#Function Test
|
||||||
|
def foo(a):
|
||||||
|
print(a)
|
||||||
|
i = 0
|
||||||
|
while i < 10:
|
||||||
|
foo(i)
|
||||||
|
i += 1
|
10
testcases/basic-testcases/test11.out
Normal file
10
testcases/basic-testcases/test11.out
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
2
testcases/basic-testcases/test12.in
Normal file
2
testcases/basic-testcases/test12.in
Normal file
File diff suppressed because one or more lines are too long
1
testcases/basic-testcases/test12.out
Normal file
1
testcases/basic-testcases/test12.out
Normal file
File diff suppressed because one or more lines are too long
80
testcases/basic-testcases/test13.in
Normal file
80
testcases/basic-testcases/test13.in
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#Pollard Rho
|
||||||
|
def quick_power(x , y , p) :
|
||||||
|
ret = 1
|
||||||
|
while y != 0 :
|
||||||
|
if y % 2 == 1 :
|
||||||
|
ret *= x
|
||||||
|
ret %= p
|
||||||
|
x *= x
|
||||||
|
x %= p
|
||||||
|
y //= 2
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def miller_rabin(x , n) :
|
||||||
|
cnt = 0
|
||||||
|
m = n - 1
|
||||||
|
while m % 2 == 0 :
|
||||||
|
cnt += 1
|
||||||
|
m //= 2
|
||||||
|
x = quick_power(x , m , n)
|
||||||
|
if x == 1 : return True
|
||||||
|
while cnt :
|
||||||
|
cnt -= 1
|
||||||
|
if x == 1 : return False
|
||||||
|
if x == n - 1 : return True
|
||||||
|
x *= x
|
||||||
|
x %= n
|
||||||
|
return x == 1
|
||||||
|
|
||||||
|
def is_prime(x) :
|
||||||
|
if x == 2 or x == 3 or x == 5 or x == 7 or x == 11 or x == 13 or x == 17 or x == 19 or x == 23 or x == 29 or x == 31 or x == 37 : return True
|
||||||
|
if x == 1 or x % 2 == 0 : return False
|
||||||
|
i = 2
|
||||||
|
while i <= 37 :
|
||||||
|
if not miller_rabin(i , x) : return False
|
||||||
|
i += 1
|
||||||
|
return True
|
||||||
|
|
||||||
|
def gcd(x , y) :
|
||||||
|
if y == 0 : return x
|
||||||
|
return gcd(y , x % y)
|
||||||
|
|
||||||
|
def F(n , p , c) : return (n * n + c) % p
|
||||||
|
|
||||||
|
seed = 19260817
|
||||||
|
|
||||||
|
def rand() :
|
||||||
|
seed += seed * 131072
|
||||||
|
seed += seed // 32
|
||||||
|
seed += seed * 4096
|
||||||
|
seed %= 4294967296
|
||||||
|
return seed
|
||||||
|
|
||||||
|
def random(n) : return rand() % n
|
||||||
|
|
||||||
|
def iabs(x) :
|
||||||
|
if x >= 0 : return x
|
||||||
|
else : return -x
|
||||||
|
|
||||||
|
def pollard_rho(n) :
|
||||||
|
#print ("try" , n)
|
||||||
|
if n == 1 : return
|
||||||
|
if is_prime(n) :
|
||||||
|
print(n)
|
||||||
|
return
|
||||||
|
while True :
|
||||||
|
c , p = random(n - 1) + 1 , random(n - 1) + 1
|
||||||
|
q = F(p , n , c)
|
||||||
|
while p != q :
|
||||||
|
g = gcd(iabs(p - q) , n)
|
||||||
|
if g != 1 and g != n :
|
||||||
|
pollard_rho(g)
|
||||||
|
pollard_rho(n // g)
|
||||||
|
return
|
||||||
|
p , q = F(p , n , c) , F(F(q , n , c) , n , c)
|
||||||
|
|
||||||
|
pollard_rho(998244352)
|
||||||
|
print()
|
||||||
|
pollard_rho(809172)
|
||||||
|
print()
|
||||||
|
pollard_rho(151299083768042202434037960)
|
48
testcases/basic-testcases/test13.out
Normal file
48
testcases/basic-testcases/test13.out
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
7
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
17
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
|
||||||
|
2
|
||||||
|
19
|
||||||
|
2
|
||||||
|
3
|
||||||
|
3
|
||||||
|
13
|
||||||
|
13
|
||||||
|
7
|
||||||
|
|
||||||
|
19
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
23
|
||||||
|
7
|
||||||
|
3
|
||||||
|
5
|
||||||
|
13
|
||||||
|
17
|
||||||
|
97
|
||||||
|
19260817
|
||||||
|
998244353
|
4
testcases/basic-testcases/test2.in
Normal file
4
testcases/basic-testcases/test2.in
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#Print Test
|
||||||
|
print(65536)
|
||||||
|
print(True)
|
||||||
|
print(None)
|
3
testcases/basic-testcases/test2.out
Normal file
3
testcases/basic-testcases/test2.out
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
65536
|
||||||
|
True
|
||||||
|
None
|
6
testcases/basic-testcases/test3.in
Normal file
6
testcases/basic-testcases/test3.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#Variable Test
|
||||||
|
a = 1
|
||||||
|
a = "WELCOME!"
|
||||||
|
#a = 1
|
||||||
|
|
||||||
|
print(a)
|
1
testcases/basic-testcases/test3.out
Normal file
1
testcases/basic-testcases/test3.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
WELCOME!
|
5
testcases/basic-testcases/test4.in
Normal file
5
testcases/basic-testcases/test4.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#Upper Case and Lower Case
|
||||||
|
a = 1
|
||||||
|
A = True
|
||||||
|
b = A
|
||||||
|
print(b)
|
1
testcases/basic-testcases/test4.out
Normal file
1
testcases/basic-testcases/test4.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
True
|
3
testcases/basic-testcases/test5.in
Normal file
3
testcases/basic-testcases/test5.in
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#Simple Evaluation
|
||||||
|
print(1 + 1) #Love
|
||||||
|
print(1+1) #Hate
|
2
testcases/basic-testcases/test5.out
Normal file
2
testcases/basic-testcases/test5.out
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2
|
||||||
|
2
|
10
testcases/basic-testcases/test6.in
Normal file
10
testcases/basic-testcases/test6.in
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#Comparision Test
|
||||||
|
two = 0 + 1 * 2
|
||||||
|
three = two + 1
|
||||||
|
|
||||||
|
print(two < three)
|
||||||
|
print(two > three)
|
||||||
|
print(two <= three)
|
||||||
|
print(two >= three)
|
||||||
|
print(two == three)
|
||||||
|
print(two != three)
|
6
testcases/basic-testcases/test6.out
Normal file
6
testcases/basic-testcases/test6.out
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
True
|
||||||
|
False
|
||||||
|
True
|
||||||
|
False
|
||||||
|
False
|
||||||
|
True
|
10
testcases/basic-testcases/test7.in
Normal file
10
testcases/basic-testcases/test7.in
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#String Operation Test
|
||||||
|
Hello = "Hello, "
|
||||||
|
World = "World!"
|
||||||
|
print(Hello + World)
|
||||||
|
Hello *= 3
|
||||||
|
print(Hello + "is there anybody in there?")
|
||||||
|
|
||||||
|
cmp = Hello <= World
|
||||||
|
print(cmp)
|
||||||
|
print(not cmp)
|
4
testcases/basic-testcases/test7.out
Normal file
4
testcases/basic-testcases/test7.out
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Hello, World!
|
||||||
|
Hello, Hello, Hello, is there anybody in there?
|
||||||
|
True
|
||||||
|
False
|
9
testcases/basic-testcases/test8.in
Normal file
9
testcases/basic-testcases/test8.in
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#If Statement
|
||||||
|
a = 1
|
||||||
|
b = 2
|
||||||
|
if a < b:
|
||||||
|
print(b)
|
||||||
|
# elif a > b:
|
||||||
|
# print(a)
|
||||||
|
# else:
|
||||||
|
# print("equal")
|
1
testcases/basic-testcases/test8.out
Normal file
1
testcases/basic-testcases/test8.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
2
|
5
testcases/basic-testcases/test9.in
Normal file
5
testcases/basic-testcases/test9.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#While Statement Test
|
||||||
|
i = 0
|
||||||
|
while i < 10:
|
||||||
|
print("**********")
|
||||||
|
i += 1
|
10
testcases/basic-testcases/test9.out
Normal file
10
testcases/basic-testcases/test9.out
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
||||||
|
**********
|
6
testcases/bigint-testcases/BigIntegerTest0.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest0.in
Normal file
File diff suppressed because one or more lines are too long
4
testcases/bigint-testcases/BigIntegerTest0.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest0.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest1.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest1.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = 727163396536672147237536792146809584216561293147885917129304736948681888594699740328921459596563307503306479927533044845800920545173993526406911496835052296419079174243015381721052295212113123967426582843255028076408123650471707936677888716139800581873850772260583992029089018862273043353508015315747555075008366785387327493941180909978546360738165360043633833477449232176308537827285416164624306323185443896501773322595714391146401584212232059565284019997355136567183479372011251467111228184620440973736645234035352852488236151844342089128547669409048854944812381280072722984028022249074050035328268815034305789687785497042781357533475746053805750169706942913258653767870367404342246315362896701886764739037810968242587392232802521333902154049502859788709735930263048858099760372657373192905470223537405358576609201384000706947784895535580328314903750565058037892669347046102098763926166709347135606069303207465229364674311190494005517588044807517394606505944579070090645477938528678237089261243550409648202936747475906456923636637541395783751395122696842786151138084863206118326048426380547882334962679652222996215878968697319423015815075632195554266727964910544013681853013210500804102973028003968651605472306933165930379297951135030371363792126354864957641437172830598394070617831075816106255277163714986371923721723294405341441765216861279220816043214726628950874265993781324914488890045877931202741409717114679864007843703205221688285226428167305518287935436222543177255712199668590154603230637831076871568783785273391755253682449360873931041270721715429095363091049552465946279036459880872481773055445653118596599346016557940262852009335025120188605199760145007443054930292095054287236935932967103303354560134756369024603918868416785686975362007539363507386877159916868103629295509439094403685867960103071902402909682826491846599326647719587087625205325960038680813147059210438325025915328434620699411272893568059770824242328479362623428116066366835843253704467822847520369593384833664982345803883282219377735972510075509761779670937551030738928588856294242302729854406640446808391260236240351379459987718892747070131573634260070035792297025118354327801599145447265731128719375458875442999142498472015899586606705786402155997037026592922611723699867520792536286520518647310795787460441586301582393066812606390598668259542798567028933704723870577017862050898303838390975929756874977403506236779896093982546350266641208667304175838272992951588873191299241179585942183074506108485247587627279290509083642254400619124996243997987584305903444479611876907596764774694599964196743951822986742283153278712799037644693179716661264750308769315518328445626409177194266175065201245094799853219501909081211808593798324897587404908904704514973454389254893999952712705351582988065665951635033920523687896465101066131102129355340025582403807163960123515919079954934135342549874192113428722713637454556262640821028837960404547642209611956734870400853841023576183504770564072102791170738334230309403473839472133746595588444226605128076823167226570818474923524840736085376678785851900585397117501362004010632750143914526806011839094849279084625746189206351882638494844928680042786952055831718758721558612695702577200565017850755082385922841011011198106365934015510956457561631751791001979096993750850504662427085543638356305816818181099136638843630427206853583267525885713345908273691403168580695014582125351440441931994268235655367033953509601975043323590881341033642347069354483411071165492074544511966135611711517952707526672267644173471851703723650779468717741180805297015935496815669316395102104148550674176351876180218588687415490851792526374761359843067054851751632173080482351853693890301700181212211781095766537609776734049218250703542641231183263927373917154363606029483986314615018500029473478193606628107211034445045306862576400241086711700664073541496930580387509136682204503361945463213660057265888768436856039123745187972611485316285959146300276887946668759420239518787579012558754730597134204453638008163143475474079232098574529814028287100794594433442960126612393179007456223782402673105000540082624648392244019056658537276060190956411062795028115488063793298039523488784403283563565054840874744388685820174258189862860732094942493714653036254380043617544644693340159358149103734256179945203655334429595078852167152234209538730464652253649472003550334905190952928793213585812020890838549957921333690741314050881276386829261577614577936921103718509675662049048734031699587541380962303671663981300113511027723759462004460158828131367592647986094589197774263576249281891463839654110386478381505500338556300613309257718443444915137388169233922396938590618666843106263275713969125535810409845332193150906894728538089824829894407358373448549557329166039087728093787619814665258692486687383447885723292549337930403883447530145944192803444122852987235515809666001661950553694515984155056319941075695883858977598787324130
|
||||||
|
b = -2728335966475738414638470897802654721830844498804654499232688793168948877836832372957859299515193411497821356527025841316850619720266012203528889765714277355275526832653655130573971317354566354604007470439509321827339712364513299657107870509610346731757304819213640378622426969056786082376089230037104894944845156845707740592259570647766413246725561710348810320001660618408132837650416371556411927083840221859837888727563030489989478165952214823626846703029856914078879950159475270709762787784979721716442654122447021943567979492172853921129748189338427769062196734091217841069756015445832575940012849640255094845858628802172563667783861818535076331084365989485423350424305415408898530724999874046350929641674368931581274525834129539469123479278432563484911819590634633778491725260698775995410602983580451600116677860374831533373000565257427882721026171118111693774266486278772101482435244566773945585692348016207404235989843158523880526588509585584999087794632844696931070535048736678562326377368132840866339031307722874370699711052877408623704558633519672776745412272855314437985854083991614729594846921090497465717777550222804143770503705549621014413577194776781268891216427974293645298572588157654192744204852445199595961334582352164952933343090080039080258979494086448099036252981936207745070741362704134764770425486138326581727554994297303080598157089038301571432930323314195199050429890200134845603885782820983980102454564318520338937391430405781198967484970253611219190318345474213884979970505316257623877473547618437117256493492480567759909501285757955642810529465134261824405102389968591094559766425442936695962820186096866540578751755286751064440375568217024754377379535375568008539897362791901095819017624403995665895941679084289170673859630430168399170619041297211387630565668353004917990661086689355777197310799049057973626104864493342643409266516104307836508147892312431219181763806093225536990460607568742068154138804713762849286174558858382072948439824912995811760738325801437110829038770909911701772819977392581421853817950042366477814840843377273290876130622260070373260259262140963631821040486474841030732148037663667279804017395874073287873169900406557770836474978025295168193404213957987542188195280878349435621589971844779306604992553140439126858646314632807328505433044220909691517776909462192867257290245869886944611123958564856510552746606007197197096070692743927733941305677099339714136869992549313848501792822015589004432720557248975963038474272168184090748616140292311716114729891569824320728349810485212496433114398729434166576985666888079681582487277151234070708373768016289244632509637291047687239902505446919930334724389911258190570388136097638111501373616433611532110808940299052446147253916057712896555041525917752357699847017174750293880854193332147114250074465490289045195393355945078418544356481853741571206946325724727780578729483970100824060108442086623922215451195644160541914284143070808200626090169212683737088945049457570314400859474779475574603600861239981458267935385230407152164238737060133927394843732038176812145398831125269433694984467045424553903781972786042870075382793819424446018261001810487769993634676992561268658866018152555035099249050837435984116995283945337131366218760888648851296855731911013065086620530959183047254511340669821549890094335067130233390269838244081829650045607816361152028954240623528023661115700183026439346886656601345734995879061654832821773725592840703488021608756634464862314204203696655246668694545613902776337665816927523004830924249109846457087157417327218693356239627890743342231674119597953974774517455329950672939794573613199015589189775664077499188337131550790656942191675879578480792839552678112803283727406559410019764001813820573552682036164559215562417548585811146236646662235398519647899719493695300777206841770368910218000383742116034796424954122547222831954897120663920651966651981551092225894417876855675428354087625742474087610451477424804021715083333968186129705932779416755445769600875647814881033863678973811698774522547042440714254259065869463614061539172256615583978383653317337771050522365573959493569680321882874520727954676635199826785518703987748007596534658239449186140186652615799673175463803080500705007437603437938160210334737008109880915042889575064826311073743627798390886067077842884633743331752493787698609057227503594520538245903937247567534539373230453599641571756073154716024466105498131550379750136462477941988881730046244586205852920630721821811421548701418984055555647162132460876929488169602324707055114362030972060005823264733919730204217861607887961400668
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest1.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest1.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest10.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest10.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = 2327172523254280291491780320009813040562331873848593404228468116197804163098426504528275058946195015747969161282963700483481231951844173762305235605692615928470581528618214926199824845837816647697117137806852578792598168176995908534418772282090426023017035685707623678178655903702683978229307371540153695279189663226241360101143392217637710357212511862915901689206296108196048016067315755207408356507705981928114544577712954136260708543326776891895085149814099767368896853398041640397484125300545889090022935107235097969185914428751707783871730619857157709011601411821176078583526771214893713751165924047163670999667473480333062232649997191917084827391171866427670585135579561979852398381605692948156777179861157905411720005940649159987430483235263903049097096023565998787438712518162696959295255780149914218796879628143433881515133219558101516883256921455693447469946545728369925871904189093226459103773344624554005624695262750513974382399560275592470009218230028779540156380828928749466564733009130501364359306644691431328404019585718906717852684155879772121599286323903725936727562037346990670549424647813433543547064691765828768989933873888621468887085328423629842039194396721569273871787761903083705076121957990603830482635096359878906435090057026265997295867310726421996166643732479935605561724109232246872343478760544844914836908672719102957360219905861733606642590276560756268278222176673472428637987989201205592523903654345849599376775364237096727487457214856839520058579279999734112605838266664966965882630710122409360086839229769135251518158519021115652685277027519426367468353862018762048828977582345953086489436920619936178442953200897518988831215142779039619474917454284367847702121473730346221615532932527243584107267729446938932481535592810628596301341789457004167048872551815815600850238731042709236255351422815274956715469121334570762935191748185285609953220716305192568043283724470609903347517598388056522688250307216750476718672945732820992301476392587600534160879286108130954950893866319848244208759583550835229761439485113746693626904134050070659676739845236896421949072741240119881876897691571458735145564248509233422531427388727357592398638536770502167250639532831229731484966909282502450144818377432065343909787027272175463972986818455585294969466281796621335673409573186568336268194186706829762262013896744309450194628430459168785472829107513969780725153982425273406421359265941187310586198237688500197130694823205793909849031211894008584813831424150516331748397838227367433508847931054854303755317457304783424420209936822622877378581334510326589336323511008145056432273432471058861004630481983060496777345952371763132605118858981253581172517397766672044295520498902758599660608726600117411380268785046858198422331917758551825020079252147433747905854749513184036638077534528945561832400133039900212221643965409012862473926932192973478964179067598372296849506736392566299824196395273768690238777356584374313751981087474104758920577990207151759703798060534722366406878253957219836480194437516346399606245674430587957286592072038237139608338310268937110617385759358072075825715755436042405740295158837451621559220593876575881993947831913894884141368209601261758673177321904501931455266612004309965837565795528053644002171581825887617004928757665312393295599809223479444678001490937441068134757892402636680177477003899358421764092386019999072724577018024702667586012385594485398972049085803140486749337893967114242920929491925168976552405239321395308246441582092159144667623459477782008001957509999958537763807015379672914381597645164654997440505168995753357387112455277556490114642490622514842579448901563441816300222837762788074720698371350098034994223087328851879484448564814312760847464323800945147023875139638871491842461185908011162721062565060324381004001676536174751408920137793577111690263741386861306420218229384320073331972080710948321199368011685091804407720667388059827708598793586449708590529794714385970941166511585214812381175475982710264258225944737564853890846789585446160874250295101677448696279361283434969663065388215640113117355461495238045773663498583699045637145415009939034199744264741672942506758118588990130221532402791733214291301833674516973924705293059427568942548721563059482960169485051645155110913608066935385084707676083714072283767321938866427809225167548383486074446199423822260278340003826446101260021954093487824248502264174928080800606939763216342695576786730107873164740782911519260653253942616640748338009021074742852402934425804580868670627912402119082531617598358900034108203585098308382323351837197614828915305379264043608627591028594692858681680125267787761251914819935558899380227717528509340550317086637892700700572911203637716800212647770667537000029122237791744526227231320608274998451430085408932181046271713024886594182191571888981636515146835950733174768700624102
|
||||||
|
b = 6280922546047090590890301874984192569470847755509698790994597674981954736934164838262493641343818816633873038011889934329228781460457107756538743348214968041418319443653860431101619881318369344267553985911056166661006665230865259628943965569748439354023980854854806861174696974301380663559863774464177901487299282200640161497914857010456214368023175609740071852442575833711932947079976799681042706099068904281131652764741735579041683164102579046363227577869923651982694367646412474611092671078653355591457709997497283513122366817139958299760527411868000615629392375996292239302799855539786906015796057642311266251876966784346271740130730234017295172990869196072793005241179926130773831154719750996130465370615196566092655964249698274560190916017331954068177999301139461762389660490811172148998201699316921854674728386460315689810649431621743276446559554662063733823473324148795531247304723359237353657060804535727351146612780164783303173842611633953164343621086580916879486161468284087557138987589778622776628505131310574503040570929841933748551685478668462148359056521610912456480026167595994845677166476690215582869590879458485594678298578581660784977981826369516229132255031861989401293030505678561172432164904172932925828095469253972222976576427541459200536359467655137934563470101520737671098529240378577865162639584033292275829577096321593194141425260630593210521354764044479343420661782635840761351630344730539075459763066967060500957880247467617348847977742950339021598438740901684132332826897950701690786278774350297738878747323099908839658779932399052910296710017248964407244366525032249928090733987216284757847498699405128917767852024386152050229356854978313759875187256602897007335990631208846649805909475997326929322804197414819625768729734438960885236572307345245682963251313727895374492301146907049659135299709856739460691234729186167463239469381146333115332050077443954627074459559797934368680673123441949261423236127207308931547710231432134128215335760075681172279435293600850293189114733589492308720088585438410888831137365746038597919862486191138580944431330497739158532994828173285895989560989933062936419788110719975604682363922378552739657138043284679427370993939538054094601593695482810643507799124677479921331056017052348947077541815798382193012083929565018072433944077570115986334559552058267913537918514190442499455433097801024847124301979475863443434541722293877432217192686120077594155711216662420933262302405943158357477785154255505744616243918254070403036121213478664513864804910950739659829462662860130741502988867936467401517028752041885899455522787622781176398642848137967226021189996261601506590097352139579090682472658874377857552027527061396422245934692174891405637771687439527314149560918523650752269039700397260836249761898424565885006198833337258026147125943998689677736210292538398357659917656147707774575207138788416516914292983517889785066584511797774646227272568008238646086620643851860973719343329160873917718351522093462884009225945390682440778701341568637278424726224896923394569824848554137387716368452381827782071282200987953998117038433670063994101600021740134461660160970105192286952543872992956670662411516834531098884645507196337935655468719240533053688550774007344690789108890410537104056869389661312822139858083711034245922356338387418822154961774431682484189195002144644402969594161328826129273595136356442335246733115613522286061516871000274268594188752411873984425389385852881807597951714171137749882412291640120301605499272602731458756784068699293487085809820928738308765848113348629535633399807893984065201641255792325138351239597725466876710586831058340726926820044110299253184897038805889423417652362546564443442064510888604407691841903914718689203340804037583344731721880094361214888170773029245031823571638242437954672984866923220469786541747824658259942556954807810143032615236253210096441755941293571081975610680874797590385678009096687890521147912004523507580507033370848508749228161833456937532632819318255441618525809581899569272331652498474323577255901758380535282266256338440328624254796356122240796911399244105466506508785843413499313595666318929997872168452879528843353652547394996583658636934106777279314693376383484044831388260227562143642974512801798839449510883985856725793657064575062391220097067228245020454740177440061199249630602655864648328278576508726370168719071840760013870811585642360328621182098654672898737337078960964226160135743081058483929402892165243891121007721839572098828831815119708634888538915006477133954506702528558058836601884254715319670556452564900475659410058085397007339500259215343357083345618391682659132229983223102854019841118641910068980342547304772315303579206231860047527454397233634630182985758552104299331954272103463500881533141112048420635067305653804555791033233069663011597376479962600905832908743670323793539092090459597845158676234891923875408699116
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest10.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest10.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest11.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest11.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = -877410326426734819970023972544933127206285892324561107129435942507300984791637637391413805170002604470584177144742945655268459909494272074612768035725716719796538624535663657263562662838524411079984060809893273205863998113804949973488029120490002168122546772391611760917420543884361093253616521635894772379734471729827218656432395424009809107846506471064256377585098089767330043770265839374659918795229376222930156994459886485814125425663821341643274873547713208811073518747610113464352724525154965434912713924681440312981992457812006832974438209886705662400919182121871944545809360062053710719490386081987797583721212844460173272073253774240008723021843093502864304794604912455144576450451964631377850775769171426235120956276683106004250569771499077844543327439533082132819648572795090778613716851332182332710542763440780114426103284615528674220398101017561845116840893724421336036483835251939215490908197298818392023553490468226879585428553677055433710173877050893939938812077934912650858273928705179509951874259717143748048865841070165371921486613995588166603435510683105996918633417714616160692541003798448542573033109423000185624130407182599648542406063402958258607852463515303613507393556495527797931068436415065879076672022677662603583225352907907742142240958021713806943707837476039082300463917310895411250058566323875649352947732571877099273638148487521503365139394209120715092104617540188819999135368963208376251072962235658660831533378513201280677175560884229102261966962886058083245282079130304781567347333065456874384645456627224453190427748604721753848820881025099339175938830718229441313690430882108788551646563552600200787497905642762093934834909159106892471677222921508366008980944488750994141236476155660822077373550333165718368982061055898827585365556875649696262175208343635416899608335592106828857402173510520937612903549893553156816864751719197943522586460599742055472012409763699601614874441115611875954961958790069502419157637603724734828582494959434696118128544494180113964201987712334519306771802361774312970676740011822755045515824743757025492492523147220301855355613669312781904949963934125466961688131732795769154328314367311785645470078841757964101439264994338457420568099504479592100982956086122855904193788340390853569179462487398463266985844690699657787771909375724105933636142603848307989068330104118501905398691884964987783487275777996709745845675880494095056285400936854874111564721017740738671447332844722028869191921827135791266914090361150697754732293108862615869402482653097372311759916169212385497563773562872723990914087157252720844313524973054101689671028181485147037365429193757708878854460434782091201695554072595485451943663473629902372659282769557754766675487842777437987475348015547884182159078698364875440272148095259457694698419142977922542854000239047634472641706370360530930295691476290570818621952638548969982736694809462154662400952086983560229603822441093057936285452125159827267994537898551460320275368551842982158105788903974408564306445728436388484694324233121559790820473962152893226338714936681761559943148588935421799227028148851272432069210960956870133715279132154048308749902980000844079249385553632882519520128904769224234981920729466744622069381303335900621956388954517247311745197150193065771758000204011905339395464362088047359287706932305227350666765549392507996650458912216943685306126042992254387416117361081528527808530544042747035228782385456812173707335575692721460497218932013779267123704729306808284619218266061354445621098610119167381445172136666422544703565495169970638387370283193294052068356463458930241497433297678219415296708024576563290009067986705405812717105255721737432490476236653347980712456852388815249170848638389773059393702527367033205246727624140138732955465568209086665645012380266762618187577192569442338071600273677678285157300120332383062058889562075324317354122568343613641986468945719096109415434818465861667110561092697413904073530566390130741278625801979308418725049666608208441536117277673107614430504963650473431548955784487299588245331798355519018023389727693302506078880756484052686151149268289683253910146734109895641725061075767382136412735298009342347776188891478042992843437717877825760476571073748705171049143536847046785185585076160111075910904854078573003957172393669440859667080175727825982079431712983447645339511522981843385944236434697158918182285488993294929165768943559529800941761427214933058195986955627634760083480373735683608804475814502118310085372595485934821443862105112702628801792402647768807306055102328774238186061060628485199474303091031644353120405767579809819306288
|
||||||
|
b = -776637715715752494744785878179729627251387037202437735180528037540314337351391314967020791815101235322649249085312295035682815020234763104309545675485230773766495154551919939061504988711845935359682944294368960920969809827220891071422263453665346829671677189888576646873371024449807608610753309935729977718902168739152219048688604815618252795069390033479386588842698055911255300377156599802993468529630447069494811223950382921187760526072414302420229994050961827501048330475337054693841041789565160099302339946794045514391430785958959445000940720511331733171151804447470116273442383082079311518178512480060500291976268196891528310261461928687396252007480105840220400068013553927348920575777024007472373285646041073761584678187596481044300339347892510288990962914229519408493173672862223251521655154944744757252825280292031278300912889484860419982116746586200624227229135565188185649942943552788454554094221425681550687507311194094339152783856474900750181726646432417956446227518266049179734200355650334494257510973815954925569798572838035937491857355774273907543992368424736152887183587531113507890527990412910710501990778878512704625460877125096309009007275100499949005119516787033810413391407797159385617370713609963467882766938742082912792301327967090324392923116060813058838284126227691564443501053471423513253863138947820326199286269222587686538885027903683776370538808905172571356095715649252294848865832899663802380717032347652518973206083654823264652986190530970858547886312363645811286935944328835320289995653642355296876015158540915261312365254874103092490921537331453172850788957394824113082865794520657488718884946956750488916449657438947768949169938100485908558891429529904878570025273485436983504604618427154039698761036808765973264742894373851584708448011423464152603731291733679710375273033556597232859144059028447126869138072961612659613106465684432265732926997937420301592095131085758337198775844085312413361881339934576516334808489008921531919211217526335510930551877102862308860496468377583864533856729239505398005308349407692080129523864695122284437826953221762346744185185898126120700692669635899941295555932273040409262097490619166118181814507669537945977228415544984143577433342823579482893923219931794483580604837874761868256656786917379011903179805896319905588915815494792855417781614085016898476793826974768910096763782284627689832646610737217140975998296946919104163371683206498607969462239202132292859766114191651060510571091322369550952794167703240365502629544956047108661569168575036174295439362662371679755475468666764447570751837602363465860797898295504087518850145437892582930822118586990675418690216425595261248592213262821512304186561731273398457048824611120062554743618313034338497619196877076621589112622970598691346539625499676435298605254520190468195418025215743040238916476810903783125712442720179304973989089600035254070432764647327465868793073421002850285370599182869795037750778103223903706412155638044774566275699632717981441166958993572010050209266717685093726476924655614813520844577544869597342305949913693965255481875430481588955596874833376363409728023494505017992388915239611229822507954597133879503238144773578300217849660199572420170684652868553538398739672323538846698132279420464548593019742907834177520729398463763684653155058497171444348969246622535164640040824167284587313570544580120801828899988090753584843904307564354573240074241674901973951304586541108804155956365273749269723192454613282437330205009161013582402722007031925530257961512155089276855062750013122273590268538036930185203540695967885299334679391907583262571834579593017016146224538352745064914026081838424841605776083430084992861794710259580346100192706200929427620197010523429128947895877220138621624680805177114652453633079165924129684219754885518647902594235957978422911582753963642907561049488923806560675875344688112592942939870222349759074296894396074500246672711813555578503311019170606943341486874802155570554918193470641993258424150784811030389923391141941307508329315110862931060228265241275889808785602867711460148473297518432030833677875241151807790138769096306022037544896577905396321143824935482886483645278671580945743731694602139494682306872577255587695305306376332647699751038459944867616588077883625936900351586200733694410273855667008598313879480502455125325866768386332752227442588608603678754640270331195602742445033240688343352106678281381444415419216195156507609397674404548568792731923627863120244139365342728796769263667302084227661434790399361600399
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest11.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest11.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest12.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest12.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = -629526331197277938750699965053356101081958100286999783726864679227778190550183575976659564151832898697012383482836818019079067868720565552652034797751210278634434276167433698059224892215842986804263889816775984992363907853270929986926372201652406183302645285976568194814128628187556173625019877129307270302529176535092792486723836219438959849133916747888001268144230638131324180008742927035635309400392189891900635940748350228909758153886120865471027744104144518238883078084248594127731373037826478739205510070214093508653210583285080407643499893435345070818079493913254803057087250778062768900827628944655347637830611207917483756364996867986527156952681418710810355806896696929278001916321720488459884972986211793442073576182739599403176432517530334914157644559753077684438379921290329276954500301580563379514370955910771170565292912212869242008580224487064538299384533939746554715745431685214072893404441851282859888516139830750718088624402672939606057793043855691101099092957530251578752146049191974545492656436693711100632646930878912232282759417913110976731510884248880849618403796478233813320137637425466638362938925489543357677228006992776151825647780619730886651332892626913083515107611506107595673301822052984928006542835513174592758559230907932232615372607027412136678819585426325075735132990298619753251056263921019230512119371784024748918529578667169263634450801523240092060297519527066160455787331415451080932123025993937772946616760389786198681576046617946612162569829825410757186562519067775478000847613495918678775633702003057701226264714897756282869697967901264224725753495467424048411484169142183244555092697830364605082532894419747328681781414995186762873018233756623822794288261006103718952866958184785496598294017470251560844657313000172244034170264282658449360609721897154736468009651466120440677002225703641595541706230768499186239701358528567128746796515165680349660885409948564730434900493898844588616299842684127817788242088796200917294984953632491902191238041338894797474538988120375014129809274926264577920961223228252014162902867365422027775621407025253396040556521601955210513204754764650010620192358000442545429652310993632811960539179984540820851774914073679766816106191134197748861691832597102916687125433683127999583690053378106446206375315988467625786331142764225299216027822021665896575099176410171374965040669672484175892947024796928028967293378147221703878982723179720223783951029933407537113265748838549201012244537300939400466443926872984288880490686406788331789093957632495471062216039575225359536938208141456609688843781724568073047650376306807350587526589571653828038919463085416142655642605837944156416715420518525085895469487068783549632775093749408095209064066582789195896382554088507269595978703323079088757673804192996504129461293809707283314477569737444199810468977173878136158108707512947991258081833578983698909536677814484591895590915994414766744704451387920362205469759824914890531085886728422778520417142140720498808807451822450217172277808649236165633539020169525934322415885616852433607093911713555395427416938176712951511962509769504684112090381789484057391620515033287952098064802091457432425586420069965835302961404686647727225450300991747209931527792412955772110941347697575126502047138848131656534578759458182559678902281092352740473267964634777061456843275760362837797372286320316814402732899819301153040751363874877518566140521323099063795948017445482664749278587371434211143130997065191445013419719692297119484626769923512496741598271598588927670715837487821036365299469404162201593793097651120764023741435374240373256171750712978532535676043048022624512492767006170165476940938909750121514120916336869334278737860190631729742240468965652537458625621813971956272129999992369122321444854423749062532980368562665528661623530835778243885243593859619947071529682872398230211117279798719992673564107745918251420197837333910779405584447657258106834004187300210678219529169880352336262463599850971693139152981674052267733008023312306570969933031690613230459869805734304946914631722966233151323187718453260852549172921409757420005948139045130109057025520045381232085613404413149189517460485295426076318393954512662258422969368547276737512884737784216061897171396826086113219821360605401652677197661975811985299164539596566864912355266558819579357561650136639686644457651531322666316339354289490180664759445333008341303869352787981629562555159963166144905785469327928780453272144618793586615106677647815686554612009599625421994972788596007687847751492817955580913067612815256781117137634147041408696726522146688250164896441968521113732407399209340634958894624248714531486776025536609702477455238759623249212118729674955297972796412054559283024572561767430007727939628240689172469898244064848961588175
|
||||||
|
b = -963822197278926137773893675056084619436336477537198360236751707558361908265142188273158959631349235941161413797440315668789839246899658425471033238191660118366980527409960067183933756668374818933419975657280806401206554448538692615920388676191773875342463514730696477038913813165259156757888041655809376510923007712825102857185174183996042804472128671328426440092663832388189477107976352683196754359571330372873766087026735122778648097748915669842310943381604583712615514133422300576819132169507462721756406787118173066808735591877728238494432438694800247719666110422344755419848164518698886875334985662749205808009317375028860178222822960576108543436746607613126151612188494844070447871832018936924862990298270159103141408082322122658468807737290104003000206134204656558897249582754648983326632421872035277511562055058446237053931146464172367862164719489971077222862587207842294598958943417298892187133470660139776619117930482909861465927497544078604379507807606306385997895021288859451676962262423077877894878684998256699392005449960624869492057718477388274328701223076108526406424592194913711565690500215670588495824832727262333245905397616995040831115971086549471650384127033450374236097374945146722410176340598847932291235151034828506335457290925416482416553421785643541144896828175098830695461772213392816863740702825038980460717243006834727712722531772652713858111143963804083801741271915787593066335177681438788902887685633063668534903249906508756496095691169417781383914546391508903512630048726235828341138344602806592743639690532596314142323620737971953607338026746546712120178563105993715779375423282123990515110176610011175622908746569020124189976845150648948657847549885318523457583994232980358093335999598279607638729647991291140377070475448005378741150470825099694417960688020639422972718858285799276188838743110602677371226638861047118152943723244781990247646870266863400742463319504143323341566012832065239815750035116283978035762126091734335876397577468729019025928879454174599686232943391656055820253525316453796686073355620221126725181394972377133481717466051214657805334049698268046105736898350851625503032864759710962532528933880744041534395463432543196462037271307442474224953977523971758091479715875086797463381835617727147672082588367927740739226117653710427068087228609724076196366907502734368994303692995756278090593392431542893297816950504735530020345800447459833120997124991541999753620396479009022509036183391548965717551042927273366816966927272659377718535673839417890429556889603240109612843184945898041531212760402409745825635351681072318769227922174905031899518155191673299506034245560143514028925140466337367652717475139831735486666370447657541137937927233432029772699550657013199615435823058043614559454727283478585569117931250569269641649622986381994683384842135585506457508992466258129260853541834936809765100003273342145527802857655335352929698344080042194745554017404753239322860428280448241860883303521625391571236354122043601317926695571265582318231586348326226699915114385672478593387108288401024827432747970627746153226277721988439560504929709926511243050246520804097556537039635857712776056167703134920465018986247654381169218839322611423792829408068918720563103393228637719867433739222580741800281115326119473080483872151868413105844686088777019627928833756087863191900179580342888995075027046089641323208866303738648647874509950517094591730080578391011884821991760502095210398941109913916238913516143589983190335178030742267454757163209710675625503786039458069918019498377646944358629136071357292886095956791958117282187205506268247753322564717464201706070586680146799864596682035586712379166173540323203583548046305261099884265491637043249563276677125704577498808250088124284929710438299810694879625241502037294973979878968066163569862993217937088263711486654796676580462252068245659960313904106987262811308770265645140780834799817732801375184758314305777538671039718793519079097301359871651478071339516032397389698915376531428274656181445678232250888865084399408991158215053861267555812906345186545652803882318736411262179185449101661368716791783120853830249662704454366828382473558169518241542438521009209932116565377673568645459602517759968683723827452251660841076522585744639794708117388578570398361180205676908400620782029575633484334176071465895032451674053530875594218961227272640201730680711921163607149674405735033735370418795541586583878302410044180495760777064878418842600716116562584976462594852698838342932252461617738248546697722255372424227385818986589244788583979430176308564644236289782036008354684571155726548741603339865561795987491288399339760789880306386732501135559991870110976583628371317499579490026490816539420719074765584975582171306890367007116817118114729934411876684
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest12.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest12.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest13.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest13.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = 49974897309132513220381000914249128238721977153999815848334851569872635031952524666393893213175225252520492775020879785376616024947838257664343449306447905152001993805959089968618596660214026302173361834668156358842295422078980730875825102326660941845828034803299887642336562434972721300030278318490026669665864410889557915046920890828256529369645998248413763390723679036121396910987054978497263776596307519213327906399700343956287925218818907114390001094475911424957360890780560294926662579468023289066858515542739642305034873757629719084367811820558075375745944067587879246465570260025202815018803160579692855388717125043895068926505951948592318566153332583032134039653504328258687467633255426200013704132941603564459131246477616720487963020560143583098196146992779502466213520341888507878454965897679801496633232588632393519469294048211681141610757575414467977113188011321360505177941175562550837430801284971361728192279060509238149640265516471384047299193777149085384712722550250882955859148364221976627042455225418593802932638227573965760259639666722819806872075626456431540773840414474583145174035963914595392095742886914396563969454208593960703328568057849554228105478876256452302136729882946448184836760095266038166462195501962668179173800177626367489955115424010735465459817453347612995233230849278841570366767272567230395632365154215827606477039911908077170024354396819008051334518686983942690147107189432006259832388245865159030558495269838092452451954101149524686222623405318619163891578226226788660410567923804819258186209014499249795914357618636729639863100802917961475077048575579804648685505342717578215410193501527542957175331991706492890724854736238177963320718232069775843831075894655566283958921989508636517107585369489529444711054726782019720118167104383924812326460996955920672291416057497400695720132410679221750006206730887447968726945181167317101292940168158549255804747410622583090469531400650038376668052063697076341757576747766491189088230170262212651566211632183528222160043608476080393049762078134030380569788962406794087069020059166407959260634437452918084924918892476971852662570833780455235162768348295866355388163269020136402340619392425712816377666343166197613512598467288053500295375685729606656078568547976776361043128994407837702789906995654135192098370316709235946096044410043635237744595565180204497279153527535654849772654563228409153562397346102663910602723239021326183103045418756349348714982543113129681942293564211388808024786332467813901728490180659891694697104046388904624521266506515191704452134949640403443847943562135559333461324158745394172345561758187014938663659562944108963100282896679084368050219361997690003148968982804022265603164330329496422058489859586049389758624567376996698729936124369249735477003210787740091105928997240868814626168133636733745210010338126299991676824900099391498557144155809402281454121342592074685138667224853600101381080776909337644184191943940313861054548381038464484187722755499820864487174744865705861356953540877081065585091165748053062542679217684644640590072646830622803404695536070577950565682653738550621977998050697712956943141423952128905113376728495055702360162176806841589227774214967199360983779773927332545603979018823193350549341479756591385871446162409113792971660546596035518411292359431187811620145046526340793378317035422631726607972491584496669223175483475526782625933356690599331815662181882705418268576881827648343979000702517333511060138187434720974049663531021966133998897171108733387313607741958817529087604203605237602809246714681626823692109349944121684475943992902743582423132623972566364192439220560657723115734840477161252894960054131762561710098033731760886610642832025917681896144226650716831970342610410762079596147783390641273720577980773863110450137808970255212762725293975963954011448708928729078853465042372896334191523716487110175831713945228181225230482484064892495249488538131678533907619156991450017283378767571751268611714939201196796027045916652040387084158060661174846907335479124988877924739426570015453021324086323822349773130662847087415976960423958624253722409028844153864161303937451345460570532873824627643015974602227731495733062106841163434578921346792996179139724992484494906734218887145806012199260822142636835100757175966343055423034335342628002930420364017173827490862364397854030983668133031518062398044949702498881825747366786520989016354176504552166658082979318155647960069409706121417219336087074366416269839226523277343176092199611103013254841639784262735754655879591198078242815502199982452937055451171652444266421527236971965563289400089786009157949462599616667119218850265996178373750185189037572668066585898932751544185706941674252731307388462003120050731533310513176628755338498006019487609396158421887411428371635869829695225694
|
||||||
|
b = 65762148520577713483311549977802564877352057627773300555591542831143338975544546655926981171049006546627550951453641369294225346443613703899968852676773705409317609944550414625169873834133707309855804883264546364762162546836038558183050006977657906391022898257697695009647514940625590909249149240449778165702797675238126716403889284330139548775903811767942638401729071907358210640606526363713555545801637547290707527859661933472253533088259105647789686654586754289185154097511064483542214714545965092865100480328422545581313106052925728158592967920146777227994088747983321873628229268847184583709781260258187852497995648889213177648838414680829639021893266974950124448765488983091737367160211635769048255994590429312641622569696523126101841679367097529962247455708708308897175432102957723099720136248305821060729045119269758822720910252532691659098847618011135190927129435522501939709629660135379870750179455814888970358188219137470175824506453343356853538021491206602693597759961345450952681933871645099260482620752472516666113729273342880368290246650672637013297508188908387288099946604174149579276761274916392513564513014132927650520798249713145852984781917361941000595089405058640327885094476554135324271631992528412514069145620096982284280876841821650991041067937750445189286752770835767637216362539536240631969293529162229870161621090729285637190919032640039039284941004927150959297235063376539638887890418106521403170480756130809902475116776517902810991538870743692346157450870769090748459159767609016208338838654288182489465881223952404923760594360571619748621924539079616880238030081101506670513047776005414022166008982043370747795680238877217310179778367481281391553650518012871538054595290842239055373400418729192058001749514482580442561151955335981197111747388024965445958694376279578364044105844096945768401896000673828169811702125050640352372537758640500007116286756706332254339586814840873516029160675772430198856227516346428461372636762519957821886473631012556670247166266398281044013576950497771814406845050011985493237215416386286465990011193948242385064486263664825789755718603259729323396680388813706768421678923590911075016598127972535908778923098037516685045997121297412158484388938887006525640911305770513846252201876396363842450632190174775911801563094115476793657252800389900736150667091616710612519838977748951805627275415881488105054870563305928829433467880540442155138137919330555906076651992113706904266553705098454485134015320231271386247067631142175812268212365221765840000415616724623207077970379849007434994532239244385611556743704864134146748883939732155196441895580609007902345636124528811025212572806902862719171603858794034800531848195632037228956228711890518396130196705488455535789090355055763520084208120070850407393340609593958932556468974390254160489603795435815503048444804886955731238892236968093578634345688547037908286659152165342646482082635651337998030466851971052694017789514460362951467641943550252631028158151844145553962223020971895908758703943503952794794968696892221282165490690726046873479899836674884982051864371340341449129426687182819897131483090172394334917887971159476480372776972850756370035633647946392535431234133864946235980293396065889432981236674383516737831653730217075108975631793771084339258929532149293776498384324103323843336500257106854317066715436301998254236983099945058887005662654611247518569328248241849303945244237859304343986331413617054364816043596873356313187754398117578117353563097481453464058307413010129912920980143074862426510845318520468256160877254041404534585966901570605453171834602850988903486651812396835371890912830688426496429581849564256866261717068013907586650501300032049888615590129855689237990022212475097079707931019126315351325111305688605714860568192155003678441153647634425478390677405957067039158447439217244050369971036332350897086665795465071867555031479192923228751108789996846568921965810497460559496664478961083903762432832991449980971074784882718194057138759209205748472804560279209230116818415579572223790645365595790242809679707268038833108771452988925450442314809189877894336378016790439129595561476856136113515762855191524995367384348933086223849872781017729413390480031550105934120772620306792389771165452446974038672711966778751939601511970376004114940628913390740396925977327141950496930852401278865658979663585244015962539006820544355085344965905768313611517482700886553574224462683588501112114357168257632656666170770177816411958610353425691471967068959684093980715376787723774810064126599581145803335354231283005470
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest13.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest13.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest14.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest14.in
Normal file
File diff suppressed because one or more lines are too long
5
testcases/bigint-testcases/BigIntegerTest14.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest14.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest15.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest15.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = -94429730024920627301204494616035577821815154729554930752594793914673859721515351182006440210372845307118008705686575567016553340593076719327895253101026637785372054956545921129119177024684465851973745425614320721782322929677308317319584333176881424003709311353789226791792623299042302159998268702585698733946057187790628676866162653546621983147554188478884222973235125468760470347837776436042722697613549380650288837253416109495800300951744214043366379440404492813335512186288106704846679859976279379265922701168694676360318596147027868396943064534422479852093012256638916102537855587885265260338963779446388216866105384305722045930527085947497590196290597915028493637737979319673614405203817794349539814384527775158675761408761042405504597137840160008491210756499071152245329701084832505038714699485463526472186409916414278204449428754852230699146970334163634999308835290265282341427575980753683736875571701341069248121794434576476155002807080300310699133793964073273946758108897903531242485489728757070874988523021803847841628876474767681968829116437433150472480809688863829025391938086823381744742617170465934686413018146142601540221402943872586354984770560180357860301707112009829933344908112249247253935815447940422026854412635676923892889515115472135088101803265812711484099818255416634556186371616328875028632949431761509250842322613055474583821734050043941129868898725771090661205803664093546397371841869947394416496287192527318055784653637324101194465320703718379309290345393028212931897172224312125904736949791751271224298914877769154317146082988014335635075473352653655237952558368580080047750765982187999232672678577313121315178332941587788192339378417950968966850573564687012002169417593265684165033248396255353568073139917135886158218054807605483295420461880510543392181298526550806780277430299701712321748106573378648242054732762588231316579171395889925243669344967819658928647206493383737720887350070215542554213439509699192973866788663968454060251461179603838208727833104252145964786008162290175678399950789316081929853847002572084540870573806636864507958029429525657686425570975321872536490868042843720552321574516227554488564183233279284570985741939321688673703357016568548695409419729959822420932933871989430394352584326718542659915970053952951137796022145250367931195413264225508333945442467706800209430207248369736244957899344130028641326805731453271708872047200580078390668780636153040343640669750969314030192675436587233267508999248219843408051828242455541848173618095859906748009510887549095278503075517307121151263055080225749295400299972823376255596448955145339491367968827625638031461618260451891720611970468912857612351337639926852722597618955448793992355570390096958675749389081858538230937083138403328859871093444136453793134391815209771829060054127582512461134823320455346855182836461486266376979352393937157487293182231265644335731815856236202915851666652474040740369555262003359227532047903740822646374698490865083920289792550360290251113336848118634632220662500498638004018482094768246957621222427005363847448534096994524619294567938824608587251253107977928902782822385903822593423252578038583550265845627191615770835833588672325839080719230371347187486525256697312234647594865734891595242783433006416219522296523246128337337820696699213815435242588962435467093933173210000575759163973387898394961996822634899745353229917264583653665873701954073935036012539994485418901370701675213096501775170900458188826984104931719150040837205549054445005663913743601182766007632396613712993240865389699846415434870234350042494625089000599736868483517170747883906587605903297349534254016663555333799521002854382307156087956125878233214238846306270666580386940003235726209120453973861429867235946846137204038913162478383613131929674857902471438596613533716079496693710219233310633874241472622416514220608720140966466259337650904774907103980466053430278377508645833654704748130164339054408062688174911939289477813734518653702578971436241728275756638332202745685574142709530028674516934295328153247656988488599004273382542294535794533244942131411346733435664861425727344456005968594981862881388818352250193053322808559703797497200121128918170356883953570000408112107091795765680086041065611589852882782099600918356964606576327464059517859713951317112502337517399144935488770384082381947454550500214218427551120612558753053781948414910684403580940811503810305266048168701876374385675054823575129835079958246127243550844710292973278395875445254637925811753893239298283719185167036955061604006123505404954917386839419621487695640573368752153855153310085328719466662660404075925594900943681497937386937660699399606146996454137872376919026052004300624777319051539134500301202539834941523060657344496368628943981452558372752889923310263148377580616797404600336700838615092072481431351688568870032637739685493867942156001860877058551440967
|
||||||
|
b = 684491128739859846727757244230827007523089611409690058815030163191835333166511012678056833630535036542989672486490230517088394754001811387633799292858494173773958841061179428051757856509644156154799592972698599805675493890927688004816379788386882903065326358024540732620882560915824995699269593411634780814353230790493896365188000999075608093424874860919177848709208379760550769909036363485714669500547429375387556422151931721623913786071279012426908776000589494113857272430487337945549726010649398237648761666996601055441138264783358305483815757249575241043509300552975984530120765166651902695473133577045879046382810196282734977569613019582399850160588046686310528122502371771118975438171811908670251474530605429739149506248017931783850392889060530195322123415389688009296599574005012493048752940229787698513588849163407738561955340905690889786241012919410987627364570825247564547639811166475378140033762268002011034070011059170076064255171442752438471617565673464673262274142396615744087806649588292014792959396228564089247663488334508706062889087643286855719829706640200113983984882121778823148632826287297942033177574431832066269700929437729376952784128646106713016282619940782953286824578901636637087320196147997613027280370216802232605941704001761403294997673515986274115390339253411489220068686115317421835332428979201472583251203160882115538714457452401470105591126072261600503680015827601049892874877632753631113864000681678004287816280654629756947788667078874892832130830183530384307459649114046027535216561419144747778290322452789656295705599099186163206542719870855822177230574437695653034343341148421620049648128715607460823729075379930223210657285768847279159099039786114094042594254980178450209644689294542375593664752335660242726814613529553052185854803644379557230575060738394624722817771411044217138304700060043161881167507780908507890943892382869296772497677155392532155754805221578356569765941896362499642369493972881079439067375892977577977851067302297483725686532932346256296753456864105667359792414834189117902674590877699298519146808164701754351306545684490125992529307157024303902021273495285398259598137840052705236262419685241901742083081848028733372420104022301414531218011919756511972487821328496976227248417652214935178195799231709443388852521899383402286241166740804695157635107166539558465392812360455967636042217143499838440225099036441349034868108050941131866806114054972502628915885204708434531508581690777579610528989004331389490699140404748238734023388789338360622885786449093315238100097577989399490494166283058118055819288171392489124906261857363275962295685602988260139084588953600297996040371698537438753948324474832328448466871601705432631878773589477508656499157007677303922512786148854364430601799642026988913492848942091891899274631791150337682686826784959188655650946120994715695875306994628004060502445418395065322249008315022837772137238949875338972541278171885262133240798903563033600819577253548929977828477924712769145449712185112955896942363063372693685428725070821460776701969030313353644638799308645280850749687336064409152542045577919799090997488087527491623752989226902369050109756355249675254765291144102791600603322530869486805466732733445534542627764207284690259543762035148653883371738374973018572952985161683948010067386269124568691960142689965236815809936335048278105233143432578366651820995153135244294010117503357180412071406025861327662518739706821055729037642327141056790984376584444192072434568651396264733113606719860708820612301366300216420877398876228448691848216856113987300052490428257783299789754057866432933488192364713991188913348470729204054583378906878012124113517576456059451833172448956158852637410724030400461655569555979326584582031730585975287023741356516158428591716449679767380003277857451116512987844894370963137686362204639780013241413654457433050826402914236150554454404844612008009339414562345656630038868470491650495774864514274537468354044365641381704211060158608699118792740420671613679467894255312034124826475731705197307249446410468437542765036691965824539691084403948437466537952603766728778373168564474284428566201426946100239802849195930065528250156653255300065327301889237595012223148403567066237840585481939441664935908672094598178706125495326690405686776374729596741044585802629160159138219911020568498458330274800877790527176364974808680498683553253845430630152565640949496108909146720516542970273663518476739042201866208803769292088887791255450093744230357217309621030825211862529389976730174713093581415898556580585600368269304840855885574239471212699603803734053493946465015598968722
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest15.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest15.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest16.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest16.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = 20135085208337309320952448781167358959422004172273875165805296537439124904730785513621333119604898636859521849598647400451140290424486032931915733045761775152206260491629021181798296426541914825420381331460220518573996124739248251017922081894475899608093493940296395153376490931526590529323138911982444975009570681817533888045368874738680172648894907192268197494108486230224384841096757186894305732373681023629056681566513487958383490951893780890026827379154544610362749799507007008601831514822219237644078063937567040028280157278639650865271577374570871358409257847967494398432407146574045349298827133605337909365007380957605164501577324573178150132662306701544597501119355512707636849541551368514670038329712922257691069073048006136961148919619389837031098305510238316288511512885507690888684216264316782382861639808946799606805876246751233037877923859452191859453261589106872738363785986299234972999665352393329738960637919808821864005594470169726747980477141316121652745006995667703701907792428265280086685910434353283042909852108454300493153414087994043459433748234904043054793723438236147465422647968507848071632974139426250557852893173801882492551365967842420164656277838943730730930552045503024797741057170753797481889578611376164055286921893221469671422295856642016891321390797723441426814675370212123344625811453072928002484383713971946229940356935896606509793705646967583841280717144961419552223751643931671240904021480979974682338318507177058888711302723928796466261157690385447148585453201027042577293245456802435150277765706980797013565034915486614152679758491328258449895331109938443995137093045452498856640943905741825794792888208460188360169081795106620341532454478799893026903960690813207981145692552080458787186887776126648927028541977615852412686828998502641297330850475844910068143303021800622191498606193880360986997452108825318520668149115774993556483352370756286449516123732700257442043415483766906195066362390566636735327399894801080401185068673586777348134806454591574609463807494489693480351471165129362749042043969331096863618988781854543688266842092773688318888294852672453201725473371955636143257794320401251746723249414342959223771848914211148991476172439619619947349852699917552002646407107025678961185736088158265842122126655249614648293812778460280029295178958148232425393279970516385350914705698806965497010172871170232140347824402942272339906968148577451226111171904840041789775362343014850556541618474711584184319868090642215810553785342833244652534296104283630526803528035018374147793583905418426172234159436833598842429826723668450111766309901290618930837414419023706463668048327410059217846217722493121517099291704740226131169229227157196606805745239965739865101314265814080181063440491132130650156897612958864141054745396266105799809795972937503471134953237061022727124420091424429360228462993151832507235366993497593641061624750167759806362684896857111787874270140576131515309804213766648402445469026673121098368318249366319887383273215607317676304377766990077058203653059809766010877064411146886824536821574001498215647692059229668424294100750919646604273902669025965841450433827326102297759250788209274966148265007547052776027709741349010048516883089865356968420340046205932376156378758613727105364658708359734398440717821175985603823231378183116385538330932820150528577940975430231705896680983559516469955464852888718204687451293283433678357888533198478977513669882791168158292831336818203203656187129216680980216277890012840577820724493872934467092399406838881212892024464017609936012752751125163392476602273451001889579200771171776272683429544105753964389736677235633790050940354302070021915064915118107692835675870038378348893490821706305893049357205760330734322997745797216425234376877172085329319544050902477380753934954439778891867190811578536322288218014395632004233508603931111031568801255105388031387457035634601574258810359334427455350300035824795540182184947729741084414200763331728131989835270074798645727810610211953423210647268767408997530916747918774211851399676964341759677890694571803725386566514949573036275861789578770875975142868171266115308417609543675129693427234733092352415849253067857967487423677061066309781149019464083309173772465317117626523603762303389529186762757434422437688465787987567189298183331658327643943335136476288895944031471631549049452415356093278100827996976851630898010548397492102975060582424960521410583930473685019986599304288152128382416991576889958354958470914469728014491184688746978048623428935134162199036984905582935902858347846832552481849620324345137846953625446578630348562066212649219354003691611919882163265434262559209696253725793651364915752721544045546662070005914090772613548347094433
|
||||||
|
b = -97142917115100903737646309746786755286254286512027727847307332146074317010165637448980042845891477089998192283848286221142801999564157728180068979149076895185098834721079130584414339734389723052487178754141957216774570533759532368724375303775641822337079499544487394011700805693308205206944123895795467759730250579590051222911731414566446989757236386080716001840189315839600405030448106994926127682500256684223471908317781386085304451570510257134680554188818647240246362729557380962029356714853177321147452865291513645872393180899422350772932349825626502651573707547888641717674532894893074688180795160357423591745472403470294221646377615279206757162297731792475724868244849324396856900512100863153364699508327030885922319301979135025440031457375910427519751422204648774837860860733516381857633590709322279776812553661762838489489324566034767727720185975433645123787381064143436628654691449771267985992591083089837955934579579236720987500061796676789670232907568481273019225130787620766638518433114434451060361050760717281226617086168210657932154769474865516143295325437148850002822965510072825182997986086886383511854207814201385976618183372853443994558731603600456781153893267452897868033272261390308048510310139884301686666435675386967399498335099634758373050402619201773563341590202309220586202329148224178409476752779386091646462594864259635604909319364961694002520845130815034069824534906257949186171760461565649406320902206532877507278943372744922399289163113857595589828097446154555809590347435246563629792562494817813456155853933687368555111817093915177621460440380335528549735160745656509850403510645612258627715340613515002921700266475347834805601353458051639019395459041110897336614403445440633401272323537023218476311715586123652465434335035484807279752043629273583913513233757079708905632822144630036808560113656376702289569103906476853241017533290931874690384933821337994526123702599393597059212008833173131142455694628853540667838832465035764287812637886785119550714541434539156142684590896189209643717828641490790995538623537465578611658293004612991728813162017777637123402750487265147585191026018739106016634639267764171838886880928910897276832140531834313627940251637796261436160575550070514855153115879494589945103062040656827678544778419358225996637623900426047133045710743848384349010560244710772320441993766398499260022963758631346258922336172990771773841466118947644654678921607702238151410377679581733317636845897522156786405408945860507065724933665047683020374186655032349816473002209695927640046170746524770352275065763166138388869085477252789876695660321558428876535315662097479102754293057001395225457977936128965654542332872912053855586028598933699292828876353951023839715868280228768309428380750900744973372284897554303133983872833218204477569241810711852765603718324169312473549564122274409938826070250993972222508843819393977100230732304618749490018286969022126348377498224245475355114206083024624783175298311415147634768214609814581993552322176948068964183824269054203508986510739955656814136146661895664026947647771407202263669782450802691132881958250683078491537262026238875171687654375584013816368575352071428845857426681324215854141857015337550010689950233600048967417216391204305913123389821644837434645839065504620037807342911107560701960288831061817048807784078544517857813531454356849838918387542244103652438209490728925919626454342575667654508811373136862709860169622173849608262268392548535222961994539183664016355340925000689543105517103796330278346053558319876800493937779288140384177163002199749071407240313717922245779470057148617348946479155886884954895086813502461615018607688170511297259663850473665790154829538371559749119495626251012157905673345801638716579076127011252270524430982435091177908224306786161234059527595421487035211340386399352249485628832469868898549985628941440028934465620923807131387080776881238646463322511111842754445196038956222234659968754252154290617417942118928488328483353604921985667168292075391644213073111611408649636372989186944847892134633867286134894522753735562398214374944905010190398631942625801143936048831314146264356255960806671993243701759317723689923827460237462761343285789788626215708242409501946570298963429180767906088853860148571270394172704849666821432875010780117309346255247284857252889555959872699011835821709948452739219094652769690965576139592317106229208615433203991527372866192480246946462354418519586140429786456958337496270587698155437633841832421675343474325738570407521783608352051483062419735431969077024538914238909595384261330448790768303487780268384811499441639061164958190246936479280318214962648597050974914030227525929596427678325874960639412589499239341169861662523998391241773031479499393771427
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest16.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest16.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest17.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest17.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = -97440535413541563095880496720900775111396369239958868696757050914513176559525498842991099732125052875047522132529155840269697463797217711695626972529715687465087411096238760948824248103333593345004567192686187171799553788502309657869264796172466549566263640152032642978029727919250703156160699693019369703099049577343407788860909951626990567492039591659363030795150751031553542918467603290344116364580497538819754668642948486137783661821156659842250877976470897297430123097096663862577354316891207647488362239440169752381859573607870725738534110202395187470870388725155736122958116727578301406656597530866312476040525195295345618461466111839426092805368567491398256059044333985486909807623555087330147668632345936257411749077302522077251865098438168535328393896968833740688999947358865168449552838132467900651089386043170620787949352882993895489463924849865843524608560536742034710153080325488051721560968691083369000658638656261464930560068304714821206911474555618585783221194892065091786673458294819976696223196835426250307005103898983894573994945118069467747991142512979658266967151473311193128716772571016672546880761752421009610840683126824546477453431700017336809084579174674663328180404405575438803761734004906954533136975997465392239917337250785751752296454797532503765323495537183215264399734851229502764313214238319731880870733448361951324125036834035596068588029917858376522904828860147656869226305343832874027120451994613763186226385139036950922994588624352441380696192221142027751568795489908731448167218915843679840738440905585787801381956600500223888178902619088478123889640266183707657721171959102043455556405718051136443113035997399283506009001884704374772843499280723725643136355700721952315388764178710128197115138525702490356195724920604021250874302455012218539873411202694621974009256031217792783884087277225202157852154735481712900572313802495635563518948728123238226315993775083275958307896909695234969866040944713193545450960549736513872225983102322309903301431525028208311176901710914229768292279598424707684529327158013731771098949821164729933209568005217728531855430574393427296252590573271051642065233852379084440698735578160568085789984366334867598682057986154305713311644684712736653163047272667181818862633657111483696349469299312733748710523600142645891086408066350816439287706337388944999538895004137303361628442376690473922246682705185730969411833516392584577312452039657560375521408691780505580509254544431876259178266516644385595749227166202600243103534448785646197167314411307192814450823583854274571115699740219606863451966104623625608008213737892300710007760954311552352301699819704465626601732451366170129080628553954938116435011696420525656238337925752036630405166299044490599720068211655059012657303116826634753976685508510792551291597545101001577581509149301868831649970747259364524659350169491336207809491953924241688163363309555796898740114711306716371942595948106308425565846353791906812236666746915276533818072757715462033323910860682142549741949841285125922186579754225737091887579801420691346619069098317403690758691868472777860976174682463146719176710481597739919224343014970640269081108049524853197964485827238531449974358472268638640407584562953536299989266386210723719242743376439924738748187152587949779817357753541435158820724634257123121991433475904456564438630989776837565681340537436797559029530824791919792347825581289109076895231993151772083614573115408100624928560669224432537836306118814360580411633250288448788882569593537591972468189258817788254406824652676759988492912718973377987909697390159524720277761153093604388964429108958721138021804690386363515131017787048047474422582787766102285894449229255045506305581810500422716859413232281673977576317353469681969815301745632259076894114094565087608918493067984649497126158295398905642695314714556857089058677241292317483586749052636411105221258086248532745537073613845336691470260668227705866944166205070890404684970102068206813865629639017260395822044604396322402784827652422166424264011975753526068602261270122568174763800926477880699253872916784719572450614600926400743653573479286712138401600361405220111174087642615828733051791396050561032323059078191368596057183397206028817838837486356843168733893844316566395090480699191474262865402671831905460106187784938707845172201906165584162619301849834602542670641512090660731428805993933581961710799971179515361390242815461899908360193505867623877666651241011366440274433687064960672297674214887422463819627487648457911337998717206453089365690432344198755428748125884121285842397373207747949544450
|
||||||
|
b = 1625758638358640908852309401926497438466817549086253992264147248975490105716796587608683194634788149766039476335017565873320338741109213960998340378488528874808785260626758700886409885380823010739357699376468003127790926075865950806273360318479490698384148452140307577862606350094286042364012798300601348528698924183315471723306519779362875848416234630613521419250724456501556081633217098715234074532487543731416754092632156940027472539446176085618522652268771578174289548233358610491991736601465820583942035422267315102821248239911958339127712605663189910746352068332178226716676944716400985812511153841484227369639103256384659446360601383153192461004954757637817797776319872797612876599423529155662325457346354840611677642591994211471545753249694078568973024609561607153529766351417887010959411457246814885626171558070331783568257263013230158297851980797344850411841802363943755740421147779029486293034141688050939938584874935735218527700026597493354862631117857705621992432476509927175753436316603199883320935440814649859129215528859854268335199074772440413050044269594969522458605479981933577391690747016602155133942013551218864695379797910525083970730192861291233407041098815957724663656582266898921083923918390771538687237094543021285344329172490188098698431737545949692309972607915438970671350087265185696526281726974454437575650505485982098656745912455137914065927410585278778122427065897213001690527552909935572884000354551846984300537120519496287004509845695341531142566642201831247501445667972472048850009044812270665168614966999146371877809176166615270966735974853698970136283591276416611512706347442148757777181572663046833929248113852289286172284715503746787103306880538807286486133534793593121457208535239267037056036874947861972305979056676348260797298024175006669587877174911092245841409198244850347315850695479282768806373227147470596593798008022005141056253811918709294245077341547715465018697857649321740200978108540786460833098113191844281374731627300100481526861363346728140875008996130651819582285649736502951658723457457189141875314508767712058873187202035526420857865217877542763956962807718889303947083796957258574840864613453854869743146147811330000410916788506632695319997952033659483813236442220027828158249678435076201282524692414322546753207400547714781716627524957620959181068653964789363276385858620163007318062535027419725267327081703065397476304393402058366701156308841519669613896503547416299175811144054410874836920657449022770369339514525371173249111574628317447228370752515990968526554815124067325739923160487737465346513465354597517684889211999823173730588148799120533672564562567553502703045464832373133699159810889133636982934664378060238344001376662421649434434042285911681512912356177553179283927992556523208376405950226645295527392035422361501640597759343035983561813691142024018391990156686900430072777649055753501914551969138225379219276697555688709824429177526300162544387986408465056788073097106401165498734839186351244652194186418688806088664879122455720940563213128728421190656538269932066342760169513800659276348517483305171174605264961557131324634690547018901720683229134794757721742745234949146234722005360600626492686306375673806158376570834283293980891932644130670188945222246396695569228413481534824400511287613718752830686177113434947186414900863403752677811639570930693234833677388234014391198610613420257896054644376924856295749686310219227634189578782178139459580070596524113539619030649436684434168551717536416337379731350275680727550180648664357399172813473460245053477293752334429793484125968953589635712168838084992244814191317460161790597105128636120603580609080624565284047970482991124059981274711792604999644928874919157459327398690736669625293195148018265796395586563973762124075723124137445351151415498851924813194021607029843123917781702563641096992400768868615189031470035176112635098934435097229401088573112125933919761814210613113639551120987760437225659366628748708086355768849706787939923137746828529884557137188069253736126266643194363746741015906925292004465870510395816248741641742230880904142031544401271648877806416420689713910291288853383825933390224688700210294936889807454548128443164203226780015990119399157714869579499947039937645695026787098569004285096955150312451941861625874657301117016025932794936386749921455795258560796094667796268843909740599084388404513911860473639068692824950792342259773477672920790373798303773710709869044443915621059854534184847220131430831908394346174735676926552423079370275107384856175818379966272903123216845894978366303532867174851306834760476416643923181829175070580922464015277737368080304723640782867111784930836181647796455859387195194560207206744715051551794672198037531127904856650690193820624270730272138332
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest17.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest17.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest18.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest18.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = -130540575852757770283380585592075019764541443076764607497170410766974953124766101083341231242150564787174304604681604455852710214530550537532114376397580605063972139391639688849688712280456299652022573044511373818082840112349034679344649843745351016158862143396053175857751868728728979563256252568129373209522521166600536295833823680839205828641668688305556858081932864276904870434469744795674888281746917821472455957729448586549597298490605915729247164299676316964376125522402315672842321168962847938994367552222237688587316114065951047720549576544483563165887095198003170828942602228097510505980173047261168413480894898237244134519506687349943866425906700397245950474466443197938933383806868802563074091167365534237553572301210579537986579957704751792953271076286280635248051720445371491774094235743047170285888702324590005566542093704563973964683438394687036186504476378216922071351200903668421712927918742076409692710128015232297466010163563147203008969354902909207117889793234477892492196082854413577089202744840644029215625722006497177458580078315684890073220250739641758394969648973668571436864228160275077583039673536268589452782998452114826188401864428750785252587389920267557545403608082314238552337059585671793954646554472971625913926406028331110179272191263389813199547285820585059753808119653478911436737884349444153036778109000559455299670322775185842615089751173905768282521517554663125659213297981431115244919589761262263000229506228189355303497110494210287806774123113285653316396940858070257933541685439490892404655716090254576105867191501702103012062767379082400539368419730377742821549755326684846481265438196345528750505601829054253757879668313369115189710956058919105891437843920938691084626801916895120262300064807601544458972319532079330930534409901132365219696372803111731085149942579756168260318617830515867794556740705254997851262352999116995277112765750484906243150476550469702995834061830168647145491540297438114706251031950620792097063276192665889811903146870192636433465224435673089995778209543733690373808152558315524652577240243379358454921536395909130978930021802029258031836365068954683277336610500921627147803407389667069239605823640375957287746351966195466033397491908976397342688547542368992532975621624864686946724323011797055080670237823456669705927536930968146082888912697860601432645592136159616384674029632653536184859304457361149407372110138259395554031925042092072492361562030269166205072026197715986361659952497139284503878564221983880126687881401681970808635084656366589832043796772966695075731165013972147534662250808229099019382429277602089183246279750492420748548551471165658017114996315694478659404228440400390151279309340201781279597453024278643041090460615358443894489099717918852401884203232450648970139515690393081348110082252161079429124098428542914730001737758443603414815976431321828564065744082194616789565465352006048319344529082544789628142485271130019874090816946174756985812390239818955846473524291469400281679611719287789729559649449856457647860350558109961789670508615886927963461208755174220384841361884974693367915943196672168430982860818627955728647348839770743069740341997165765195973761429126864596888540669857886075112409511425320377764544117669762205323400722532275413877939904810891390022609865561096897206984531178417444911925633873583965575226336679723965922775971395101027788576702016706458515150404407445191316685365496382775142795957594983396300275647552033494504527270464040748379039072348456483313965586914549395781220121537809777039313537702903119095026956039416927722807721767388634980896238793411708764532406263974422410848618340399106834848249438141914616156680999448294506808082124808593068320954821977158083559751011785256805096337079396192877668207896589671806900939400323121025226434470006318905222436209461416026241763436512330339831959023468094897647791772850942030307014837435358215900698815988498655197790603572162947906439796922441306609885980301562502169360685825192666274614662474272009791972547129975988508654094721055897286301413051378264211877007807897049389089009300246478757797300232892757455566789128681515622677197661157187015390500952932424177035917640108651212053049785061400510532842072170122856740568317440469502232216093678655453205429559241368065955658663982251651588331063310072587664128817986316413671344880177541647672098504971449895729915698488946676568702018593343574511540357034684832045737888669862642640073457809902179982911572427013245271739236900902321400026453442116834393843159454234682704419140488219611211611509771825128564963992391765199043681205479596250982454259940472486232071786822006409368148122191907069913271824493756502399416417567637022723710149269560379156933973320998953910934
|
||||||
|
b = -6126941049297611772611229827347989781144963176048463279888483809582310921018226187293748890077374370178705207637770129468701390166948157539438143282460213984914538585305862808885268361984646741704239075208823770303446597086464495061117508777029532475712725960693675056294861455399887124587206016783045144645993112675426086686792176430868594629155923398032012967058520867328328225513395012841244386366528208737801545985472268461739673899626829059465710852561091497866476465172050090018057404568132947594969937241865670356229049913910737642657933287831646090497122797027537816838283127287132741671304164131414193850245788028238368820757220431231935835983622819918439859120582808754649339934520427904691104060484014218871478507271933121556516282171189870188417716649418772634583392407132527432085530465227946156394386462386029212055686595185956420021190645604613394095287229863783817386700945815510417427204259304514950929026047218642357402382071423803498054528729113327561951647833155637469474425671541269184021997566758696486842835163563892638379683060821910063158013318901935860776414048897076248981007661098872580714113932709850353433663641641470317699362553263611085657812245182618229446793534855005557787947987458939710426119800287696524091864460504565917923113869261109735565623174995188417742301706245092527222237884685729176523457546776775572752789472413727817327087289023095495695332832333485466931794589043211166493470896253851793328270722367467223136221555915125734192847595082504090560254636353885614927762475580715979161938383687336647227316901932950211494132144549031493476213016211083139165384945680796052892170231480084306681604927116397207718262820430676390959279420174263644258420188430302493011962505083398135567404457375171895800407368191092468259934543906695951640378377738134356736539855923993363961745867359640519871696333819290067862090362066009407809936333963899015123525280093698016484190486383314559342856801154883260868932535164657411885994460925490297099455058810580401826009100405623506756606889840398258663769543967805155745553741869909933677851722038736971222711522329274415896165910919430950289834333239069502773388027551140070951157153403680302440007441456229322257405070094316451294469071449421170092273716912578143959765473106195805105966606819993157773794019283385094780778010257780080240467556562605835816065959792995837753038721985275778393835623027147827118872852389653361386452543042452252663253644623810039204218783146968983021359027164448949874953025825640554627741766931625926503771041274782766111667926189730920491141651763257341598078755130289944121019133430157306527929697547781658118898053880121361519091866482671867558802801961091685642708658084499223426482928859585503920371386616282583518087978125510259868866928764512745657891271673973381791808346762021394270954119465076009353114541239636531273475409834495234475305837365803357346092284150929327973276089812429108274072629998532638253748293415032436374419847027254791208547036605312573582659961455335179410692044331740153486027513093511461524841738206211969291658793227120781179382781513059525833282134479586305375943156813041423522832932793450159417742808208701607773679683821757957279199779550595544580130886367686864587973635657727661562994787076892095717258826857071990364993967701644998838780174868593716856358186494983678404429705952274888004947777332992936328695108118996994543197252281156652440465303362165228278612240318493763044229087374389620333431171369218956150503381389489526810863713548702774361462089964928221170478856989106862980983831049004855724785945496501074458814079226162840844232833679596799141167537526229881094194584562607150596723494731286485026063647042860228862021982015405177830350611839858698089131446237322207292127889259912928818863197900379273845885267909979363869042239853132585678145918920973429214964075676614874075870997192033042173273737532588518919945814311061234071680816398437726907076612784701824692784943228683813626990904838196605259340906674011500165074027626152776290377535772230006357289437755291439027983303163088717270478934854818416130298157889962596342271646117618311176331246286740121774754473453741655155477221769295237152009948206752519582483548468100307796036483287917801133680447902579351729886685423261596066066287545056512532318107299448713031780347925658737572523088941888857773408411344462689594715542229313311096948543760335707591626047507698862437825829822941837690759886298314683434635856111167730182529980176668263690325198809958327367431747005030359835882359638552457513915510019775766897970833517285662147292193804153249642459355454245733892440757491907185007363089689414766705284843044
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest18.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest18.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest19.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest19.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = 8125007660290678403093422435817867964416304867714372362332697927216056425702603737407102781617167381605085673439927434056692915737663012241212878463111372479960502101284481221162122555704009381256807893277140675625339836983401820011535628522277400654389921548092905505056584153315442493411309061437964442510526556010048995620333759454880117188968371519105459735902343942265816081757505165456880319485045292697538230822822253029516683598047740292061247620723163445064618151572563092794541589288131774090677892994896979519241283528701976435320912451299268286601644136606513142405680626860466108693518015372772527166749953631763990631956004003474716533874583368410325432116244605047795621476478332212227740336144286368781700135595496122022657407835268538367362888681534679004454215856968922471774509901520368901843511157759093609904242059170471197948991104897525260689099858908037086268220524306973593090415495066114271052672899659670403645618564408102122755096327854319159609854977167582520514895975346267940371158123759247468536118213521231031442066716832294537797275564723800159156937108404655986360054069365975373560377982755992914869546429084966722770757536526112815053615556192065714608969328278701428497261180251412637902804540416935058782755216935185068294371722533024847313706765153921165384420693442524168528245893720797983613304626247266976035396867108219431502731045422096034031935394268986234348140257092645684653388571671695168440148111031847268152494976687874631092549182754519880159379607707351670898446595396955741654469016088936379380230285536826565080973301317784290504765387478358571950899115989345687598735659114151168747093845802174504946273429189382674515154687896303199606154753575945894366073431635412588507562409818509458470553198259459142417328665046452078188841221658517761255627830247874551309886717905069349889706606564905226731107406338968036239158081665987367909066860452236170267757614934768601406244545689762003467123881630711220239553459481761393193639164933575371810415441345083026760239334699977235130106564533378637673851521003447175613334155362475137106893452087857872986952204006698633680027352378335066122651474807805024131435932122943513057772435970598865738863835167536820719021184321553702011357182860218595052856657639352679167844123768646292521353702035949306619787594519064735385312429360643420614940888692351848202847189063426168463786922030460398331040872705743812347801149516528482687740099681038765522873015621219086614558603174678281271438757501215310528126805649245802347107045743897379393259649505228729503981671920882610091502092536258274345135075519179371454548622915548593575802222046581903484758478180603751648500283268834559602828540381413578116202741885984173057657858972812896323508323220508199124869150525767807476539621097682343754412133633819058834078361729467578329424743668338887486495283432080704388369024550720655307421249127652773121998533024470465963984121918185852102526632912710604461956058500536262032718879315733874336723467305305888175880465803735393200304408039860394217878097770289435486854386537065342465834896178296008129253523423457704492850328361081286695389317574803372857781337602336431114396742900035323329597315412343078615228832828949523407904660814120819077979648763113742439183810210825967030541740354491328258279833898892747947464069443398148149904886385388767979020499941132485232316250741055097921016044856380587426687082147906735540756877501365120388163541583571592938006307940215576025785523458790764158480007061404308447702057876210252489890732418922565947587633669604294801396198484181861070943076730702400481397022423900427720114659414016725332376490249567258731675372579423090394914515029533764902808153973270566422501968084063714762757725173731519428680145088015401013841208430326498555385137700121445761823021890197088969947540167125451485398014649120090580458583751077263275152187410320634977414912239456152378631588502484709980389753560601576215888607831778650394175990245708078687133875682156212985605253429112967725412017889270760923922641540924421619745275605914919627189925334942289947614584692119858166330142776976735051612699316844593315134474317901674674176592624486990626328440415856294100901302889688830895894268884380405459637444884108681008012826424276892104982005953527689786821382830699552711448234199298886436319422259120868773714459313339480872045743217923748042096377466750170018310247690051353280910972357035983719111460821233965947006334745859484189008052241181358104766069267733177633648259876734820286587765690325700721337099503154685789890155659716156668866246874858170175963909667225403579637575211479141283747257709040622177937306161020443111407790654027362311538755512087
|
||||||
|
b = -6426000395966292764993599966151514017252832879616956310927089371253959614657009396620381741753464491844126616832583368165575041446314789702633616695960844224851501555616505147174866915431794003760768184833687597108610839208550654998555455855996234462176663798898675935079770953245648353467304147983463955703574032847210266946452783234855765022688664580575769855018220024123526732472352462254700689371140122362216821961946553975440429718469143221111516479080533283672992765908249759988533912275549272074385321941189019015952805422962502300822042837613827027578122666106650821225238153548992518893027139633355308039802894091038328900054769807669288971956918469814260027539870407428386625911133489694422484898447831390919639426331341538496782829968919849199706390227308454482396664186060369847914032223575319815190118017303713510227046072380052208799795809124845443963048544602701813568018651751808833408186087378272318295471542224965156599702529099786649671460985833340151076914218757796262204901753178153697812394098396129968872146882786986152646868761307777548339979169578671343754799128704840386105281123427106172123170465147718478699341714567484698581456716800909448236630483071317455244403300185738280716271411650210513359498991271731400275057678603340183344136118815457627050421788967792543569361618934011098387749467898526991882541074606375532761668125345395850523170413403350951792858028880061218460450625547084461238855603975890182278796107673294484918207192605107573502962278047394108120605064968596125537023259250941072537569684083597725390718894705097234939889701949112941345220915889170473459990343628735675867926951342733742816259616040308393167061790178960181956692794171875324394799221745418499689490771982055010927080432717737993906069718790578455014606791956809114832413524451144634379740367028228513724966885298166408585252365919001750121971232111644164849058119830077894999820463968847254848466656969531383401445237856280541719733573260970314886550632395761868320019497541826913564034584692810316912763520365490461763417721677657830145936310664320455612574957292332340735404971954329747215810517644508521976278571008168466292721082131109518146768657620689062710286561342655430285960781413856066036351762952668494133665410259252042685956071478555664079202322422833847938183010926400380551386642882585536548815126422673144299070064134820724913659320853167666037764917580672734378179123275393386262053521623216631648754899965759806891214599943126337726546548153177533057895251217073861811723897471955152075868711608442960488211555121935944545098072555081541708404701549129761329439742598295745669871491702570919044101152825527536579465261057360319955154522821413813195463495743672158728753644714911824934303866176529062686320255127892516008348780081232362614778259671276149458411662555264468796601480787659595176267388613076271869529224502870723776086773625084878426616541956176601188463361574272560276492092997240537895642059748005561405569941250949565788870385837985875618043021242480007638012501617196627236348343203237714584951755770261786690864801118452489981690386664166928078716576208915576504023321311417335095974479302523863140844141283341818305298374110990675833175948309711739714502909146497507468097006053947759688461304110476504320081258929727317209433869581991664990056713471562144746513345730402373612619383226184231031123978191858300478576885468152365370867798051125614955443436719360058938211747161549941343618172489749611290254448212113439315932641741359688384171281501335418773214906323987100742835244516882422272656286745829023250107217050160463229908304880354748567463859224603692586058725939001305965913243307279126917757663091617610002049828448219041613401653551631451774869224279636111067282036894812898505189241889660346194148112835918597456494788407618653765040989776970848311994733393680892384555259969492387079009672423108877387885003988315014337616824343209618605839743081169587284035785420579336111004122327322904978611226953029559194679115211201476416502100848778925094289899023204650758663421857718554673162673481029874363091097578972189461057509193305511977659131905779161201182416031626794543507226701114665027507934730174343399461720515149364206003467936128612294785888237870647564957823817053753142733155086783100653972728980829858104523308986636432171104881107499802655150946457050857742117409767437708485601167548593286563857081062310911426125529870243156194481606463845556009562243205255201316135273720091614022405721259695444003914473464195460393195438875266936245100401334013666689215862234017421435904548928264565257735431905340932015944918455408159316793351216779557053108407693815120878116626280732998241657909150264141895064934182940739724114720153332532775790714904786168949852951489333061242050426660400935801508092216529293458429344376609283241404201549485027001478546498271945106163135014665589614232518991423211147459526192810482917406288823
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest19.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest19.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest2.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest2.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = 154239138717853301429140863459338617471934589259086137250155046682670673553747312002660415789251648095578859052329630545561387658284983362238305238528045328414244139056956253658284701687868104108800783079269656121926003451183656380834946016236461641766929457162162040093052821429491441815557088954015393084512433062270293371152997986038610700334942312352153389150806487072206178824554173202987984303121036041696542383014070040642992775107147426565474076626984028744144378541328876224266397989233152894183286478664665913913491895254274035671872658778299056693204257830623143314160512815877700349968270609842917694985901899949822585176215558186637554437110371775661860314564348454030371339773238868453100635342618175540711265631145892024022088943596413734688847523790081527172574652265301701362214555167654063667013802174732066713891786358152777347741994428587027060626430358724418244014213110409539034885790945406796425418606546163985389238152490251829529150757951213395309706306035034135823059481756332740741725458573703189139157695325287623247689352386170765220620243801543781640355018922125872256214139324428540238931148639091117040305928643548506323052171296711609041287054480253331805467614018963380162061196025121790849024942170104875917388718436532544969307255358759196248553105458401248539551053919002787181483735034374780453638063026010076487589540462552435621357916523033026482472919712180975334036110959763256925399389618835063179817640261937470852986157093081337771371038803582167946411754130380199153559775829293186771857397342714624156338475888337777544272910281609518947668654862319903226199935127606831813407006539052115400814124974460891427797113832547857071392623562837076348916540697176122902157048541612682335051065372083246705316922697840612524667197924282982567808734927330058623498408772692172460919599120345954831308663929459184105182817963769027308448358986927256783990614303673575985654372829972678006058403462971530207166279972884123842546923034580957721453851710859187430396345442979892379436445539757390774137429779588219704522980136553235284294520548825805024375613962754073059771000750042964476399335752342326852078487185864586172686826613470271667326033936694278290327649471474145182624897601533860579474659958291865517072334063707535488385473013934467363899650429146694369173189941674657232514519474109488706927065124251514898151524233901526567071280745075607491012314605974896741794561491820953976641718921377816379364153933420124125381588800308731422446736042241296769411713651366133853466452460957006579535549073271329321695076777507922911780710464337215509145961408117598275164059649712315066899371479945172692812417414621692042426016237635613284745191972365233353875944458179155771731476773124731848718357658196046310792825076356685877257545487573255076574027924996597537561340197937511211888188397077560968788423371160810138819057656117822027450150607976336230692753442115822263916088510414674631144641813037888975493930438567786242638858790352839908837501019418937200086216796310231973554932139120729394456272295808168332495493086937686871669407229134454782753026835373762250223798531725507840534120060389484349573873574614335819517698126416772368498810213019883319827763800063543094176773256914302559876683268830841066647066478078406840772342739928054531715676617824004306091027486246506361495873551151617978819592370509323768801970932217172164570675877421325124613468515354304535718669603511490750866690684731719534741426498710615174110666657147503333120249711240849146657781154131305581431477581284342931936682934300463825535555585893659824297536952990283556124363716002804106317701005998121648344000279896149881894101476934232558884513210470463943423433083985343761917653786844535008680342990519947203076978567436376212066409009233873678539585707703510455336076378571976206316288864631190886330150140863588358831154963410493033459647115105510316964230237879315090172084646547297626740484108133524054290944536218269015065950091727586176216778650673995052564948177939656064085436042194900660357171986465299085806982374423135033566204921211344532698053035607487430375698898247252075909149873124778911162311551711563354343558144889195823085973403236343855119199928085396450125444111999727174431588409600246862809066432981812519325742555099632954066128269198257036767449705589543874056499904196161944050763434192685720320105279444072656405465393696508294382666303590587078031501457657686251267373491338052133157942566921109257383665214044283798948128729555064147597508731038403673782582985353492948715786283027855296002627934848750214597475708506807237717085382977815908455314896674722964998098968629402697358330707261050376907238652964
|
||||||
|
b = -92043475156150549034823733673904247914693211182921793548633159751549830045502967004590434361957852201739908741716447706822981361755720765729888874525271500624813927817959404932257689532740141767050434312222691643103292227230265430065934532089375150019241276614146038519904744820188255741087734195113271761579855720147781273626170295258323501152206301925678550707805032657805003022730500321900470939910182846029494629924660467525702484477681202921858412497424459548959579385028929366326952768790658433158050128062442493311336748109388925284607008972097953589419263323462804689695042198643940589449239227829610373348607099999649927027844851854860462694578766066241347312316935178194664783412527466991460777834284959151623706142354847717668940156630991502582726728682792927225509316059414706359345220285494417380836835582975846509087336105517308281945116987313297640584239842438975889715797657261432841447846681434797132860976610727335804772248535113146749115758162256418177380460373590633659596895595801181442194224394852958415273595526677424420057413924942263746148252762203433475207081659356439038426857755002723002187619531515833199274655206198619204930752396001845629210716278074329534623276171407744682228113064609184026674658540531139525677421784896555629326875493227921717789859000425023050463522443172981688986176567624228686480337075031052891431164957412767350524017441388020939020469800181928970108715489514222549057121495930574877229779212521092908399720919155603007074388005753400448386287766856969200771703858121749639688477826222388991051904756733694675937799973398875327480411070964752254738096788454093768899126981733316716364755988753639109406502513567443435182656950624572157961350298083966268099588971197987050523682859154278007828603959905405060444073900969004855769569697635365524707121751373633288580844741571542660578116605652797524062849913450035642062183794322928481974518033229763015735784916815952561137160440931826926720782305386127020214579660273074648809278783216298754858980211625118350630731011046069252290628892529118706964495829319559511990130906680536099806821326149095014822829110692978841524557593214840544160312841242128546384247416190986199200047226177009648392497201982793362646031700940180822353824400123778097829335907496770005498986289020707405538623681231318067538428268315143748445213164836659438995588550822572488484240144588667209713036679624633865141284870412906933961730050255846448935903490130198181039784735214922870902244708282627105498900746102956211286329035633657703503611929951919626910143282523585388679738556170506230138432090170130859540221326426861672504843278533222567528503656796708499883756186155212709129916415421481330835810911017538504775523399111164266559317984162637486659872997275723698213540495408402696389551010280261654259611875666705465575890920167432462030771228984397605478281692337987238996549647811815921674402114044422335287721062743140907597082490778438504792429155595291956134009041383551922391709718304902712111532804999429708825893005334690746525666932733534534203414498775341083124805034645790877145179432166391561594323180447098627468148279639896459981464646230177415037761710584978936287251961615217425430590058519650128974855527394781369739743543195547458600025353680740601783005980767842361599499248837119291246049817880734073939046427662200913909874195786996781501156697864700810619109155399362447124248293015880875583752024164693228854420796047689961369023581850960256347534221935715787678989354689203244360519445510870807745338808675160157788640058649146865244460847424392583053752438873482477607133807433585157571440060973568259872872409202381360781257803454779388692696491358606306686101604632498500827863281684925495212682566188757408970580539614073002955316247932298516299981364927849050342768517802439648048924045664660250352861903232914088603162382896124195845303755165844679200847698181767576016064352367262695906615220024304241227745178434467290013482181707992019361516154747692313353535628134823845435563327228394937219900050921970395893806310926002041160913900945052253015534978938288170474002536432583579300578670799376102880857003264238333228650984520804688329012466267062121973578566873255070928129689931211132524748092842976440788305808294282980073781038177700660464638892729565823093552707996409169485082200633249139830348573532718827456074705748331850887116227383863991309252002094890721047305232706215315008078155555191378642282673388020992582773649166702996210432804322798287333785058710822448883538569646766425131829923815966932267051138664199104171242727384159689479109237499024518293514938738217900076330417346
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest2.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest2.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest3.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest3.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = -2412401212299685888489787162546832949542989100249885503096056396426028995841374975453917618572691710800413609980779725577694839869949050068856514381755028368083302834565901481630503417585119773013541792815271171825977629089850439187768898294779084655196533226015004235473615855869723044474153711877814123295149365619259815424436097674241805082055675575096181706425902080655622678527978292107909388140632942942090895659575543018483841623652506799965033844528048214391283810889787849829753783647397188291454694334935119728445629725057553836437708330055649831332053394403871239362147251396407475771210651849278246455392692275191386596363290731966814174162362331370977443127663766704292926202933119436326168902406569509050338297027706253500098871243236674097920973750076268344525524572699542679670164329638959995433439241482498798231680628003890419355803742213022713000088331225050832865203338540720618522766964831931344332937249781062221617463031817366723327961342598999168484912969526479916323615244194669297450770911109488218538630861692592122878434236497637335816743672981009699916033725903455828735153956531322702155055770894073051023534167769686188063392602586379201351968133836359721271796841617403848855943104376585807809735426019464430527473736458665309444943894180027983852107899871747394317141682471544643002109233230128515891098376050702862021715927311929855477207927355266764788836471778773692556507418532017657649417919069667345990234236820114105354245801408569418670439540395538181538139846141637056515233214638969970986050700842302458954696546521225012586412357895771046940995409376773149832963445924019505138330841174811629582281733565671660100231970987346325172745862023797753645436575676221373880672394145361087888152117785263346999004816260255130584614437045457383926439800682707429738964353435509719369426613089955158704531329085940016931914911137499270520495157809078511918230659781540225421743111336795974279246373337322312866334089360964766457147454577262525490368813181079973662631827288036293598474872623865492001186327904062265652866646732855281691396933473345259291807041414731097741128361109456241021747674749710253126577389449261431560512609360696033335790023466680278540825654136299893590904611352718032565154063871710909333417782663020790579659062466524728655095274618568502222133165226803846906522262168553103228336331688447519345869622590275082623691054230697803712560153420674642758231991360913301998525121026650319871426490576188511222740974145788014583729243193943129993549691669700055971661369336551957572641169478085068114398420268674204423199555380946804155800486904442627331776605431702302365490629618191697759073409914129977259657160603554276464389669046956082517701421892604159092631274633267744740095333695263467134235696041097659050076266319559459322889748923139230161133633464601775770937610846327929835621683082956204887107155787543251262762308250028579215453402983633986592938800957434726915343987505425127270421103769539519858815973220196680364103616232466097793430423970894322692966807791097190334901865278637721105495433966706932513512230164892174863156899073835158253740793857834918862155897533211651843222093681849840483449949748105805945515166492608548501156867596470680945158849580225691619646838464868201624013299319224883129388443571792610686803578510389554580938300816299910806142426906181485634561548578874929521116844316178832616987511747075299596064641677513682833161010047288349881854386204962586693968334263670791079237982064898685302103536859860199036595704649193109016375390209436856825213245617685542306394448450122582806820203634477486806519187932598591912502316970458628443467056328860460569819233673258630109704421556054211879277598291034941206883425057491796205945183671992993776935509791713426040607203009552773223468097713973548232785551471199054456324198326908806703034421746200996476842890545068743198533014175350591310953148273073755493052385969677269378198428648869400434382636892464587288971760396448613195002391820416587459051944443535364698146708730143133333735817961698263828581906921758054643747742566401407378672328855268517838152150386344432498105049219109234593083365252148189084152318199079428045312585291392602727976738220888321744582709163664640471229205013124736235952356787236328493453205521415698401670689107536762456516351627002595285411820336938295985910437831669075203121376321176171200157004660238402450308183431287295153030055327121677251110789903630896129289054399563278110134194734726752537190474462943909748580319247718165221145935416443473002399787496332487856561998057017138795565564898644057218774268268304778309540182097842570706745910121810406991251348479721048862032118602320644053825135475668689390899444335338592806945066
|
||||||
|
b = -68827848280222662429792059060707513545670949701990582175976299364831391106040615706147812360641234585486204341496752970536654191512240867726633520922246252154786910640556062774567709911377916956838557178954088648436291666144887126439890325263476631241308527949010697009505617398805589320282116095463447655362425378038219075201588470252010241904401902107712661216154241328520066001996552381403667318501357076679043806767976478719019148174417518503360697098336419486409571644827490646552295644472087531554696804487085753374359096885325710867322580611940206897600754906091276203148370888034952247249286139053884675062893722148822941913244950261820494681454131468274441195023515451955702542396517174654656337218050349634337352454858246583922107678303617165435881126183523570591366271322519168412857320857208199224708372947838322612302739821914494100190628646595460176731811663334427181099822881264369545983433072632966372579477943922396068951352049246398400910029471677940336676067067650591706033288568799408114193836347707796697993624562372982768067880896772435590609796021771997531390211889723313195759123099292034128524462006596464682213808852392096078044101561880132464812658947993791336462226420080030914833406654744795752530488438985765711889922449560912721730390557405882421654165472828598071715453856184393599654952023140700354504491998184867734222034113083972276822315839012959373242103673844336916517125763599022977361660455654504791421589320526664782927097446795960167055033491486463715323642502191131391310741657591205803096834365299662616663266821070968790036770746266217899098852927349699532922570276679715486878775885409983211565180388537316954176710456005742158730041544284164438721388783093683243850216686677805179619357168333276226004674721967850969301438034847136259893426060750072437903830802977165104319994235251301985146726134456182029826273774708169711155704024933366827024916196173912745833879240910675456216622766325583873090971575533213772961604266737700822721941181859865407345156486128667060275728565724210396049737347521786053643269185014010793178763186132077880808518398943177531079762752542151782632877483529042114538743273833484338009084311528363044672195142336704680113817956815779891432834477780000563000686058151672359838189467797639809472347705825246248919920819411144319386680573635197120303242547965380255365007482318174319596262232368673405344620367936504497728204668475385463405662112001445287337246682822921846597327896868374750256355066035501119225413931881972577301712335219267029309302528713527222846001213143719003390744997599326044324604425041526997263956509095237841782795438329187963935313574829611146655023732399033755792092199130921320347897703847645177329758459684352618352787033637274888844326559279403518351261952978757510887391088296160433868011508225679606940650641064913767957151832282510138650438743956593444939238482758392970054724666605404814140635840349441357308248825089197461328884675006221742930657179036201390492439337057866219750077002968027908424033617467835244878731730631220748117414903180119669708814731569058841260780653443577505612735207974428080820958441733430760805019815043894440973851889483692331130099754653259229786525744801502583490771191188896927969581728168512551838894270469362427064996596651063992019223870705733037483710956743807991096662031616548059573708165769926952602485222268750269460343407393274834436919699854275871014867841902367096906690683165696682236445091350866605649205841829187702798134350654773530511009743279987012522142620607830561742650474897635124642081468204467578196400336448116048532539748482292606003249217003338440768195642883223401377333590634164052159731639434260984138109785180073467498861743979327570509909476631256062439069065355425711196471359822007470551020057847481839951919678243146078797467681161281807784955373120241310786668700003841549794242839656178580520813196236270153086780616785391393372361371772629402536671337161451720837055552745199418241525029395991095402543454486754393600116714671140951372594345264034851472008713403005237519063041293825627324473637293126117943092495808703705577338464991085325317723370738441705883671573671922204079061042034278528315539150559086099954616797475374565922572119041181206183884856890664011396344034447476838452662259478035177278110857743361877303456365423958348379382136494879503226854253172907892172114031056388674459184137461789263326957149035493773485048129681863105607775099343604293941731270219021368753514598637208557844830182851219294753506492181350616033639334272451225435965311040151291376618212259068375985118
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest3.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest3.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest4.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest4.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = 962504924259233906785095455431265516089800391316333403384919303010191892640856804790624438196574925784052271197535768341682820879068853154969553777334746322210644006265788198486965484473398354844227191091264053733192761891504905410622613534817459898249532367281734250386468542429217534137003724903331147810851387420575956162597462768369256961780655208538341875468146499976167581465082753542701817073753506898679890813310219062619648575486919320326315945511197730382619756081092193200904636648213807864221978928858763490873221650346258052108624925564320092538299172236393705843560600136565888033652056087645286651210043988774983649447345627418475954615563667103470460044838690314942411817790760459521636594255380058432877717983249622475178507653743995854501071762368546806342084878666531193448652714733235194337285547923332822423435520561463981941296053882408455789149699683924621281945732211824850704712588063125198192903145165933524589283180082453446958128169029682497156215359958362783894766615665727724540134801997952678030420584502346505886731499200136215179699854520546606014142288517875764322063098204172725666095784970271317874831552937176227620090019417389119127773141433728657829411417759912689887497357344348938686882855353629358307927179391532649467231671862621805071997660293725141320839431086322895682118057940491429813233469125984760617328695885975113026847185587557833061316397882067381247363070919680729888247758258323990295566256714649785067947835811543293257038009968580264630296254011206970526858151708889911663610189079597207277686673827718176246745115158454419036241652183466411840358950034100169913966541756807215807215087185983496299283025599064308927480548932851711842346621494201571171164316132692552460936599395162681906679571337040644051995809676111801953969768125247512526705638205485504586900797751319803507593408514916975227153372089638867511058699164885490106900360839860573790012198900952289986355818767634954845146330706987020707278350606702640696963441282030967514207944330009958585501216811400141588298591283395848071505012771760957826675065320119943357650400791602769856173196750262232995279738225518194292550071483526380327803926012625245479671978037572537269749032145679994412869343062694296602656100615578170520743409872314967093371766436446391937343150235164791908146518634920002658194240672800939707034192327366495213805617493702630049424516902271120868699869099169552876782284775591027510977210107034559405271116982037414895187818625069679124104967228863820546895677291811693809776782030532759385438288324411460281845758565187721902404231681485710073384125683272978985557782090607047161022203998019983363846389473940328497227634595407863126187275818153540086354840431304616541950185997796303433086828613578355506320575964660169817725620216324561991063400725608090264587069622030599111812108186561431848517314547552579513906956348160193917967219277216748983927520104006399925219539098584061109136821822330263807338710936286957750841807463637383730923142119068455208428276562453375418267420232180391432623017617354187097481144420210888071016932454875841157329937223992926201433041691888401150070745007462126364517922858956761132194514818513267038512101991836621412739782400670503237062170946597213546842263184901951990596505802944615720623486368087278124803156272093213490220238871841559682392696314480140092784067641255207715617926629278402619614882184779857561393918710558498293296932883355382133853894657357191492793208948455659950750471513244928793231152757834597463319633494219276496275254831669394738079613455553952600138563098908876920555658536874003837050839670805804070452446261373568322837132710328833054198753911662706421704111670172981169909060815559044937931556968860705446074217014698182326379712799602835599684500054556364587063871024999605503534018423471601857654151868240500499576186360061672416299783568785258877170797923257612709054232398148474626181037490747867589035385399815875825568046265779953292249515605282841745667094895567260358631336824355648802823862766285090566058663888406226101929142894201451904340492628395897404824651600742373692689436981380641542125518539855305198035767911569861458920391395962240876770314902290549657242363208352158848122508884000735525012160641176092848801130844025977924622057301549143207943289343189791612784529136126742884829385339460673240229671558016867035551097950995928042477798749387047736810995095197680009694029404429009823004635478069338098416519480827270618533005144298350675590608750688978327994313869325228711959293170577715
|
||||||
|
b = 33749517237705272839195499976001605707688633507038030385202259428045523025585135983451824155642899427583338949056201673399779515988870670251396174130969957170188698444096699953077754427538946458882755755635743422647362297399704072999591359822079126129220260169008323070089433022934644131663526724599629925195188258161247917707596016871617030946632992968671078852876080507076962682370295771910039688407093574079915754534100590344889818460223775217119528669268826396167599031968891487158477426907933894401806833494215597887068397229752901204550570714830295729044722848815453571957579378167737894183798633215099129752306919655465235151215804444277457915721922529269237250270602828638113130774055145790624792127673055804190921973415866333098789529745948677717980823399309086575944490317007374810956691076433701550117532764934396005943768767681422289526384504976203846761571138854128072591773825100512011280500354473772677802341594509305233698232675840578695055673125983352655656846950660608218822710347468356838099614376450086741435944304237715617320547025667870084473400071820804587669100355712689724259843650414244891379590963628422578426234995386167347684638681795437201961894648166720423429033247319241208720723416044209190218064980792501501484468355332629240949009707472027020335887360401017287895319884909859345436997717218184050655456757166815558591773923448616840225099429813229470005380524706501089316391842015331582504879766362431074368361485260398080461848597198160981936976935471145115522333717320465237523409355811430495098710153206119240503226408819873768565154538817537441304586933861131833962748387532240191503822051334998642494427300754950237358778173117053214814160198086569317824637288123239670752466116494401486359592340080872764224246331103269138723415925529813621726067284885502771125398603828613020478953695702064778273967936363588482346609743822376708143338121355901966069574418735093616131821581469298795186391975646536964803024525259383765148176714928648564939624172336140933602686496910572566371844835652056956025504696219518755591552505979735130225535191519442528508630469855029695053705468821791410861279941009989175738951944680213903308845536644012842042737233124955927537215498880932533965113334702811225017635527936564035337594654464836382790093301780081917843610740393935495519664932667174104200487341170435179745639544915680323024628014510374847880617754024580338021711455119539915617389338254543808018449722937762144590669003781729812639111608739878247023183605011825217691464016731613111700605182230063241714260849451425240065518673724404412844991503710516749100954481003338189386093604613014046163324817233712612847772585965854292901986673302327256514322429589572069039111415781195522958004536274497363030013222181784803250988444119285262067309698219333804092006570577976514499987940795993708153813374951394101351620404918898826624269827014106587857118820502827469830193486585699674057672266107470411170719885136005812469053164177684872353893590080971070925707114931618644289060839189782010418883384348590695623822976668974111948386402528283865277753105475110148014253868227185492130869918201197210897228208283002109362575480920315952464479142684907925645200516283318981850280406612012678844420886998144857803677816334099018384039181775739509711030058881211762321669835895895318723871850602658325401550802381897052661693900210611044690279338692675800953131202492078564205316569776758325256684538430954121577281802531383503420378282593174325362667513399033629808091705586306596476739978162366647287843192005780888914717319486834115193940590254677379824895992226968857859580938076397149438617028488091822422392129396178852503595872588266086718776282472362004881189947141831995966240111901863407017152392292449734953253518014783947110468551215126290791184248646014959602220526458645329190327891950856262986111815933856895501612401978984787974173698718935877508171866692900067209131045989589002298137706285486531316038371671099900409326708831445232313991368906376448561898839072841744804682960719496568594315823255531841390882064158151672147652319669942830647951708017558318770009173759485199289019869219684705735622408003689912675996461007909730078584524685865059513440050609463996137934259382941210692171277508174832399426225065108490708978589576618742864638050886876122946953129641814281770219726839881355020636255828718742146281325082714482320500398654897416480104424267695937983643770292671587528912567349166547258856914633965175151394465867183984285157867379434229924772311613224471158005647203421557376389597019
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest4.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest4.out
Normal file
File diff suppressed because one or more lines are too long
7
testcases/bigint-testcases/BigIntegerTest5.in
Normal file
7
testcases/bigint-testcases/BigIntegerTest5.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
a = 565307724136942222118116843068096520989574390249995944162968726890424830866682147556469316101750010723463435684547071688916367836683781317080680612383678648721927348382379474922758291551629436209532608839643684379247753455279458095770478609030485099832005161181257420343134864132332919532404307190089799915050533827476336595885649943997243664851219807836459429510708405141667134424375737173383065967676732840273783644495577467818189558375309040153269739498820970417648726003654080353017195959901519328920344187711236923756118357990781955039974088106241879409753525446355112429169115704986001203759214558471153732557401374909330352502401676572612673353556166959082624512660558915657862631118840887428381110229779966621752362642105584423773185114732328622928882904841810597967547639991886760459832548175904089388582117889661576920520917677442723082980758499918918203827508035404277333611677397155599924415103049372760049011952669697178586649870305286416310971487396429236339852024728648245750928347153369067061148766699355765227066095801419106467835814613040571826443694091309990793426932978524410228750662458239546327212353250039068025653419753611064824830668621732702622017674856535229688632052085973032854097478392185603051970282241297225771028655190695815581517873693976436838942720055918224664872837701260296075647235023534413021692619922298474291916269580177275130508383011331418372704930200326153220122013614241226948034956722934864470380572231215597120426040505541432502497597101849397303980432372320359341686483596952420791216502008136427739052056079742843359525510862276420703655729084272042926280019347506758375970144941177877077754430672302601783366700405945166630622655793225760679794906960422110571045250138544260231754864663789570831997513969378217357519262990293578480463765319909914783515697222306902862557255768317442159997985550682272056562979162024531043189670343829006324539896411794040389133289151007404301919955956600669793152054505391187439481434567400262694194098593237614094778333757538417131287241304012406181929149685918645735213005761751619156078807967651422406737858174916927840325496655180900088966510939660755798082131105632638057226359390633418608510421178287043120173257598798638633894383158992014141851687556285047162397927082073924566105050754206069175350403396322594471630175241910322943697305052265171491452065316130531922916540713381034883278239544111299046605213075628359257480427415381183597939417592055650107406341299921941642292100038232565604407011826099733266787633195983073027679789520875557902731966423588310266586378494584773954927605245875793096237190744894218138738078598994875305666444021886306153654475999115354154640626549021359904371695097641100598376844852653146110866346885306445513447149408844189010601471897676528391658423707566072708550267529204574665877179376188511244232202695327693573340116882826800659478121104638355626408570190412310500919628381682117305304565647965666404763687382643086670894343121358423176821687081866793671878247342783598885717424602160840104781060090858954693023430640149517756867030774998064639380781903525049216183487447451641066056787185093081092823254413320726791661328216976880909499205123749840012736811330093243438436554022351932810319691259354572482489126351831139981434177400966588804940495538027619851921364011036158014115613368147442346376272373563686427547938939304400918450264235766779330078206880114574879599858921953911014417778480916986594415784604640879757547779418895096947775371279555117133719985678630753460559841213502838391532770813881137580706668038283294681961656511462619317544314772282132928940738413527977556437585768993749823649779337754487142835862768687466222277333278756269139665440103320934975972312463815284330058356888119303615867300946507994023164008027645836606403330381571527359621199872598356009655973209053049365478430089060716983909982971871428029140091111862842459170042476601083098843715128131238633595479354810083408412097266929572690471230284562265427384713996424354647077322530891860008990660868360153106403578272328177133346987783442509877693357355968903995847861029583420826693781113084028370468894908127645518150756068050365192532140865917933403353782758324689730475078708879101863181427625997571682219801828933173678542733205030592396899432572703845312288205064726740479304294795253208165418111814179643317744109811613922862251592625835956818988506899503384639749573523638287339017117830264171661965570097497038454484911641176755383584357645699125993766010496552599592963299278594043844408139790330310843962863152669721398277874216485759823286733946862405896261182305894165251653181728933009193605991732216645771395354007014112531838481097027098600864575358755279531925766031557760336059490260248328439419297763291751797367864633241820628947866
|
||||||
|
b = 6870011986309123552318057582291472527466539581844598941534536871624558534195616844298254547663957893321042080305386216571735070545770901901313596845361364721557505164430773094206481677403922788325560273346122027874113425264461018710403002736521342505287739115086223479221226448012622689850904435221120476483291679881722209239575433762060884121706781663845998002839256435783541263848437017603205550488699929320506787392128736094823373887533803017176815602686225293401889451778923045683370162350366389387895940144876863906698045018269580414931836914380254464666526967942403027344574668321096989608271397621605222481805510120439622671463134726480941585261221350238618668587767462572981598625679346858811173612917436988151758639033084883357238489272704284009200737359850849895093253787612351764155484538999297810662217423933360889821471850377292551055758528914201270300337991416436479884838831325553654107608157742971510090408325937934281691528350167780225969654873236408975770987064372046294395854187821335666750567401495878869321666085085461282085711651030722076113793563331124079341362533216328280528934146990755789556275479958345308609899403990013129834911235904410242860018075213785387058492015359037956979351973671417647214106901081476745675288185096453604258266812123958196268390059175501163440741438461125905817464612076857366532941272503848850109817213069260966640288421774209174179133688848299527131548512010918033792180622640506918396665894867549824384693940923415295087381557408617681635952878616623530156479862336129090078741709099545129393663571657487971851244200199377405453281376900793644509772562829881814332374530855802895698356135557332053736125270804738119616183283628118227452872917165906436668609592339948711666663339207380533612879301381226413246725779557758395940483499964795828097791711687214841094603225395346029730863507695540544970768260054315389812309132649065178664576327048617176632223997255981321134353559941202450557061871610215137695664289219485038812538119167786910927030560065504642477396156188048893742150027077375533551430879409021556488777780811875172988275821871964417975308302654440327190431685067009535186758078755840456356097111923741263367469985496295918820808794718158580055274657971153990905239191707698521924263008426084459944956072896637697248156330613789875039156775350553317007055781181225637853137717311403129274514152383283903042280213839429173496741177999908420515169651852854914312431921701505888380169715238922196355501564123243970428782891483199934963287000309572021496752169057082577059369684430058169630165228532883929338005294831672136182597172903213967784526329621728249413291440333945625732359088624004733327834006651355168416061952266656464217770206461212364635285636027517640289048396818997898585474287707895345235905273745431251129877460872488113765448960585600748323627524073721060786471958097373193414027430182556937303656165055157852360019685459132529820042952541153215946509327003420764351753900267212548504297601553056835224068761313886048572955304341237267048476004937112392965381944930395221601390228926273643793511455573356976256830342436005255176960328298250123336296574214730083596646638956870200803262161450352579512918794585764633299839983753132579825840319125889222546476201144141588930479790196243723064652674674684850373625390812074744340515776595959715531137101664992842353097879444338147965577725877213886784653584480433041750985585902970587116350769671496478227384535395882270004011045483774101023549932842349586720759509339950085836364535056516933770909065163796142155789671748746801866804273462280596076552283597403342699695233282178530139328380535755123490277451160298951300402025585594062941704540374434527903591371102886430638906735357072467588076153657841843341628839859595887678686677320645998390080211299791499889518943871969737053491611979157848571134891389418323506037812536440205729833212919170929827834416684367084975796381107875123316846915104952772721766389005404191866975287334452842531034123828836888708373408174313515647242931745607139883684378122806885217981397572967099423066098622612735935263577131015149917477857774153796987720247409949818993738031200869750856436260214459267355852965960877859730040734942352981469066489370636864735440276209766253264929528306131049484474512071440090371609883235623058168599708397941538245732345438374768984685371705330009404166190977173763004065534422160234139757227502904570736374271228132427820467914079999661076235710949922016422627671603200382659003195532508429068274721233432751813379817109189143098769335558971558218238663184362071968795609613193210106819229847613598786935595994698718930673795835751671285200738063380802485040901357992634183025962028801629766172239729432378450385626023
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
||||||
|
print(a % b)
|
5
testcases/bigint-testcases/BigIntegerTest5.out
Normal file
5
testcases/bigint-testcases/BigIntegerTest5.out
Normal file
File diff suppressed because one or more lines are too long
6
testcases/bigint-testcases/BigIntegerTest6.in
Normal file
6
testcases/bigint-testcases/BigIntegerTest6.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = -221361132552498312615410091278042815265905178210942714679336922175880786069624454985551583394555889083858821149601813996766800034993923073779661402013710170550009601717903799332612700345172416673710157267110763007781698363365944278019761049916498535566633664884610464784235884490346358448577370593926886497311692236960637503246930629127318649519585712562376229656597139774550282390747939296737466498020530551719897156908539809878643255015862187165372404898429489495103738907190875738621126460789177081192070517293253894632910762578043160383654694366370418865737250315378933698838689596994813867769750888983437722255037376409498209379533418327061266576415002558381028864687101173153218998145937693327155804274786711078994809333857708551300281657432190900679840518808084749806240887553500484360653845362514082211924433471309525356776969808326854472906695623190798060938517264266550424021549191174439974382466117313725126426457364311416297929883844825398067502519175434052617873314653373249070766643396069712835667954641636383037856601452619071590508733160302555760034452945568987274931287530362492151707862752883714009961975371558674280360356875818621008039240684633265770469879393135937753101140896048130476541630514552524194857566206673623136972378858200288975919049261256978225369150563580904232612973393938732019954411230808094534293900196356480540118970559331734595240185461263822612374176006017912442477441892346430447064617775895094311320171376732486524802183732259506527562814205849857192707915385701338560270850608594191782224521896751053525280930159621853813097480722746128795607848601018892281119578190541925718190288615826416998152923906809068728720135689537057601452471374281973165525665994187949666125373817803721944609630311297220297551851447654457401026803816643438712147098653829905659051772737379759833768310851014506038638430089741078818111654300797522374858353223326320062559481717688389135770408654475940794756976662284461127140294813672653449900416829291961474395288958461930968464540211681429693320370443039244872344143665297811737195957031754948567300223570651502595321513989456525309865121071988402673981642821308785844251445278566996203706138431910738534973720854415709608845048955740948770233996118051114865929147319687928610473060672266977123523023303334713386958879214551965155020049050778348145898584997478271645178920131685888358907933703994885953811724711047838457991917872725746512845677273411859159769045151155703301403824612302372123120655812843219812406401274235585745761255025013595609198464141016523580415872518773706114010310899298227055870196779183442494712089516925019586867458645745841286895430029596501500430519968577965259044233256263183020818420918079769110639182916689706974168105711326573373699236304781713281677104592388498474351689185905013081491998823312640178369354080796174937940672811645710811469121890248872007631776403159946782699299078610818288502572592277684575879335516692917698490307253889560927752889850710773642279844983853259486031074593005498197269938814938445579811185491804205052070183444881052445856403421613410086880950750524075003737407046225629254688294587711021147710491421759027848939537032149622777839924871745175539260570821243849073914106349106242819849423060404299181269951101805282113538505654071413479143272380482945243645093288201964247913735409494440220712373638879554364307263682661000097387191140485668040750699909611963166937389549951824000847566814621776787684452696245720686503481922918001254269462082384697916081126596978999486822148951545065932702029381256262042273927197758090424861575399045455619831653943802313389403999789998016096055020319363981615169005341480167202758302261552372823116038464514976809839110781472080170400428808123939676638304726967401454613827246679359033619409628541315277260186196214746390073632211286097061632604944009821240057865270019851876959489945791601976745625821832960661358813937083487437912484072464186724453578414570176444622176927822211973793611475849603322888893827517643788216129200676515848510842422759891380825121682969852470781669047563621048230445717767755983147685423987946752894509260992795642838977896801192382147057331660942811941664635847967538452948028619408524335716636377011043060467717913503477023494460168795546593385286303348200828575157077649663676215974981842304226213411871938937441127381944695845089730171368493569982706969814533382803222354573601159722519446625126848316182119096327295323375445985401849057787160404781937337688158409255176051307409354896879562998998751613002606900272623723224202493745282173567924847610241545320699008653111715705217070758058127068399686562154588510292
|
||||||
|
b = 83751117225991073857194622331384348639973281194852548779145153142406967900219518607091085779020571221535874651680670021304263974249027529683043040297866573739589404568721435863767320105728545587674423671427627413272562747458882947693411274107935657252393399227877183816675087735491285464494711840612387960580348262115249701865057953017478812202316398156293523858160978575489576360953293494565045936018193663247013683792054217392835690465498791934076663571581465101334600076670883801637048363617035036533704822332837582289756923124530129516517777032748426958111598307381827946214051618180064974816813521231570944213381862629181851523364540650676895605267540884586463490465589801932834416599215827732408809680440038069552052415061948968013655061252559343186387215652781165658097009092893777305382345827877462940486420445668983798538391606013180367296223084723153412252399267521539251681815436041205987835575472929633384433471596789715707592093602415054939417170753707111359206046679663940648096244052370021179932272294264572924257153048772039155495234188274999504375011737427875478075898891041191180680666979783201983719367260783039221485457558870092011784090657551947544140098067056792265755971648134178524330223423468204445419078594507317672026809471350083691665415272621869493260430952447224375173743480555500709266819532478069697427991282070523971798544545291462752660445729704091516002478098437485252367381240446448317213228515660376906993088383888380256448532324485218997210672009160734469480395779326720348468728784870924129575639382826071818019492026145962380407534416654692282443879542657316317970382393375513262917821121069573364838256314006880883548798069980519835996523750019824424230786157818256845472006837906848548561752007962381142849467889019559849672239104944207231409515217536159126549332557547411385081633645074932092421963957111580649142463095272434332741707465882134253384014974803693364538199582845456348263800910036900226910093612735611535932507130293287298992548291281607663479825943833409615780661851748669611118709581100523314544335879803199631188869371379801395019778271409073622034366802053505472541198085015363332490292722019521906976289007692323626035424158107958385463912639383879942978066046032901725499081183507045852150187470724902840193785987612448150303976202204704333658814649013425646681044668222750070138695063196754813050619210540257477434409976259215019887729897797488859881110748551969071825842149581944085626511975831455264473705395534306040634730137286937051173013949309424066137718023520420608113805492419747145912751782669438710204505460035567852067245184890013100136968859977382188955035603694404098099430267072510764571508078509028622952224154647273832579420620225723990397004737334837625346405851863601178452285329101101659189793350746659271397441006650646172086602873932165702531330428324463563407748909174797813349766364283526940657218013435913031127274045953245329692209857976843229918999741278491044370512999256690785205226163657624803990806535378023252322292496027447131448589666205621588358344151799501312746865774314598092184857710640092708104627679226598089616081904729571911150235673852700301247518190624759696292408948917035867120466896023325405086182284988029920182572150107270952525737817662035724689871353913764546741714366706688650386330834265915055807276974617234578024931218644769384030093730070670816122180838919460468555119822917927106440227093914453591962297865907835336838948256938038157122481037251570666271347703132357103307515609092660689126568663528726779149168313500024777193367059350787187385542800560478235919129579710352825320328149447024627267505903638761948449836163275789447687214735787773527305102778198767602902156919699572346736552914920038680706971525064339680174432405180477808931203162528735736015808619859385032247273223348613251135947944194960839109912272461335969478548526824890882804264455512831516737774121622109990069874769599946817778138087447374492287334690538093314738972079610218360384467583092974997981319128061809672980912207693297545544960765091007591142414729644064923304473414970469827683235053837115586916619422487267590843217040526599965407488607788730490120405066556301647416485439166530302543030948428853836980216657358616109914846220991713594395825044310189908507046748255734582738371179503366157134307063138988579654065565167187298199803933112876676324769392121017508232676351628138651752872271074965023305413657832434862647471987748804699423013884010866176800513834017723819071293390030476714042504860069426529635792133282459690924764855274528548201424199902204114623086398406540623377278407560428880542841800079981709682895784544440817276405339306226942221894041344626782146818298126447796969225627790757382415545393486633
|
||||||
|
print(a + b)
|
||||||
|
print(a - b)
|
||||||
|
print(a * b)
|
||||||
|
print(a // b)
|
4
testcases/bigint-testcases/BigIntegerTest6.out
Normal file
4
testcases/bigint-testcases/BigIntegerTest6.out
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user