Oberon space

General Category => Общий раздел => Тема начата: Madzi от Сентябрь 03, 2013, 08:54:21 pm

Название: Представление программы
Отправлено: Madzi от Сентябрь 03, 2013, 08:54:21 pm
Рассмотрим представление программы в виде некоторой структуры.
Название: Re: Представление программы
Отправлено: Madzi от Сентябрь 03, 2013, 09:00:47 pm
Продолжение (глюкнул браузер и ушло неполное письмо)...

При парсинге программы (для последующей кодогенерации) нужно хранить распаренную структуру (AST). Хорошо бы договориться по поводу формата представления, чтобы можно было легко взаимозаменять генераторы/парсеры.
В данный момент я это вижу так:
{
    objId: 'module',
    name: 'noname',
    description: 'some comment for module',
    imports: [],
    consts: [],
    types: [],
    vars: [],
    procs: [],
    code: []
},
{
    objId: 'procedure',
    name: 'someProc',
    description: 'some comment for procedure',
    params: [],
    result: {},
    consts: [],
    vars: [],
    procs: [],
    code: []
}
Название: Re: Представление программы
Отправлено: Valery Solovey от Сентябрь 03, 2013, 10:02:31 pm
Речь, ведь, об oberonjs, да?
Название: Re: Представление программы
Отправлено: vlad от Сентябрь 03, 2013, 11:23:50 pm
Рассмотрим представление программы в виде некоторой структуры.

Мне кажется, что тот, кто сделает парсер/генератор постит сюда получившийся формат де-факто. Его можно пообсуждать и очевидные ляпы фикснуть. Так будет более предметно.
Название: Re: Представление программы
Отправлено: Geniepro от Сентябрь 04, 2013, 12:35:56 pm
При парсинге программы (для последующей кодогенерации) нужно хранить распаренную структуру (AST).

А какое именно AST имеется в виду? Синтаксическое дерево (с возможными ошибками типизации, видимости и тд) или же семантическое?
Название: Re: Представление программы
Отправлено: vlad от Сентябрь 04, 2013, 05:14:23 pm
А какое именно AST имеется в виду? Синтаксическое дерево (с возможными ошибками типизации, видимости и тд) или же семантическое?

Синтаксическое для оберона - это слишком просто :) Больший смысл имеет что-то готовое для непосредственной генерации кода.
Название: Re: Представление программы
Отправлено: valexey_u от Сентябрь 04, 2013, 05:24:29 pm
У меня немного другая мысль (эту мысль я высиживаю давно и применительно не только к Оберону), мысль что в стандартной либе должена быть возможность доступка к синтаксическому и семантическому анализатору языка. То есть чтобы на том же Обероне можно было строить языковые тулзы которые понимают язык в точности также как компилятор. Частным случаем таковой тулзы (то есть это можно будет написать на Обероне же) - генерация файла внешнего представления синтаксического дерева и семантики полученной штуки.

По сути это набор биндингов к компилятору. Но для этого в компилятор нужно будет внести ряд изменений. И это не прямо сейчас.