Какие языковые функции требуются в языке программирования для создания компилятора?
Языки программирования, кажется, проходят несколько этапов. Во-первых, кто-то придумывает новый язык Foo Language. Компилятор / интерпретатор написан на другом языке, обычно C или другом низкоуровневом языке. В какой-то момент FooL взрослеет и растет, и в конце концов кто-то где-то напишет компилятор и / или интерпретатор для FooL в самом FooL.
У меня такой вопрос: каково минимальное подмножество языковых функций, чтобы кто-то мог реализовать этот язык сам по себе?