在制作 IDE(例如 SharpDevelop)或编译器/语言解析器时,我需要了解哪些计算机科学主题?我不希望有完整的深入教程列表,而只是列出有助于我改进的主题列表.
When it comes to making an IDE (e.g. SharpDevelop) or a compiler/language parser, what topics of computer science do I need to know? I don't expect a full list of in depth tutorials but just a list of topics which would benefit me in improving.
我是否认为解析器对语言的语法/语义有一些规则,并根据这些规则验证代码?这似乎是一种简单的方法?
Am I right in thinking a parser has some rules about the syntax/semantics of a language, and validates the code based on these rules? That seems like a simple approach?
谢谢
推荐答案IDE、编译器和调试器是三种不同的野兽.
An IDE, a compiler and a debugger are three different beasts.
以下是我在考虑为模拟语言构建建模工具时发现的一些有趣或鼓舞人心的链接的快速且略微随机的选择,这些链接与我接触到的 IDE 一样接近:
Here's a quick and slightly random selection of some links that I've found interesting or inspiring when thinking about building modeling tools for simulation languages, which is as close as I get to IDE:
- 高性能 GUI
- Magic Ink - 可编程信息而非交互
- Edward Tufte - 想象一下,如果您的职业生涯都花在了查看使这一切变得美好的信息上.
- 动态语言的动态 IDE (Bracha 还设计了 Java 的调试镜像接口,IDE 需要的另一件事)
- 信息设计模式 - GUI 的一般示例
- 选项卡式界面的问题(虽然图标在每页代码看起来都一样;也许生成的图标像这里的图标会起作用)
- 开发多模式用户界面的常识性建议 -如果表达代码的最佳方式是挥手致意,或者严厉地与错误交谈,那该怎么办?
- 木偶奇遇记 - 类似于 Bracha 的帖子,关于修补正在运行的框架
- The High Performance GUI
- Magic Ink - programmable information rather than interaction
- Edward Tufte - imagine if your working life was spent looking at information made this beautiful.
- Dynamic IDEs for Dynamic Languages (Bracha also designed Java's debugging mirror interface, another thing an IDE needs)
- Information Design Patterns - general examples of GUIs
- Problems with tabbed interfaces (though icons aren't much use either when each page of code looks the same; maybe generated icons like the ones here would work)
- Common Sense Suggestions for Developing Multimodal User Interfaces - what if the best way to express your code is to wave your hands around, or give a bug a stern talking to.
- The Pinocchio Problem - similar are to Bracha's post, about patching a running framework
这些链接有点偏向于帮助阅读和浏览而不是编写代码的模式,以及用户在使用它们时扩展的系统,而不是作为一个单独的循环;如果您想要一个面向任务的界面或静态插件,那么现有 IDE(例如 Eclipse)的项目就是您可以查看的地方.
There's somewhat of a bias in those links towards patterns to help reading and browsing rather than writing code, and towards systems the user extends while using them rather than as a separate cycle; if you want a task-oriented interface or static plugins, projects for existing IDEs such as Eclipse are the place to look.
更多推荐
构建 IDE/编译器所需的概念
发布评论