4

Я создаю программируемую часть программного обеспечения. Идея заключалась в том, чтобы позволить конечным пользователям управлять хост-системой через некоторые сценарии. Следовательно, программное обеспечение поставляется с редактором сценариев, для которого я использую RSyntaxTextArea. Здесь все хорошо.Алгоритм Intellisense для языка сценариев

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

Для начала, я начал с этим любительским подходом:.

  1. (точка) символ вызывает весь процесс предложений.
  2. Содержимое сценария (за исключением текущего оператора) равно * eval * uated и из которого я идентифицирую переменные/функции, определенные до сих пор, и их тип. Предложения основаны на этом.

В качестве альтернативы вместо оценки сценария (который является преждевременным), я думаю о построении AST. Правильно ли это подходит? У вас есть предложения/ссылки/алгоритмы и т. Д.? Как обрабатывать случай, когда текущее состояние скрипта не компилируется? Пожалуйста посоветуй.

+0

Почему этот вопрос отмечен Java? – chrylis

+0

Rhino - это Javascript, не так ли? Поэтому вы в основном просите алгоритм автозаполнения для Javascript. –

+0

Вот старый вопрос, обсуждающий intellisense для динамически типизированных языков, которые могут помочь: http://stackoverflow.com/questions/2020096/intellisense-for-dynamic-languages ​​ – gms7777

ответ

0

Предположим, что вы реализуете это на Java (из-за ярлыка java), вы должны взглянуть на JavaCC, он включает в себя возможности управления лексиром, AST и даже генерацию кода (хотя эта последняя часть, возможно, не имеет отношения к вам).

+0

Спасибо. Посмотрите. – chedine

+1

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

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