设为首页
收藏本站
切换到窄版
论坛
BBS
圈子
Group
CZLJChat
AIGC
登录
立即注册
CZLJ
»
论坛
›
编程
›
作品
›
[programming language] Nyasm Ver 0.01 (test version) ...
返回列表
发布新帖
查看:
18
|
回复:
0
[programming language] Nyasm Ver 0.01 (test version) #1
xinhaitianze
xinhaitianze
当前在线
积分
610
雷达卡
4
主题
13
回帖
610
积分
橙焕
橙焕
, 积分 610, 距离下一级还需 390 积分
橙焕
, 积分 610, 距离下一级还需 390 积分
积分
610
发消息
发表于
昨天 21:11
|
查看全部
|
阅读模式
本帖最后由 xinhaitianze 于 2025-8-7 21:11 编辑
Nyasm
闲来无事,我准备做一个解释器,原本叫
AssemblyConverter (汇编转化 | 我那翻译器翻的,还不知道对不对)
,从这个名字不难看出,其功能是将高级语言转化为汇编语言,但在这个时代也恐怕没几个人还研究汇编了。
所以,它不仅改了名字,还改了功能,它的名字是这么来的:
nyasm
=
nya
+
asm
“nya”
在我老家方言里意为
“
什么
”
,其实是读
“ni nya”
,但由于语速过快,简化成了
“nya”
。
“asm”意思是汇编,算是保留了原本名字的一部分以作纪念。
过程
1. 程序完成对文件(*.nya)的读取例如 函数:open.h/read():
using
io
fn
main
(){
print
(
"hello world"
);
}
2. 完成引用(using io)
这会将 io 模块里的内容读取并整合进源文件中,源文件里的代码会copy一份有另用 函数:processing.h/Uprocessing()。
fn
print
(
str
NyaText){;}
fn
input
(
str
NyaText){;}
fn
NyasmVersion
(){
print
(
"version 0.01"
);
}
fn
exit
(
int
NyaExitCode){
return
NyaExitCode;
}
fn
main
(){
print
(
"hello world"
);
}
3. 接下来给代码进行分词 函数:token.h/tokenizer_code()。
它会将整合好了的代码变成这样
[fn] [print] [(] [str] [NyaText] [)] [{] [;] [}] [fn] [input] [(] [str] [NyaText] [)] [{] [;] [}] [fn] ......
4. 获取函数名、参数、代码体。美化后的输出 函数:processing.h/lex() <= 这个函数名我不知取的是否恰当:
Function
:
print
(
str
NyaText ) {
;
}
Function
:
input
(
str
NyaText ) {
;
}
Function
:
NyasmVersion
( ) {
print
(
"version 0.01"
);
}
Function
:
exit
(
int
NyaExitCode ) {
return
NyaExitCode;
}
Function
:
main
( ) {
print
(
"hello world"
);
}
这些实现中还有诸多逻辑BUG,代码不仅要能跑,还得
对齐脑回路!
还有帮助信息、错误处理之类的,这里不赘述
现在只干了这么多,剩下的等8月
9
日再说
(2025/8/7)
Make Programming Great Again
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
关于我们
关于我们
加入我们
新闻动态
联系我们
服务支持
官方商城
成功案例
常见问题
售后服务
投诉/建议联系
[email protected]
未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
关注公众号
添加微信客服
Copyright © 2024-2025
CZLJ
版权所有
All Rights Reserved.
关灯
在本版发帖
扫一扫添加微信客服
返回顶部
快速回复
返回顶部
返回列表