Avrai bisogno di quanto segue:
- Un motivo per la creazione di una nuova lingua
-
A Philosophy
-
Una definizione semantica
-
Una descrizione lessicale dei token
- Una definizione di analisi della sintassi
In che modo la tua lingua sarà diversa? Qual è la sua missione? È funzionale? È orientato agli oggetti? È un meta-linguaggio? Quali sono le sue caratteristiche uniche? Cosa darà al mondo che non esiste (o esiste in modo brutto)? Come vuoi cambiare le cose? È compilato o interpretato? Un DSL o linguaggio generico? Questa è la tua filosofia e detta molto sulla progettazione della tua lingua.
Quindi, lavorate sul grattamento della sintassi e della semantica su carta. Questa sarà la tua definizione semantica ... scrivere codice falso è un ottimo modo per sviluppare i tuoi pensieri. Leggi "The C Programming Language" per un eccellente esempio di come è fatto. Gioca con esso.
Dovrai quindi definire i token e la sintassi in qualche modo. I programmi li elaborano quindi in automi in grado di leggere le stringhe ed elaborare la sintassi. Yacc e Bison usano le espressioni regolari e una sintassi in stile BNF rispettivamente per l'analisi lessicale e di sintassi. Ci sono anche strumenti simili a Yacc e Bison in altre lingue.
Avrai anche bisogno di una messa a terra nella teoria del linguaggio / compilatori per sapere cosa NON fare. Gli esempi includono grammatiche ambigue, generazione di AST e problemi di manipolazione e in generale come rendere la vita semplice per te stesso. Conoscere la teoria è molto importante. Prenderò in considerazione l'idea di ottenere quanto segue per iniziare:
Compilatori: principi, tecniche e strumenti (libro del drago)
Implementazione del compilatore moderno in C o Implementazione del compilatore moderno in Java