编译器所需的概念

编译器所需的概念

本文介绍了构建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?

感谢

推荐答案

,编译器和调试器是三个不同的野兽。

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:



  • - 可编程信息而不是互动

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

07-22 07:17