Вам знадобляться наступні:
- Причина для створення нової мови
- Філософія
- Семантичне визначення
- Лексичний опис ваших лексем
- Визначення аналізу синтаксису
Чим відрізнятиметься ваша мова? Яка його місія? Це функціонально? Чи орієнтований на об'єкт? Це мета-мова? Які його унікальні особливості? Що це дасть світу, який не існує (або існує потворно)? Як ти хочеш змінити речі? Він складений чи інтерпретований? DSL або мова загального призначення? Це ваша філософія і багато диктує дизайн вашого мови.
Далі попрацюйте над викреслення грубого синтаксису та семантики на папері. Це буде ваше семантичне визначення ... написання підробленого коду - чудовий спосіб розвинути свої думки. Прочитайте "Мова програмування на С", щоб отримати відмінний приклад того, як це робиться. Пограйте з ним.
Потім вам потрібно буде певним чином визначити свої лексеми та синтаксис. Потім програми обробляють їх в автомати, здатні читати в рядках і обробляти синтаксис. Yacc і Bison використовують регулярні вирази та синтаксис стилю BNF для лексичного та синтаксичного аналізу відповідно. Також є інструменти, подібні до Yacc та Bison, для інших мов.
Вам також знадобиться обґрунтування мовної теорії / укладачів, щоб знати, що НЕ робити. Приклади включають неоднозначні граматики, проблеми з генерацією AST та маніпуляцій та загалом, як зробити життя простим для себе. Знання теорії є дуже важливим. Я б подумав, щоб почати наступне:
Компілятори: принципи, методи та інструменти (Книга драконів)
Впровадження сучасних компіляторів у програмі C або сучасна компіляція на Java