Lox编程语言的Python解释器。
项目描述
pylox
简介
这是我对Robert Nystrom的《Crafting Interpreters》中的Lox编程语言解释器进行的Python实现。
Python?
虽然文本是用Java和C实现的,作为其高级和低级实现,但我不知道如何编写它们!因此,我将使用Python进行高级实现,最终使用Rust进行低级实现。
与文本的差异
为了适应合理大小的文本,完全实现的Lox规范省略了其他编程语言用户可能错过的功能。通常这些功能在章节中以注释的形式讨论,或在章节末尾作为挑战提出。以下列出了此实现与文本参考的重大差异。
通过挑战定义的
- (第4章):任意嵌套的块注释(/* ... */)
- (第9章):for和while循环中可用break语句
用户选择
- 除零返回NaN(Python的float('nan'))
- 字符串可以使用"或'定义
- 模运算符(%)
- 幂运算符(^)
- 整数除法运算符(\)
- 都表示浮点数和整数
- 操作的返回类型遵循Python3的语义
- 容器
array()
- 基本的include头文件系统
- 支持标准库导入(
)和路径导入("path/to/file") - 不支持递归include
- 导入的源代码假定是有效的
- 支持标准库导入(
额外内置函数
除非另有说明,否则行为与同名的Python函数类似。
通用
输入
len
ord
read_text
(通过pathlib.Path.read_text
)str2num
string_array
- 返回一个
LoxArray
,其内容与collections.deque(<some string>)
相当
- 返回一个
数学
abs
ceil
divmod
floor
max
min
正则表达式
对于Python等效函数返回 匹配对象 的方法,返回一个 LoxArray
。数组中的第一个值始终对应于 match.group(0)
;如果模式包含一个或多个组,则数组将匹配 match.groups()
的输出
re_findall
re_match
re_search
re_sub
统计
mean
median
mode
std
纯Lox头文件
<array_sum>
<hello_world>
<map>
<split_on>
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
sco1-pylox-0.5.1.tar.gz (31.8 kB 查看散列)
构建分发
sco1_pylox-0.5.1-py3-none-any.whl (38.5 kB 查看散列)
关闭
sco1-pylox-0.5.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 58dc53346cda3c8858b0b22aeafce6a7bfe063781a45b3075c18ec065597a00b |
|
MD5 | baa72f7e9f51fddead693630dfa6b2a9 |
|
BLAKE2b-256 | bb5cafd40e3f179d659737549ba4420db974c12ed43d3bd5c4cfaef6a0de0dba |
关闭
sco1_pylox-0.5.1-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7a2acdb8e3c794bc666927de939cb263ef245240e1bc1bfc1736665ccaa594fe |
|
MD5 | 926ca317f46a6d37c15a08c80f7e2c4f |
|
BLAKE2b-256 | 80411d130a5f6b4727b3680b293fa928ca462ae72769fd9619eb3abcfa4ceffe |