构建 IDE/编译器所需的概念 [英] Concepts required in building an IDE/compiler

查看:45
本文介绍了构建 IDE/编译器所需的概念的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在制作 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:

  • 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/编译器所需的概念的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆