TRS-80 Color BASIC como inspiração para uma nova linguagem de programação [closed]

5

Há algum tempo, eu quero criar minha própria linguagem de programação.

Tenho 17 anos e a única língua que conheço é Color BASIC . Eu sei que em comparação com as linguagens complicadas de hoje, é bem fraco.

Mas eu estava me perguntando se seria difícil criar uma linguagem que fosse como a cor BASIC / BASIC e como eu começaria?

O que fazer ou o que preciso fazer para aprender a criar minha própria linguagem de programação?

    
por landon 13.12.2011 / 03:36
fonte

5 respostas

6

Uma implementação de linguagem de programação normalmente começa por transformar o código-fonte em passagens:

  • Análise léxica: divida o texto de entrada em tokens. Isso lida com espaços em branco e comentários. Por exemplo:

    a := 1 + 2 * 3 -- comment
    

    pode ser transformado em:

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

    O acima é um pseudocódigo que representa uma lista de valores, onde cada valor é um token.

  • Análise: Crie uma árvore representando o código-fonte:

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

    A análise determina coisas como onde as instruções começam e terminam e a ordem das operações.

Pode haver passes adicionais depois disso, dependendo da complexidade do idioma e da qualidade da implementação.

Finalmente, a árvore resultante é interpretada ou compilada.

  • Interpreted : O programa é executado diretamente. Isso geralmente é mais fácil de implementar.

  • Compilado : o programa é convertido em uma das seguintes opções:

    • Código da máquina, para que a CPU possa executá-lo diretamente.

    • Bytecode , para que possa ser executado por uma máquina virtual.

    • Outra linguagem de programação. Por exemplo, algumas implementações de linguagem de programação compilam para C e invocam um compilador C para produzir código de máquina.

Esta é uma visão geral aproximada. Como você pode ver, a implementação de uma linguagem de programação está bastante envolvida. Para evitar sentir-se sobrecarregado, comece implementando um conjunto muito pequeno de recursos. Não comece escrevendo um léxico ou analisador que suporte todo o seu idioma; você vai se queimar antes de ver algo funcionando. A chave é conseguir algo funcionando . Ele criará um strong ciclo de feedback: adicionar novos recursos será divertido porque você poderá vê-los funcionar imediatamente.

Eu não recomendo começar a escrever um intérprete para o BASIC imediatamente. Aqui estão alguns pontos de partida:

  • Implemente uma calculadora que suporte a ordem de operações. Exemplo:

    > 1 + (2 + 3) * (4 + 5)
    46
    
  • Implemente um gerador de sentenças aleatórias usando um modelo semelhante a este:

    <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>.
    

    Este é um bom exemplo de um idioma específico do domínio .

  • Aprenda a linguagem de programação C. Isso lhe dará uma melhor compreensão de como os computadores funcionam. C parecerá menos conveniente no início (por exemplo, você não pode simplesmente pegar duas strings e concatená-las, você tem que alocar um buffer grande o suficiente para ambas as strings primeiro), mas você verá que ele fornece melhores métodos de estruturar dados do que você tinha em BASIC.

por 13.12.2011 / 04:50
fonte
2

Diminua a velocidade. Este é um grande projeto, e você está longe de estar pronto para isso. Eu não estou tentando te derrubar, apenas para poupar muito tempo perdido.

Aprenda vários outros idiomas e verifique se C é um deles. Aprenda a montagem (talvez comece com um conjunto de instruções simples como o ARM). Aprenda como os compiladores funcionam. Escreva alguns programas que realmente fazem coisas úteis para as pessoas. A essa altura, você terá uma boa base para voltar a esse plano, se ainda quiser.

    
por 13.12.2011 / 07:14
fonte
1

Eu encontrei este livro Domínio de Scripts de Jogos um livro muito bom. Não é um livro muito conhecido, mas vai desde a implementação de uma linguagem de script super básica até uma linguagem de script compilada e personalizada. Também é fácil de seguir e todos os exemplos estão relacionados a jogos. O único problema é que é em C ++, mas todos os conceitos básicos são muito bem explicados.

Você pode encontrar uma cópia usada bem barata na Amazon ou em outro lugar, apenas certifique-se de obter uma cópia que inclua o CD com ela.

    
por 13.12.2011 / 04:13
fonte
0

Lembre-se que Bill Gates começou a escrever um interpretador Tiny BASIC para o ALTAIR.

Existem linguagens melhores, mas você pode facilmente escrever um intérprete para uma pequena língua sua, e é divertido e uma boa experiência.

Comece com qualquer idioma que você já tenha. Você provavelmente quer mantê-lo realmente simples, como para iniciantes só tem variáveis numéricas e manter os nomes de variáveis para caracteres únicos como A, I ou X. Você pode fazer matrizes depois.

Para expressões, como (F-32) * 5/9, um analisador descendente recursivo é fácil de escrever e excelente prática. Você não precisa construir uma árvore de análise - basta calcular os resultados à medida que avança.

Esqueça funções / sub-rotinas. Você pode fazer isso depois. Para a estrutura de controle, se você quisesse ser realmente minimalista, poderia ficar com IF e GOTO. Você pode fazer as coisas mais estruturadas quando estiver mais confiante.

Quando você faz algo funcionar, pode elaborá-lo em qualquer direção que desejar.

Divirta-se!

    
por 13.12.2011 / 04:36
fonte
0

Eu recomendo que você aprenda Python, e não tente escrever um compilador até que seu conjunto de habilidades inclua C e C ++.

O Python é uma linguagem moderna, fácil de aprender, e se você pode fazer o BASIC, você pode fazer o PYTHON. É fácil.

    
por 21.02.2012 / 22:04
fonte