相关疑难解决方法(0)

学习编写一个编译器

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

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

language-agnostic compiler-construction

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

(何时)我应该学习编译器吗?

根据这篇http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html 文章,我绝对应该这样做.

引用温和但坚持不懈的执行摘要:如果你不知道编译器是如何工作的,那么你就不知道计算机是如何工作的.如果你不是100%确定你是否知道编译器是如何工作的,那么你就不知道它们是如何工作的.

我认为这是一篇非常有趣的文章,应用领域非常有用(帮自己一个忙,然后阅读它)但是又一次,我看到成功的高级sw工程师不熟悉编译器,或内部机器这个问题的架构,但确实知道以下列表中每个项目的一两件事:

  • 编程范式(OO,功能,...)
  • 编程语言API(C#,Java ..)和至少2个非常不同的人说!(Java/Haskell)
  • 编程框架(Java,.NET)
  • 一个让您提高工作效率的IDE(Eclipse,VisualStudio,Emacs,......)
  • 编程最佳实践(例如,参见fxcop规则)
  • 编程原理(DRY,高内聚,低耦合,......)
  • 编程方法(TDD, MDE)
  • 设计模式(结构,行为,......)
  • 建筑基础(层,层,过程模型(瀑布,敏捷,...)
  • 测试工具(单元测试,模型测试,......)
  • GUI技术(WPF,Swing)
  • 记录工具(Javadoc,Sandcastle ..)
  • 建模语言(可能是工具)(UML,VisualParadigm,Rational)
  • (毫无疑问,这里忘记了非常重要的东西)

并非所有这些工具都是成为一名优秀程序员所必需的(就像你不需要它时的GUI一样),但大多数都是.编译器在哪里进入,并且它们真的那么重要,因为正如我所提到的,许多程序员似乎在不了解它们的情况下做得很好,特别是,成为一名优秀的程序员可以看到众多知识领域几乎是终身成就: - ),即使编译器非常重要,是不是总有更重要的东西?

或者我今天应该订购'The Unleashed Compilers Unlimited Bible(24H ..)))?

对于那些阅读过该文章并希望立即开始学习的人:

在解析器,解释器和编译器上学习资源

compiler-theory

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

什么是开始编写编程语言的好资源,这不是上下文无关的?

我正在寻找一种有趣的编程语言,但是我所看到的大多数资源都是用于编写无上下文的语言,但我希望编写一种像python一样使用缩进的语言,这对我的理解意味着它可以没有上下文.

python compiler-construction interpreter programming-languages

14
推荐指数
4
解决办法
1923
查看次数

傻瓜的解析器和编译器.从哪儿开始?

这是一个很好的列表,但对于这个领域的完整newb来说,最好的是什么.一个来自更高级别背景的人(VB6,C#,Java,Python) - 不熟悉C或C++.在这个阶段,我对Lex/Yacc的手写解析更感兴趣.

如果我刚刚主修计算机科学而不是心理学,我可能会在大学里上课.那好吧.

compiler-construction parsing

12
推荐指数
1
解决办法
5291
查看次数

编译器如何使用晶格

在我的编译器构建研究生班上,我们已经介绍了格子的概念.三个讲座专门用于格子,到目前为止,它似乎是一个有趣的切线,但困境在于它并没有真正帮助解释编译器如何使用格子来解决具体问题.

我们已经介绍了解析和类型检查.我们即将开始活体分析和注册分配.

注意,我不是在寻找构建编译器的资源.以下链接列表很好地涵盖了.我正在寻找的是关于编译器和格子之间的关系的解释,大多数例子的奖励点.

在解析器,解释器和编译器上学习资源
我们应该知道多少编译器?
学习编写一个编译器

compiler-construction math

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

创建自己的语言

如果我想创建自己的语言有什么工具可以帮助我吗?我听说过yacc,但我想知道如何在语言中实现我想要的功能.

language-design

8
推荐指数
2
解决办法
2973
查看次数

自学编译课程/好的入门编译器书籍?

有没有人知道包含典型编译器课程的在线课程/大学讲座?我有计算理论但不幸的是我的学校没有提供编译器构建课程.

我知道那里有讲座; 我希望能为特别好的产品提供建议.

还有新手到现场的书吗?除了龙书之外,至少还有一些东西.初学者水平很好,我知道市场上有很多中级高级文本.

谢谢!

compiler-construction dfa context-free-grammar

8
推荐指数
2
解决办法
5056
查看次数

我将如何实现一个简单的基于堆栈的编程语言

我有兴趣通过实现基于堆栈的编程语言来扩展我对计算机编程的了解.我正在寻找关于从哪里开始的建议,因为我打算让它具有像" pushint 1"这样的函数,它可以将值为1的整数推送到堆栈的顶部,并通过像" L01: jump L01:" 这样的标签来控制流量.

到目前为止,我已经实现了我希望我的语言行为的C#实现(想要链接到它但IDEOne被阻止),但它非常混乱,需要优化.它将输入转换为XML,然后解析它.我的目标是使用较低级别的语言(可能是C/C++),但我的问题是实现一个可以容纳各种数据类型并且没有固定大小的堆栈.

最后我还想实现数组和函数.另外,我认为我需要有一个更好的Lexer,我想知道解析树是否适合这种简单的语言.

任何建议/批评都是受欢迎的,请考虑我仍然是编程的新手(我刚刚完成了AP CompSci I).此外,欢迎链接到基于开源堆栈的语言.

这是一个基本的程序,我想尝试解释/编译(在哪里[this is a comment]):

[Hello World!]
pushchar    '\n'
pushstring  "Hello World!"
print
[Count to 5 and then count down!]
pushint     1
setlocal    0
L01:
pushchar    '\n'
getlocal    0
print           [print x + '\n']
getlocal    0
increment
setlocal    0   [x = x + 1]
pushint     5
getlocal    0
lessthan        [x < 5]
iftrue      L01
L02:
pushchar    '\n'
getlocal    0
print           [print x + '\n']
getlocal …
Run Code Online (Sandbox Code Playgroud)

parsing stack-based lexer

8
推荐指数
1
解决办法
4039
查看次数

什么是编译的好资源?

不耐烦的总结:我正在寻找关于为公共语言结构生成代码但不解析的好参考.

我对编程语言很感兴趣,并尝试尽可能多地阅读文献.但是大多数都是从功能和理论的角度来讨论这个话题,我觉得很难理解,更不用说实现这些想法了.

所以问题是; 您建议哪些资源以更加迫切和实用的方式涵盖主题的编程语言实现?

例如,我发现" Lua 5.0的实现 "论文非常有启发性.

请注意,我不是在寻找有关解析或标记的文章.

language-features code-generation compiler-theory

4
推荐指数
1
解决办法
1553
查看次数