Редактор кода с автозаполнением - PullRequest
5 голосов
/ 24 ноября 2008

Мне нужно создать редактор кода для моего собственного простого языка:

className.MethodName (параметрName = 2, ...)

Я создал соответствующий грамматический и автогенераторный анализатор с помощью инструмента ANTLR. Теперь я хотел бы иметь автозаполнение для классов, методов, переменных и имен параметров. Этот список должен быть зависимым от контекста, например для класса." он должен отображать методы и для "class.Method (" - параметры. Я собирался проанализировать текст и отобразить список в зависимости от того, в каком узле находится курсор. Проблема в том, что для неполного кода, такого как "aaa.bbb (" парсер выдает ошибку вместо синтаксического дерева. Есть идеи, как решить эту проблему? Может быть, я нахожусь на неправильном пути, и я не должен анализировать код для отображения автозаполнения?

Ответы [ 2 ]

1 голос
/ 06 ноября 2009

Вам нужно проанализировать хотя бы некоторые части кода, чтобы узнать, что отображать.

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

Последнее предложение может быть более простым, но имеет тот недостаток, что кэш может быть устаревшим в тот момент, когда вам нужно завершить работу (т. Е. Вы можете создать новый класс в файле, все дополнения на его основе). класс не будет доступен, пока в файле нет ошибок).

Sidenode: видя, что вы выполняете синтаксический анализ, вас могут заинтересовать грамматики синтаксического анализа выражений , однако, они не совсем помогают вам в решении этой проблемы.

0 голосов
/ 24 ноября 2008

как насчет TextMate на Mac или его клонов на других платформах? Я только начал с этим, но, похоже, у него очень открытый набор инструментов для плагинов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...