Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (1)
  • Можно ли написать компилятор в машиный код на языке очень высокого уровня?

    @dzavalishin
    1. Поверьте человеку, который пишет на Си с 1985 года (30 лет, вроде бы?) - НИКОГДА не пишите на Си ничего, если только к вашему виску не приставили пистолет. Исключение одно - ядро ОС. Да и то...

    2. Что угодно можно написать на чём угодно. Вопрос удобства.

    3. Писать компилятор надо на языке с развитыми средствами поддержки жизни проекта. Таких два - Java и C#. Можно (а если Вам это комфортно, то и нужно) использовать функциональные расширения соответствующих платформ. Scala/F#.

    4. На говноязыках серьёзные вещи писать не нужно. Ключевое свойство говноязыка - обсуждение вокруг него о том, как бедные программеры перетрудились явно прописывать руками типы всех переменных. На таких ЯП можно писать затычки и примочки.

    5. Не применяйте генераторы лексических и грамматических анализаторов, пока не научитесь писать компилятор руками. Ключевое слово - парсинг рекурсивным спуском. Это реально просто, если грамматика языка - LR1. Для начала надо взять простой язык. Очень простой.

    6. Базовый компилятор с кодогенерацией для стековой машины нужно уметь писать за два дня. Если вы хотите это уметь.

    7. Бекэнды (реальную кодогенерацию) писать НЕ НУЖНО. Вообще. Вы её хорошо не напишете ни-ко-гда. Проще генерировать на выходе Си и докомпилировать приличным си-компилятором.
    Ответ написан
    Комментировать