Автор Тема: Представление программы  (Прочитано 4323 раз)

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Представление программы
« : Сентябрь 03, 2013, 08:54:21 pm »
Рассмотрим представление программы в виде некоторой структуры.

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Представление программы
« Ответ #1 : Сентябрь 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: []
}

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Представление программы
« Ответ #2 : Сентябрь 03, 2013, 10:02:31 pm »
Речь, ведь, об oberonjs, да?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Представление программы
« Ответ #3 : Сентябрь 03, 2013, 11:23:50 pm »
Рассмотрим представление программы в виде некоторой структуры.

Мне кажется, что тот, кто сделает парсер/генератор постит сюда получившийся формат де-факто. Его можно пообсуждать и очевидные ляпы фикснуть. Так будет более предметно.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Представление программы
« Ответ #4 : Сентябрь 04, 2013, 12:35:56 pm »
При парсинге программы (для последующей кодогенерации) нужно хранить распаренную структуру (AST).

А какое именно AST имеется в виду? Синтаксическое дерево (с возможными ошибками типизации, видимости и тд) или же семантическое?
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Представление программы
« Ответ #5 : Сентябрь 04, 2013, 05:14:23 pm »
А какое именно AST имеется в виду? Синтаксическое дерево (с возможными ошибками типизации, видимости и тд) или же семантическое?

Синтаксическое для оберона - это слишком просто :) Больший смысл имеет что-то готовое для непосредственной генерации кода.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Представление программы
« Ответ #6 : Сентябрь 04, 2013, 05:24:29 pm »
У меня немного другая мысль (эту мысль я высиживаю давно и применительно не только к Оберону), мысль что в стандартной либе должена быть возможность доступка к синтаксическому и семантическому анализатору языка. То есть чтобы на том же Обероне можно было строить языковые тулзы которые понимают язык в точности также как компилятор. Частным случаем таковой тулзы (то есть это можно будет написать на Обероне же) - генерация файла внешнего представления синтаксического дерева и семантики полученной штуки.

По сути это набор биндингов к компилятору. Но для этого в компилятор нужно будет внести ряд изменений. И это не прямо сейчас.
Y = λf.(λx.f (x x)) (λx.f (x x))