0

出于教育目的,我想为 PHP 编码构建一个 IDE。

我制作了一个表单应用程序并添加了OpenFileDialog..(我的 c# 知识很有用,因为它很容易......即使没有智能感知!)

在每种语言(甚至 PERL)中,加载文件并从中读取行基本相同。

但我的目标是编写自制的智能感知。我不需要有关richtextBox 及其生成的事件、endline、EOF 等的信息。

我的问题是,我如何处理数据?一行一行?

  • 每行文本文件的结构?
  • 循环链表中的所有结构?...
  • 同时更新richtextBox?
  • 搜索左括号和右括号、变量等

我认为微软在应用程序项目文件夹中存储了一种 SQL 类型的数据库。但是您将如何跟踪变量并以某种形式模拟它们呢?

我想知道如何在动态文本上有效地处理这个问题。

4

2 回答 2

1

以前从未考虑过这一点,这听起来像是一个有趣的挑战。

就个人而言,我认为您必须实现一个词法扫描器,将整个源文件标记为源树,每个标记还具有有关它的信息,将标记映射到源文件中的行/字符。

从那里你可以看到你想用它走多远 - 当有人将鼠标悬停在一个令牌上时,它可以使用它周围的代码上下文来更智能地了解你提供的“智能感知”。

将鼠标悬停在某些东西上会映射回您的源代码树,(在您构建它时)您将加载您想要显示的任何信息。

也许它是矫枉过正,但它听起来像一个有趣的项目。

于 2013-03-12T20:05:07.097 回答
0

这听起来与这个问题有关: https ://softwareengineering.stackexchange.com/questions/189471/how-do-ide-s-provide-auto-completion-instant-error-checking-and-debugging

该问题的公认答案推荐了这个我觉得非常有趣的链接:

http://msdn.microsoft.com/en-us/magazine/cc163781.aspx

简而言之,大多数 IDE 从代码生成解析树,这就是它们存储和管理的内容。

于 2013-03-12T20:17:31.123 回答