Я собираюсь не согласиться с общепринятым мнением об этом, потому что большинство общепринятых мнений делает неписаные предположения о ваших целях, таких как законченный языковой дизайн и необходимость в предельной эффективности.Исходя из вашего вопроса, я предполагаю следующие цели:
- научиться писать свой собственный язык
- поиграть с вашим языком, пока он не будет выглядеть элегантно
- попытаться испустить кодна другой язык или байт-код для фактического выполнения.
Вы хотите создать хакерскую программу и парсер рекурсивного спуска.
Вот то, что вы, возможно, захотите построить для жгута проводов, используя только текстовый процессор.
- Измените фрагмент кода (теперь «В 0700 УСТАНОВЛЕНО ПОЛУЧАЕТСЯ НА ПОСЕЛКЕ НА ПОЛНОМ»)
- Скомпилируйте фрагмент
- Измените файл кода (теперь "tests.l")
- Скомпилируйте из файла
- Переключите вывод Lexer (теперь включен)
- Toggle Emitter output (теперь ON)
Toggle Run на домашнем оборудовании (теперь OFF)
Ваша команда, сир?
Возможно, вы захотите написать свой код на Python или другом языке сценариев.Вы оптимизируете свою скорость игры, а не исполнения.Парсер рекурсивного спуска может выглядеть так:
def cmd_at():
if next_token.type == cTIME:
num = next_num()
emit("events.setAlarm(events.DAILY, converttime(" + time[0:1] + ", "
+ time[2:] + ", func_" + num + ");")
match_token(cTIME)
match_token(LOCATION)
...
Поэтому вам нужно написать:
- Небольшое меню для взлома.
- Некоторые лексические процедуры, чтобы вернутьсяразличные токены для чисел, зарезервированных слов и т. п.
- Связка логики для того, что ваш язык
Этот подход направлен на ускорение цикла взлома языка.Когда вы закончите этот подход, вы достигнете ЗУБР, испытательных упряжек и т. Д.
Создание собственного языка может быть прекрасным путешествием!Ожидайте учиться.Не надейтесь разбогатеть.