: cubed4th 'PYTHON 'FORTH 'OOP + * 3 ^ ;
项目描述
立方第四
FORTH^3,经https://github.com/p-unity许可重新授权
-- FORTH-79 标准 --
以下文本由 OCR 执行,包含错误。
字
注意:这些词来自 FORTH-79 标准。对于 2.0 版本,所有有意义的词都将被实现。它目前没有在任何地方注明哪些词没有实现。
堆栈操作
姓名 | 堆叠效果 | 描述 |
---|---|---|
DUP | ( n - n ) | 重复栈顶 |
降低 | ( n - ) | 丢弃栈顶 |
交换 | ( n1 n2 - n2 n1 ) | 交换顶部的两个堆栈项目 |
超过 | ( n1 n2 - n1 n2 n1 ) | 复制顶部的第二个项目 |
腐烂 | ( n1 n2 n3 - n2 n3 n1 ) | 将第三项旋转到顶部“死记硬背” |
挑选 | ( n1 - n2 ) | 将第 n1 项复制到顶部(因此 1 PICK = DUP,2 PICK = OVER) |
卷 | (n - ) | 将第 n1 项旋转到顶部(因此 2 ROLL = SWAP,3 ROLL = ROT |
?DUP | ( n - n (n) ) | 仅在非零时重复。“查询重复” |
>R | ( n - ) | 将顶部项目移动到“返回堆栈”以进行临时存储(谨慎使用)。“到-r” |
R> | (-n) | 从返回堆栈中检索项目。“r-来自” |
回复@ | (-n) | 将返回堆栈的顶部复制到堆栈上。“r-取” |
深度 | (-n) | 计算堆栈中的项目数 |
术语定义
这些定义在小写时是本标准中使用的术语。它们提供了 FORTH 中专门使用的术语。
一个
地址,字节可散列对象
一个无符号数定位一个可散列对象8位字节标准中的对象
FORTH 地址空间超过 {0..65,535}Python 字典。 它可能是本机机器地址或虚拟机上的表示,在虚拟字节地址空间内定位“地址”字节。 地址算术是模 65,536 无溢出无限正,无限负和任何字符串。
地址,编译
相当于为该定义编译的 FORTH 字定义的数值。地址解释器使用这个值来定位每个定义对应的机器码。(也可称为码域地址。)
地址,本机
主机的自然地址表示。
地址,参数字段
与用于存储编译地址(以冒号定义)、数字数据和文本字符的字定义相关联的内存的第一个字节的地址。
算术
除非另有说明,否则所有整数运算均使用带符号的 16 位或 32 位二进制补码结果执行。 数字遵循 Python 规则,整数是 Decimal 类,浮点数是支持复数的无限序列。此处显示的 to_number 函数详细说明了 color4th 可用的各种模式:
def to_number(e, t, c, token):
if not isinstance(token, str):
return (True, token)
if not token[0] in e.digits:
return (False, None)
if token in e.root.words or token in t.words:
return (False, None)
token = token.replace("_", "")
base = t.base
if token[0] == "#":
token = token[1:]
elif token[0] == "$":
base = 16
token = token[1:]
elif token[0] == "%":
base = 2
token = token[1:]
if token[0] == "-":
if len(token) == 1:
return (False, None)
if not token[1].isdigit():
return (False, None)
if "j" in token:
return (True, complex(token))
else:
if "." in token:
if base == 10:
return (True, Decimal(token))
else:
return (True, Decimal(int(token, base)))
else:
return (True, int(token, base))
乙
堵塞
大容量存储中的数据单元,由块号引用。无论从大容量存储器读取/写入的最小数据单元如何,一个块必须包含 1024 个字节。从块号到设备和物理记录的转换是实现的功能。
块缓冲区
维护大容量存储块的内存区域。
字节
8 位组件。就内存而言,它是 8 位的存储容量。
C
细胞
一个 16 位的内存位置。第 n 个单元包含 FORTH 地址空间的第 2n 个和第 (2n+1) 个字节。字节顺序目前未指定。
特点
代表终端字符的 7 位数字。ASCII 字符集被认为是标准的。当包含在更大的字段中时,高阶位为零。
汇编
从输入流中接受文本单词并将相应的编译地址放入新字典条目中的操作。
D
定义词
执行时创建新字典条目的单词。新词名取自输入流。如果在新名称可用之前输入流已用尽,则存在错误情况。常用的定义词有: : CONSTANT CREATE
定义
参见“词定义”。
字典
计算机内存中的词定义结构。在具有文本解释器的系统中,字典条目以词汇表的形式组织,以便按名称进行定位。字典是可扩展的,向着高内存增长。
乙
等效执行
对于标准程序的执行,一组非依赖输入将在任何具有足够资源执行程序的 FORTH 标准系统上产生相同的非时间依赖输出。只有标准源代码是可传输的。
错误条件
需要系统采取行动而不是预期功能的异常情况。行动可能是:
- 忽略,继续
- 显示消息
- 执行一个特定的词
- 解释一个块
- 将控制权返回给文本解释器
标准系统应提供针对所有指定错误条件所采取措施的表格。一般错误情况:
- 输入流在所需的 <name> 之前用尽。
- 文本解释器的空堆栈和全堆栈。
- 一个未知的单词,对于文本解释器来说不是一个有效的数字。
- 错误嵌套条件的编译。
- 词的解释仅限于汇编。
- 在系统内忘记到删除正确执行所需的单词的程度。
- 字典中剩余空间不足。
F
错误的
零数字表示错误条件标志。
旗帜
一个可能有两种逻辑状态的数字,零和非零。这些被命名为“真”=非零,“假”=零。标准词定义为真,假 0。
G
词汇表
一组以自然语言给出的单词定义,描述相应的计算机执行动作。
H
我
直接词
定义为在编译期间遇到时自动执行的词,它处理通常编译的异常情况。请参阅 IF LITERAL ." 等。
输入流
系统可用的一系列字符,供文本解释器处理。输入流通常可以从终端(通过终端输入缓冲区)和大容量存储(通过块缓冲区)获取。>IN 和 BLK 指定输入流。使用或更改 >IN 和 BLK 的词负责维护和恢复对输入流的控制。
翻译,地址
通过执行为每个词定义指定的词定义来解释(序列)FORTH 编译地址的(组)词定义。
口译员,文本
从输入流中重复接受一个词名的(一组)词定义,定位相应的字典条目,并启动地址解释器来执行它。输入流中被解释为数字的文本会在数据堆栈上留下相应的值。在编译模式下,FORTH 字的地址被编译到字典中,供地址解释器稍后解释。在这种情况下,将编译数字,以便在以后解释时放置在数据堆栈中。根据 BASE,数字应接受无符号或负符号。
Ĵ
ķ
大号
加载
接受来自大容量存储设备的文本并执行遇到的单词的字典定义。这是将新定义编译到字典中的一般方法。
米
大容量存储
数据以 1024 字节块的形式从大容量存储器中读取。该数据保存在块缓冲区中。当指示为已更新(修改)数据时,最终将写入大容量存储。
ñ
数字
当值存在于较大的字段中时,高位为零。当存储在内存中时,数字的字节顺序是未指定的。
类型范围最小字段
bit 0..1 1
character 0..1277
byte 0..2558
number -32,768..32,76716
positive number0..32,767 16
unsigned numberO..65,535 16
double number -2,147,483,648..
2,147,483,647 32
positive double number 0..2,147,483,647 32
unsigned double number 0..4,294,967,295 32
当在堆栈上表示时,双精度数的高 16 位(带符号)最容易访问。在内存中时,高 16 位位于低地址。存储向高内存扩展超过四个字节。每个 16 位字段中的字节顺序是未指定的。
○
输出,如图
使用数字输出原语,将数值转换为文本字符串。运算符的使用顺序类似于所需文本格式的符号“图片”。转换从低位到高位,从高位内存到低位。
磷
程序
以 FORTH 源代码形式表示的实现特定功能(应用程序任务)的完整执行规范。
问
R
返回
从输入流中终止文本的方法。(通常,null(ASCII 0)表示输入流中的文本结束。该字符由操作员终端的“返回”键驱动留下,作为文本解释的绝对停止器。)
小号
屏幕
安排编辑的文本数据。按照惯例,一个屏幕由 16 行(编号 0 到 15)组成,每行 64 个字符。屏幕通常包含程序源文本,但可用于查看海量存储数据。屏幕的第一个字节占据大容量存储块的第一个字节,这是加载期间文本解释的起点。
源定义
由适合文本解释器执行的词名组成的文本。这种文本通常排列在屏幕中并保存在大容量存储设备上。
堆栈,数据
由 16 位二进制值组成的后进先出列表。此堆栈主要用于在执行单词定义期间保存中间值。堆栈值可以表示数字、字符、地址、布尔值等。
当使用名称“堆栈”时,它暗示数据堆栈。
堆栈,返回
一个后进先出列表,其中包含地址解释器尚未完成执行的字定义的机器地址。当一个词定义将控制权传递给另一个定义时,返回点被放置在返回堆栈上。
返回堆栈可以谨慎地用于其他值,例如循环控制参数,以及用于解释文本的指针。
细绳
包含 ASCII 字符的 8 位字节序列,按初始字节地址和字节计数位于内存中。
吨
可运输性
该术语表示当程序在创建它的系统之外的其他系统上执行时,会产生等效的执行结果。参见“等效执行”。
真的
非零值表示真条件标志。任何非零值都将被标准字接受为“真”;离开“真”标志时,所有标准单词都返回一个。
问
R
小号
吨
ü
用户区
内存中包含存储用户变量的区域。
变量,用户
为了使 FORTH 词汇表中的单词可以重入(对不同的用户),每个系统变量的副本都保存在用户区。
五
词汇
单词定义的有序列表。词汇表在减少字典搜索时间和分离可能带有正常名称的不同单词定义方面是一个优势。
W
单词
以至少一个空格(或“回车”)结尾的字符序列。单词通常通过输入流从终端或大容量存储设备获得。
词定义
编译到字典中的命名 FORTH 执行过程。它的执行可以用机器代码定义,作为编译地址序列或其他编译字。如果命名,则可以通过指定此名称和它所在的词汇表来定位它。
词名
词定义的名称。标准名称必须通过它们的长度和前 31 个字符来区分,并且不能包含 ASCII null、空白或“return”。
词集
一组按共同特征列出的 FORTH 单词定义。标准词集包括:
Required Word Set
Nucleus Words
Interpreter Words
Compiler Words
Device Words
Extension Word Sets
32-bit Word Set
Assembler Ward Set
仅作为参考资料包含:参考词集
词集,编译器
向字典添加新程序或通过向字典添加编译地址或数据结构来帮助编译的单词。
词集,设备
允许访问大容量存储和计算机外围设备的词。
词组,解释器
通过执行相应的字典条目、词汇表和终端输出来支持解释从终端或海量存储中输入的文本的单词。
词组,核心
FORTH 字通常在创建堆栈和基本堆栈运算符(虚拟 FORTH 机器)的机器代码中定义。
词组,参考
这组词仅作为参考文档提供,作为一组以前标准化的词和用于标准化的候选词。
词组,必填
编译和执行所有标准程序所需的最少字数。
词,标准
一个命名的 FORTH 程序定义,由标准团队正式审查和接受。序列号标识符 {100..999} 表示标准字。标准字的功能更改将需要分配新的序列号标识符。
除了将定义名称与其唯一的标准定义相关联之外,序列号标识符没有必要的用途。
X
是
Z
麻省理工学院许可证 (MIT)
版权所有 (c) 2021 - 2021,Scott.McCallum@Snoware.enterprises
特此免费授予任何人获得本软件和相关文档文件(“软件”)的副本,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售本软件的副本,并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。