# fourgame **Repository Path**: lamdba/fourgame ## Basic Information - **Project Name**: fourgame - **Description**: 玩具编程语言,参考brainfuck、forth、postscript - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-12 - **Last Updated**: 2025-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # fourgame #### 介绍 forth的玩具方言,定位类似brainfuck。只允许使用1位16进制数和14个指令(4位加法、4位减法、获得高位/和8作按位与、if、if-else、while-do、do-while、over、swap、drop、call、dump、load、ext),其中分支和循环使用方括号包含的代码块。 #### 软件架构 fg_lex.py做了简单的词法分析,fg.py解释执行,example.py包含了一系列简单运算,实现了256内的整数四则运算。代码有待优化。(当前的8位整数除法展开后多达3000行) #### 使用说明 在example.py中使用 tex < "..."测试,或者用Python代码导入fg.py的run函数,或者在命令行中使用python fg.py xxx.fg。 python fg -o xxx.fg可以只输出结果 dump、load的设计是为了操作第二个栈,用于在超长栈中游走(over和swap最大只支持操作栈前16个对象),第二个栈同时用于外部调用(现在还没有实现任何操作,但用户可以自行修改fg.py中ext的代码来添加自定义任务) #### 目前的问题 call的设计用意是让用户可以封装函数,但是由于栈定位的复杂,定义好的函数很难调用,尤其是存在互相依赖的时候。test.fg编写了一个调用函数的例子。