TRS-80 Color BASIC come fonte d'ispirazione per un nuovo linguaggio di programmazione [chiuso]

5

Per un po 'di tempo ho voluto creare il mio linguaggio di programmazione.

Ho 17 anni e l'unica lingua che conosco è Color BASIC . So che, rispetto alle lingue complicate di oggi, è piuttosto debole.

Ma mi stavo chiedendo se sarebbe stato difficile creare un linguaggio che fosse un po 'come il colore BASIC / BASIC e come potrei avviarlo?

Che cosa devo fare o cosa devo fare per imparare come creare il mio linguaggio di programmazione?

    
posta landon 13.12.2011 - 03:36
fonte

5 risposte

6

L'implementazione di un linguaggio di programmazione inizia in genere trasformando il codice sorgente nei passaggi:

  • Analisi lessicale: suddivide il testo di input in token. Questo riguarda lo spazio bianco e i commenti. Ad esempio:

    a := 1 + 2 * 3 -- comment
    

    potrebbe essere trasformato in:

    identifier a
    operator :=
    number 1
    operator +
    number 2
    operator *
    number 3
    

    Quanto sopra è pseudocodice che rappresenta un elenco di valori, in cui ogni valore è un token.

  • Analisi: crea una struttura che rappresenta il codice sorgente:

    assignment:
        lvalue:
            variable a
        rvalue:
            add:
                number 1
                multiply:
                    number 2
                    number 3
    

    L'analisi determina cose come l'inizio e la fine delle istruzioni e l'ordine delle operazioni.

Dopo di ciò potrebbero esserci ulteriori passaggi, a seconda della complessità della lingua e della qualità dell'implementazione.

Infine, l'albero risultante viene interpretato o compilato.

  • Interpretato : il programma viene eseguito direttamente. Di solito è più facile da implementare.

  • Compiled : il programma viene convertito in uno dei seguenti:

    • Codice macchina, quindi la CPU può eseguirlo direttamente.

    • Bytecode , quindi può essere eseguito da una macchina virtuale.

    • Un altro linguaggio di programmazione. Ad esempio, alcune implementazioni del linguaggio di programmazione compilano in C, quindi richiamano un compilatore C per produrre codice macchina.

Questa è una panoramica approssimativa. Come puoi vedere, l'implementazione di un linguaggio di programmazione è piuttosto coinvolta. Per evitare di sentirsi sopraffatti, inizia con l'implementazione di un set di funzionalità molto ridotto. Non iniziare scrivendo un lexer o un parser che supporti tutta la tua lingua; ti brucerai prima di vedere qualcosa che funziona. La chiave è ottenere qualcosa di funzionante . Creerà un strong feedback: aggiungere nuove funzionalità sarà divertente perché potrai vederle funzionare subito.

Non consiglio di scrivere subito un interprete per BASIC. Ecco alcuni punti di partenza:

  • Implementa un calcolatore che supporta l'ordine delle operazioni. Esempio:

    > 1 + (2 + 3) * (4 + 5)
    46
    
  • Implementa un generatore di frasi casuali, utilizzando un modello simile a questo:

    <weapons>
    a snake
    many snakes
    a gun
    a rocket launcher
    a thick board and something sharp
    
    <verb>
    kill
    destroy
    dismember
    impale
    
    <sentence>
    I will <verb> you with <weapons>.
    

    Questo è un bell'esempio di lingua specifica per il dominio .

  • Scopri il linguaggio di programmazione C. Ti darà una migliore comprensione di come funzionano i computer. All'inizio C sembrerà meno conveniente (ad esempio non puoi semplicemente prendere due stringhe e concatenarle, devi prima allocare un buffer abbastanza grande per entrambe le stringhe), ma scoprirai che fornisce metodi migliori per strutturare i dati di te avuto in BASIC.

risposta data 13.12.2011 - 04:50
fonte
2

Rallenta. Questo è un progetto importante, e non sei neanche lontanamente pronto per questo. Non sto cercando di metterti giù, solo per farti risparmiare un sacco di tempo.

Impara diverse altre lingue e assicurati che C sia uno di questi. Impara l'assemblaggio (magari inizia con un semplice set di istruzioni come ARM). Scopri come funzionano i compilatori. Scrivi alcuni programmi che effettivamente fanno cose utili per le persone. A quel punto, avrai una buona base per tornare a questo piano, se lo vuoi ancora.

    
risposta data 13.12.2011 - 07:14
fonte
1

Ho trovato questo libro Game Scripting Mastery un ottimo libro. Non è un libro molto conosciuto, ma va dall'implementazione di un linguaggio di scripting super basic fino ad un linguaggio di scripting compilato personalizzato. È anche facile da seguire e tutti gli esempi sono relativi ai giochi. L'unico problema è che è in C ++, ma tutte le basi sono spiegate molto bene.

Puoi trovare una copia usata a buon mercato in Amazon o altrove, assicurati di averne una copia che includa il CD.

    
risposta data 13.12.2011 - 04:13
fonte
0

Ricorda che Bill Gates ha iniziato a scrivere un interprete Tiny BASIC per ALTAIR.

Ci sono lingue migliori in circolazione, ma puoi facilmente scrivere un interprete per una tua lingua piccola ed è un'esperienza divertente e piacevole.

Inizia con qualsiasi lingua tu abbia già. Probabilmente vuoi mantenerlo molto semplice, come per gli antipasti solo avere variabili numeriche e mantenere i nomi delle variabili su singoli caratteri come A, I o X. Puoi fare array più tardi.

Per le espressioni, come (F-32) * 5/9 un parser ricorsivo-discendente è facile da scrivere e pratica eccellente. Non è necessario creare un albero di analisi: è sufficiente calcolare i risultati mentre si analizza.

Dimentica funzioni / subroutine. Puoi farlo dopo. Per la struttura di controllo, se si desidera essere davvero minimalista, è possibile attenersi a IF e GOTO. Puoi fare le cose più strutturate quando diventi più sicuro.

Quando ottieni un risultato, puoi elaborarlo in qualsiasi direzione desideri.

Buon divertimento

    
risposta data 13.12.2011 - 04:36
fonte
0

Ti consiglio di imparare Python e non provare a scrivere un compilatore finché il tuo set di abilità include C e C ++.

Python è un linguaggio moderno, facile da imparare, e se puoi fare BASIC puoi fare PYTHON. È facile.

    
risposta data 21.02.2012 - 22:04
fonte

Leggi altre domande sui tag