相关疑难解决方法(0)

学习编写一个编译器

首选语言:C/C++,Java和Ruby.

我正在寻找一些有用的书籍/教程,如何编写自己的编译器只是为了教育目的.我最熟悉C/C++,Java和Ruby,所以我更喜欢涉及这三者之一的资源,但任何好的资源都是可以接受的.

language-agnostic compiler-construction

699
推荐指数
29
解决办法
29万
查看次数

创建我自己的编程语言

可能的重复:
在C/C++中实现解释器所需的引用
如何创建语言这些天?
学习编写一个编译器

我知道一些c ++,非常擅长php,亲在css html,还可以在javascript.所以我在考虑如何创建c ++我的意思是计算机如何理解代码的含义?它怎么读...所以我可以创建自己的语言,怎么样?

c++ compiler-construction interpreter programming-languages

37
推荐指数
5
解决办法
1万
查看次数

在C/C++中实现解释器所需的参考

我发现自己依附于一个项目,将一个解释器整合到一个现有的应用程序中.要解释的语言是Lisp的衍生物,具有特定于应用程序的内置.各个"程序"将在应用程序中以批处理方式运行.

我很惊讶多年来我编写了几个编译器和几个数据语言翻译器/解析器,但我以前从未真正编写过翻译器.原型很远,用C++实现为语法树walker.我可能会影响原型之外的架构,但不能影响实现语言(C++).所以,约束:

  • 实现将在C++中
  • 解析可能会用yacc/bison语法处理(现在是)
  • 像NekoVM和LLVM这样的完整虚拟机/解释器生态系统的建议可能对这个项目不实用.自包含更好,即使这听起来像NIH.

我真正想要的是阅读有关实施口译员基础知识的材料.我做了一些浏览SO,另一个名为Lambda the Ultimate的网站,虽然他们更倾向于编程语言理论.

到目前为止我收集的一些花絮:

  • Lisp in Small Pieces,作者:Christian Queinnec.推荐它的人说它"从简单的解释器到更高级的技术并完成呈现字节码和'Scheme to C'编译器."

  • NekoVM.正如我上面提到的,我怀疑我们是否可以合并整个VM框架来支持这个项目.

  • 计算机程序的结构与解释.最初我建议这可能是矫枉过正,但是通过一个健康的块,我同意@JBF.信息量大,思维扩张.

  • 关于保罗格雷厄姆的Lisp.我已经读过这篇文章,虽然它是对Lisp原理的一个信息性介绍,但还不足以快速开始构建一个解释器.

  • 鹦鹉实施.这看起来很有趣.不确定它会为我提供基本面.

  • 来自Scratch的计划.Peter Michaux正在攻击Scheme的各种实现,从用C编写的快速脏方案解释器(用作后续项目中的引导程序)到编译的Scheme代码.到目前为止非常有趣.

  • 语言实现模式:创建自己的特定域的和通用编程语言,在关于创建解释语言的书籍的注释主题中推荐.这本书包含两章专门介绍构建解释器的实践,所以我将它添加到我的阅读队列中.

  • New(and old,即1979):由PJ Brown 编写交互式编译器和解释器.这已经绝版了,但是提供与基本解释器的实现相关的各种任务的概述很有趣.我已经看到这个混合评论,但因为它便宜(我订购时使用的价格约为3.50美元)我会给它一个旋转.

那怎么样?是否有一本很好的书,用手拿新手,并展示了如何在C/C++中为类似Lisp的语言构建一个解释器?您是否喜欢语法树步行器或字节码解释器?

回答@JBF:

  • 当前的原型是一个解释器,当我们接受任意代码文件的路径并在我们的应用程序环境中执行它时,它对我有意义.内置函数用于影响我们的内存数据表示.

  • 它不应该是非常缓慢.目前的树木行走者似乎可以接受.

  • 该语言基于 Lisp,但不是Lisp,因此不需要符合标准.

  • 如上所述,我们不太可能允许添加完整的外部VM /解释器项目来解决此问题.

对于其他海报,我也会检查你的引文.谢谢,全部!

c++ lisp interpreter

36
推荐指数
3
解决办法
8224
查看次数

构建一个简单的解释器

我正在开始一个项目,我需要实现一个轻量级的解释器.解释器用于执行简单的科学算法.此解释器将使用的编程语言应该很简单,因为它针对的是非软件开发人员(例如,数学家).

解释器应该支持基本的编程语言功能:

  • 实数,变量,多维数组
  • 二进制(+, - ,*,/,%)和布尔(==,!=,<,>,<=,> =)操作
  • 循环(for,while),条件表达式(if)
  • 功能

MathWorks MatLab是我前进的一个很好的例子,更简单.解释器将用作演示算法的环境; 简单的算法,如查找数据集/数组的平均值,或稍微复杂的算法,如高斯消元法RSA.

我在这个主题上找到的最佳/最实用的资源是Ron Ayoub在Code Project上的条目(使用解释器模式解析代数表达式) - 这是我问题的缩小版本的完美示例.

紫龙书似乎太多了,什么更实用?

解释器将使用C#实现为.NET库.但是,欢迎任何平台的资源,因为这个问题的设计架构部分是最具挑战性的.

有实用资源吗?

(请避免"这不是微不足道的"或"为什么重新发明轮子"的回应)

c# architecture compiler-construction programming-languages

9
推荐指数
1
解决办法
6767
查看次数