/simple3

Compiler/transpiler for the Simple3 programming language

Primary LanguagePython

Simple3: O compilador para a linguagem smp assim

O projeto

Simple3, como seu nome já diz, tem como foco o minimalismo de seus arquivos fontes, a declaração de uma variável do tipo numérico pode ser dada por:

num smp = 12;
str aaa = "AAAAAAAAAAAAAAAAAAAAAAAA";

Note que, semelhante às linguagens derivadas da linguagem C, as diretivas sempre são terminadas com ponto e vírgula.

Este é um projeto para a matéria de Compiladores do curso de Ciência da Computação do Centro Universitário FEI.

Membros

NomeRA
Leon Ferreira Bellini22218002-8
Pedro Freitas Magalhães Barbosa22218013-5
Felipe Maciel de Sousa22218042-4
Guilherme Ormond Sampaio22218007-7

Como utilizar o compilador

Consulte o arquivo contido na pasta documentacao, doc_final. Este contém exemplos e instruções de como utilizar o compilador.

O andamento do projeto

Analisador léxico [6/6]

  • [X] Definição dos tokens da linguagem
  • [X] Definição da tabela de símbolos
  • [X] Construção dos autômatos
    • [X] Autômato para string
    • [X] Autômato para identificador (var)
    • [X] Autômato para números
  • [X] Priorização dos autômatos
  • [X] Tratamento de comentários e linhas vazias
  • [X] Tratamento de erros e casos especiais

Analisador sintático [2/2]

  • [X] Definição da sintaxe da linguagem
  • [X] Implementação do analisador sintático recursivo descendente
    • [X] S
    • [X] DECVAR
    • [X] BOOL
    • [X] MATLAB
    • [X] OPERADOR
    • [X] FLUX
    • [X] EXPR
    • [X] OPBOOL
    • [X] RPT
    • [X] RANGE

Analisador semântico [2/2]

  • [X] Análise semântica
    • [X] Checagem de tipos de variáveis
    • [X] Checagem sobre operações binárias (tipos)
  • [X] Geração de código

Correção de bugs e testes

Quanto aos arquivos teste

O script a seguir realiza a compilação de todos os arquivos para teste do compilador. Estes podem ser achados no diretório documentacao.

#!/usr/bin/sh
for arq in documentacao/*.sp3; do
    out=$(./simple3.sh "$arq")
    if [ ${#out} -gt 0 ]; then
	echo "Erro ao tentar compilar o arquivo" "$arq"
    fi
done