2013-03-12 3 views
0

Для образовательных целей я хотел бы создать IDE для PHP-кодирования.Загрузка текстового файла в память и анализ его содержимого

Я сделал вид приложения и добавил OpenFileDialog .. (мой C# знание было полезно, потому что это было легко ... хотя без intelisense!)

Загрузка файла и чтение строк из него в основном то же самое на каждом языке (даже PERL).

Но моя цель - написать самодельный интеллигент. Мне не нужна информация о richtextBox и событиях, которые он генерирует, endline, EOF и т. Д. И т. Д.

Проблема у меня есть, как мне обрабатывать данные? линия для линии?

  • a struct для каждой строки текстового файла?
  • Зацикливание всех структур в связанном списке? ...
  • при обновлении richtextBox?
  • поиска для открытия и закрытия скобки, переменных и т.д., и т.д.

Я думаю магазины Microsoft это тип SQL базы данных в папках приложения проекта. Но как бы вы отслеживали переменные и имитировали их в какой-то форме?

Я хотел бы знать, как эффективно обрабатывать динамический текст.

ответ

1

Не думая об этом раньше, это звучит как интересный вызов.

Лично я считаю, что вам придется реализовать лексический сканер, обозначая весь исходный файл в исходном дереве, причем каждый токен также имеет информацию о нем, сопоставляя токен с линией/символом внутри исходного файла.

Оттуда вы можете увидеть, как далеко вы хотите пойти с ним - когда кто-то нависает над токеном, он может использовать контекст кода вокруг него, чтобы быть более умным в отношении «intellisense», который вы предоставляете.

Наведите указатель мыши на исходное дерево, которое (по мере его создания) должно загружать любую информацию, которую вы хотите отобразить.

Возможно, это перебор, но это звучит весело.

+0

что вы, просмотрев несколько видеороликов на youtube о «лексическом сканере», это швы, что мне нужно делать. – NaturalDemon

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

В общем, большинстве Иды генерировать дерево разбора из кода, и это то, что они хранят и управляют.

Смежные вопросы