首选语言:C/C++,Java和Ruby.
我正在寻找一些有用的书籍/教程,如何编写自己的编译器只是为了教育目的.我最熟悉C/C++,Java和Ruby,所以我更喜欢涉及这三者之一的资源,但任何好的资源都是可以接受的.
直观地说,似乎语言的编译器Foo本身不能用Foo编写.更具体地说,语言的第一个编译器Foo不能用Foo编写,但可以编写任何后续的编译器Foo.
但这是真的吗?我对一种语言的阅读非常模糊,这种语言的第一个编译器是用"本身"编写的.这是可能的,如果是这样的话怎么样?
我听说过引导一种语言的想法,就是为这种语言编写一个编译器/解释器.我想知道如何实现这一点,并且看了一下,看到有人说它只能通过其中任何一个来完成
对我来说,这些似乎都不是真正引导语言,因为它们都需要外部支持.有没有办法用自己的语言编写编译器?
我一直想用自己的语言编写一段时间(表面上是为了学习经验),因此需要在构建解析器,解释器和编译器时相对基础.所以:
编辑:我不是在寻找编译器编译器/解析器编译器,如Lex,Yacc和Bison ......
compiler-construction parsing interpreter compiler-theory language-theory
您可以为想要编写编程或脚本语言的人提供哪些提示?我并不担心如何编程或设计编译器,而是如何使用工具和代码生成器快速开发编译器.
上次我尝试用c ++编写它,状态和语法几乎和写实际逻辑一样长.我知道以下工具会有所帮助.
我以为我可以生成c ++代码并使用gcc编译.使用上面的工具,您估计编写程序或脚本语言需要多长时间?
早在学习编写编译器时就已反复询问过这个问题的变化.以下是该主题的SO资源的不完整列表.
compiler-construction interpreter programming-languages scripting-language
最近,我在寻找有关今年夏天我可以使用C构建的想法,我发现了这篇文章:学习C的有趣项目?
实现编程语言.这不一定非常难 - 我做了一个不能命名的语言 - 但它会迫使你学习C语言的很多重要部分.如果你不想写一个词法分析器和/或解析器你自己,你可以使用lex/flex和yacc/bison,但是如果你打算这样做,你可能想要从一个更小的项目开始.
我对实现编程语言答案很有兴趣,我想知道如何开始这个?我已经阅读了整本K&R书,我也完成了一些练习.如果重要的话,我在C++和Java方面也有一些经验.有小费吗?谢谢!
这个问题与此有关
在过去的几年里,我一直在思考我喜欢的东西,而不喜欢我使用的语言.我一直想写自己的语言,但从未这样做过.
我也拥有乐高RCX和NXT,但大多数时候我从来没有让我的机器人做任何事情,因为他们的视觉编程环境比较严格.
我想我会为NXT设计我的编程语言,因为已经有很多通用语言,NXT给了我一套具体的问题和目标,希望能有一个很好的沙箱.
怎么办?我从哪里开始?我需要知道什么?
如果可能的话,我会用Python或Clojure编写编译器.有一个用于NXT的SDK,但也有汇编语言.什么是最好/最简单的路线?
Lego NXT有一个小屏幕,USB和蓝牙,它有4个数字和模拟传感器端口,3个输出端口和2个ARM处理器,一个主处理器和一个协处理器.http://mindstormsnxt.blogspot.com/2006/08/whats-inside-nxt-brick.html
编程NXT将涉及处理数据和事件,所以某种单声道数据流/反应式似乎是合适的.它也应该很好地处理并行任务,所以我认为功能.我目前正在考虑基于堆栈.
在我的脑海中,我已经尝试统一这些概念并考虑示例代码.我正在考虑树而不是堆栈,其中功能分支可以并行运行.一个例子:
# implicit main stack
5 5 +
# 10
# quoted branch or list
[1 -]
# 10 [1 -]
# eval list and recur until false
loop
# [9 8 7 6 5 4 3 2 1 0]
# define stack as a function
[1 = [1 8 motor] [1 0 motor] if] fn
# [9 8 7 6 5 …Run Code Online (Sandbox Code Playgroud) 为了编写更好的代码,深入了解编译器的作用是否值得?
多少就足够了?我不是一个擦洗器,但我在想,了解编译器的运行方式会让我成为更好的程序员.我错了吗?
如果是这样,您会推荐哪些资源?
我正在开始一个项目,我需要实现一个轻量级的解释器.解释器用于执行简单的科学算法.此解释器将使用的编程语言应该很简单,因为它针对的是非软件开发人员(例如,数学家).
解释器应该支持基本的编程语言功能:
MathWorks MatLab是我前进的一个很好的例子,更简单.解释器将用作演示算法的环境; 简单的算法,如查找数据集/数组的平均值,或稍微复杂的算法,如高斯消元法或RSA.
我在这个主题上找到的最佳/最实用的资源是Ron Ayoub在Code Project上的条目(使用解释器模式解析代数表达式) - 这是我问题的缩小版本的完美示例.
紫龙书似乎太多了,什么更实用?
解释器将使用C#实现为.NET库.但是,欢迎任何平台的资源,因为这个问题的设计架构部分是最具挑战性的.
有实用资源吗?
(请避免"这不是微不足道的"或"为什么重新发明轮子"的回应)
在我不断寻求更多编程知识的努力中,我想出了一个尝试编写(至少现在)编译成字节码的简单编程语言的想法.问题是我不知道关于语言设计的第一件事.有没有人对构建解析器的方法以及每种语言应具备的基本功能有什么建议?你会为语言设计推荐什么样的读物?我的拍摄水平有多高?希望能够包含一个功能以允许内联字节码以类似于允许内联汇编程序的gcc的方式是不现实的吗?看到我主要使用C和Java编写代码,这对编译器编写会更好吗?