ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » система типов » Множественные исполнители


Множественные исполнители

Сообщений 1 страница 3 из 3

1

В принципе, исполнитель может содержать переменные.
Исполнитель описывается между словами

Код:
исп
| ...
кон_исп

у него там внутри алгоритмы, а перед первым алгоритмом вступление, где можно вписать переменные.

A.7 Виды величин
∙ аргументы (арг) — описываются в заголовке алгоритма
∙ результаты (рез) — описываются в заголовке алгоритма
∙ значения функций (знач) — описываются указанием типа перед именем алгоритма-
функции
∙ локальные — описываются в теле алгоритма, между нач и кон
∙ общие — описываются после строки исп исполнителя, до первой строки алг

Ну так вот. Если в языке Кумирли при помощи исполнителя "Память" выделить память и научить Кастовщика помещать исполнителя в переменную, то это выведет язык Кумирли на уровень раннего C++ (упрощённый, конечно, никакого наследования и виртуальности).

Осталось научиться определять размеры исполнителя (это можно сделать как алгоритм где-нибудь, например у исполнителя "память"), и доработать систему типов (ну там, таблицы функций и синтаксис вызовов).

Отредактировано Лис (2017-03-29 18:11:06)

0

2

1. Сначала нужно описать Кумир как-нибудь. Что-то я не видел его .ebnf-описаний
2. Затем нужно добавить в язык поддержку пользовательских типов, чтобы можно было декларировать/создавать переменные этих типов
3. Затем реализуем вывод типов и ключевое слово "пер"
4. Затем создаём синтаксисы для анонимных типов и анонимных функций (англы делали так же, последовательно)

Программа для синтаксического анализа на втором этапе выглядела бы тогда как-то так:

Код:
использовать Память
использовать Кастовщик
использовать Синтаксис
использовать Языковой конвейер
использовать Дерево
использовать Ветвь
использовать Лист

алг
| ...
    октеты о := Память.Выделить ( Кастовщик.размер ( "Синтаксис" ) )
    Синтаксис c := Кастовщик.Превратить ( о , "Синтаксис" )
    Языковой конвейер к := c.считать грамматику ( "имя файла 1" )
    Дерево д := к.Построить дерево по тексту ( "имя файла 2" )
    Память.Освободить ( о )
| ...
кон

Отредактировано Лис (2017-03-28 15:17:15)

0

3

Интересно то, что в примерах работы с файлами появляется тип "файл" (не в примере, а в репозитории). Умеют, значит, типы добавлять, когда захотят?

Код:
использовать Файлы П
алг 
нач
  цел ф
  лит имя, строка
  вывод "Имя файла: "
  ввод имя
  ф := открыть на запись (имя)
  вывод "Вводите строки ниже:", нс
  нц пока да
    ввод строка
    если строка = "!" то
      закрыть(ф)
      выход
    все
    Фвывод ф, строка
    Фвывод ф, нс
  кц
кон

"Указанный пользователем файл открывается на запись. Далее в цикле запрашивается ввод строк, которые записываются в открытый файл. Если вводится строка, состоящая из одного символа "!", то файл закрывается и происходит выход из цикла. Это единственный способ выйти из цикла, так как цикл задан как бесконечный."

"Команда "Фвывод", также как и команда "вывод", не выводит символа новой строки. Поэтому, чтобы в файле введенные данные были разделены на строки, в программе две команды "Фвывод". Одна выводит в файл строку, другая - задает новую строку."

http://inf1.info/kumir/write-file

Отредактировано Лис (2017-03-28 15:48:14)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » система типов » Множественные исполнители