Разработка лексера, парсера и AST для языка на осн

Гость19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
22.09.2006

Описание проблемы:

Мы разрабатываем IDE для языка, основанного на ECMAScript 4 Proposal (http://www.mozilla.org/js/language/es4/index.html). Язык имеет синтаксис, схожий с языками JavaScript, C#, Java, и для обеспечения связности файлов исходного кода использует конструкции, аналогичные import и using в перечисленных выше языках.

Разработка IDE ведётся на платформе .NET 2.0 с использованием языка C# 2.0

Для реализации возможности intellisence в разрабатываемой нами IDE необходим парсинг исходных файлов. Исходя из проведённого предварительного анализа проблемы мы считаем, что ANTLR (www.antlr.org) оптимален для решения этой проблемы, однако мы готовы рассмотреть альтернативные варианты решения проблемы.

Для решения описанной проблемы мы ищем разработчика с опытом работы с ANTLR либо подобным / аналогичным инструментарием. Потенциальный исполнитель данной задачи должен предоставить нам обзорную информацию о своём опыте и предыдущих проектах в данной области. Разработчики без опыта работы в данной области не рассматриваются в качестве кандидатов.

Стартовая информация и материалы, которые мы предоставим разрабочику:

-ANTLR (v2) grammar file для языка разрабатываемой нами IDE.

-Набор файлов исходного кода на языке разрабатываемой IDE, который будет использоваться для проверки корректности работы парсера.

Требования к поставке:

- Лексер, парсер и AST (Abstract Syntax Tree), сгенерированные на C#. Парсинг ошибок должен возвращать информацию о позиции (строка + позиция и / или смещение относительно начала файла)

- 2 демо приложения, написанные на C# (предпочтительнее, C# 2.0), демонстрирующий использование лексера, парсера и AST, и дающее представление о методе их использования.

При написании демо приложений необязательно придерживаться промышленного подхода к написании приложений и разработке – код и UI могут быть максимально примитивны.

Требования к демо 1:

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

- Варианты должны отображаться в простом text box – никакого сложного комплексного UI не требуется.

Требования к демо 2:

- Отображение AST в элементе управления TreeView

- При выборе узла в TreeView должна отображаться информация о соответствующем элементе.

- Демонстрация получения информации от AST на основании координат курсора – какой именно language token находится в данной позиции, его тип, имя файла, в котором описан этот тип, и т.п. , т.е. информация, необходимая для реализации таких функции IDE как method tips, go to definition и т.п.

Необходимо, чтобы поиск осуществлялся не только в текущем файле, а по всему проекту, включая импорты (импорты в нашем случае – могут рассматриваться как части проекта, так как подключаются в исходниках)

- При передаче комплекта поставки крайне желательно использование Live Meetnig Session для непосредственного обсуждения и комментирования результатов работы.