类似流程控制关键字的解释器怎么写?

cky77 2021-01-30 03:07:31
RT,我要实现判断、分支,循环,跳转的流程控制关键字的解析功能,请问有没有开源的代码参考或是思路参考? 就是程序读到IF关键字就去做if判断,读到break关键字就跳出当前代码这样子。 功能应该是类似于文本语言解释器的功能。
...全文
344 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2021-02-10
  • 打赏
  • 举报
回复
引用 12 楼 cky77 的回复:
[quote=引用 11 楼 陈仲甫 的回复:]TCC,可以直接跑C源码, LLVM可以打造自己的语言,都比你直接从词法语法开始容易。
请问TCC支持 把我自己程序中的函数注册给它调用吗? TCC如果只是编译器,那我需要怎样使用它呢?[/quote]可以作为解释器运行 直接给源码让他跑 如果你只是想在脚本中调用你自己的C/C++代码,可以用swig之类的方案,导出脚本方案 也有lua、python等等一打能支持调用的语言 也可以把代码封装在COM中 利用IDispatch来调用
cky77 2021-02-09
  • 打赏
  • 举报
回复
引用 3 楼 mmcanyu 的回复:
C语言大全,C++primer,最后一章都有写一个解析器。如果要成品,可以参考angelscript,纯c++脚本。


用了下angelscript,对C++的支持真是相当不错。
mmcanyu 2021-02-09
  • 打赏
  • 举报
回复
引用 14 楼 cky77 的回复:
[quote=引用 3 楼 mmcanyu 的回复:]C语言大全,C++primer,最后一章都有写一个解析器。如果要成品,可以参考angelscript,纯c++脚本。


用了下angelscript,对C++的支持真是相当不错。[/quote]
cky77 2021-02-07
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:
littleC
http://blog.gxnews.com.cn/u/31477/a/212509.html


littleC是一个编译器吧?我要怎样用它实现我想要的功能呢?
cky77 2021-02-07
  • 打赏
  • 举报
回复
引用 11 楼 陈仲甫 的回复:
TCC,可以直接跑C源码,
LLVM可以打造自己的语言,都比你直接从词法语法开始容易。


请问TCC支持 把我自己程序中的函数注册给它调用吗?
TCC如果只是编译器,那我需要怎样使用它呢?
an_bachelor 2021-02-07
  • 打赏
  • 举报
回复
TCC,可以直接跑C源码, LLVM可以打造自己的语言,都比你直接从词法语法开始容易。
zgl7903 2021-02-05
  • 打赏
  • 举报
回复
个人建议, 把能支持的操作列到一个组合框中 (操作A;操作B;操作C;……),加N个参数编辑框 让操作者点击选择和填写参数, 也方便自己编程区分操作
cky77 2021-02-04
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
https://bbs.csdn.net/topics/380258667


发现不支持脚本文件中在函数里定义变量,也不能传值给全局浮点数变量。这样的话,我是不是应该直接用一个主流的脚本语言来实现这个流程控制功能呢?
cky77 2021-02-02
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
貌似是从VC6转的? 可以在不同的目录下建一个同名项目,然后把源.h .cpp .rc 文件复制过去,代码用原来的,项目配置用新的


目前发现这个解释器不支持“while”和“default”
cky77 2021-02-01
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
https://bbs.csdn.net/topics/380258667


升级到VS2013后:
debug版报错:
错误 113 error LNK1104: 无法打开文件“./Debug/.obj” D:\xrcvc6\dynamic\LINK dynamic
错误 114 error LNK1104: 无法打开文件“./Debug/.obj” D:\xrcvc6\LINK xrc
release版报错:
错误 112 error LNK1181: 无法打开输入文件“./Release/.obj” D:\xrcvc6\dynamic\LINK dynamic
错误 113 error LNK1181: 无法打开输入文件“./Release/.obj” D:\xrcvc6\LINK xrc

查不到解决办法和原因,大佬遇到过这个问题吗?
mmcanyu 2021-02-01
  • 打赏
  • 举报
回复
C语言大全,C++primer,最后一章都有写一个解析器。如果要成品,可以参考angelscript,纯c++脚本。
bluesen 2021-02-01
  • 打赏
  • 举报
回复
看看编译原理
cky77 2021-02-01
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
貌似是从VC6转的? 可以在不同的目录下建一个同名项目,然后把源.h .cpp .rc 文件复制过去,代码用原来的,项目配置用新的

嗯。看懂这个解释器的功能了。主要实现的是把文本里的字符串转成程序里的代码。
只是我自己的实际应用是需要在一个listcontrol上实现流程控制。
比如一个list每行有ID。然后根据流程控制关键字实现for,while、switch、if之类的功能。
请问该怎么实现呢?自己写字符串解析吗还是有可参考的?尤其是多层嵌套时候break,continue还要自己记录跳到哪里..感觉有点麻烦
zgl7903 2021-02-01
  • 打赏
  • 举报
回复
貌似是从VC6转的? 可以在不同的目录下建一个同名项目,然后把源.h .cpp .rc 文件复制过去,代码用原来的,项目配置用新的
zgl7903 2021-01-31
  • 打赏
  • 举报
回复

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧