Ответы пользователя по тегу Системное программирование
  • Компиляторы компиляторов с модульным описанием языка?

    palexisru
    @palexisru Автор вопроса
    Спасибо за уточнение.
    У меня «в желании» самораскручивающийся компилятор с переведенным на него же компилятором компиляторов.

    При этом основным видом является императивный язык (близкий к C# и Java), но в таком же синтаксисе предполагается функциональная часть. Захват/освобождение памяти — неявные, без указателей. Если LL позволит обработку преффиксного декремента/инкремента, то и его хватит.

    Однако, когда экспериментировал с переносом слов в русском языке — выявил, что поиск слогов лучше идет справа налево с выбором максимальной цепочки групп согласных из списка. Возможно, LR более естественен для русского языка.

    Так же учил сына учить стихи: Последняя строчка. Предпоследняя и последняя.Предпрепоследняя, предпоследняя и последняя…

    Посмотрел на список алгоритмов, используемый в компиляторах и в функциональном программировани (Филд, П. Харрисон Функциональное программирование: Пер. с англ. — М.: Мир, 1993) — они подозрительно совпадают. Возможно, я не прав, но проверить на соответствие стоит.

    F# в чистом виде трогать не хочется, разве что понадобится для промежуточных версий.

    Возмножно, получится компилятор компиляторов сделать с помощью только самого языка программирования (с другим по сравнению lex+yacc) разделением, без выделения BNF в отдельные файлы (чем можно обеспечить и модульность описания)

    Понимаю, что звучит хуже самоката, но основная идея — проверить описательную полноту туннельного моделирования в применении к языкам программирования. Возможно, удастся выбрать подмножество оберточных классов, достаточное для учебных языков, которое будет одинаково плохо работать и на .NET, и на JVM.
    Из опыта:
    1991г. — разработка на C утилиты, которая выбирала из bat команды управления меню, и строила меню на экране с возвратом выбора через errorlevel
    1992 г. — разработка файла описания поля ввода на Clipper — с генерацией промежуточного файла — для ускорения считывания в память
    1992г. — изготовление на C из калькулятора Страуструпа генератора расчетных работ (без массивов) с XBase-подобным языком. Метод рекурсивного спуска.
    1993г. — библиотеки на C для использования в Clipper

    Далее — в основном не законченные разработки в направлении системы:
    библиотека наследования классов в Clipper 5
    мастера для Delphi
    сквозная система на метаописании БД для Clipper, FoxPro 2, Delphi, PHP
    описание для транслятора COBOL-подобного языка с хранением таблиц описания BNF, ключевых слов и переменных в файлах DBase

    Для меня таблицы переходов конечных автоматов — так и просятся в реляционные БД. Но на СУБД завязываться не хочу — видимо буду делать с файлами данных или XML, или HTML. Зато, если заработает — какой простор для оптимизации!

    Спасибо. С уважением, Алексей.
    Ответ написан