Matrix Script

Linguagem baseada na biblioteca Numpy e feita com Python.

IntroduçãoComo usarExemploDocumentaçãoProduções e Ações SemânticasCréditos

screenshot

Introdução

O Matrix Script é uma linguagem simples de alto nível que tem como objetivo executar cálculos e visualização de matrizes.

Como usar

Video de apresentação.

Antes de clonar e rodar essa aplicação, você irá precisar do Git e do Python instalado em sua máquina.

Para clocar o projeto, execute pelo seu terminal:

# Clone o repositório
git clone https://github.com/jorge-g99/matrixscript-master

# Entre no repositório
cd matrixscript-master

# Instale as dependências
pip install numpy

# Rode a aplicação
py main.py

Exemplo

a = LOAD "[[1,2],[2,1]]"
b = LOAD "[[2,1],[1,2]]"
c = LOAD "[[3,0],[1,1]]"
d = a + b * c
PRINT d

Para rodar o exemplo no terminal, execute:

py main.py .\examples\simple_matrix.mx

Árvore de geração utilizada para o exemplo executado: arvore

Documentação

  • py main.py
    • Executa o shell
  • py main.py help
    • Executa o comando de ajuda
  • py main.py license
    • Executa o comando de licensa
  • py main.py copyright
    • Executa o comando de copyright
  • py main.py filePath
    • Executa o parse de um arquivo

Produções e Ações Semânticas

Observações:

  • Tokens em caixa alta para execução dos comandos por convenção da linguagem
Grammar                                         Action
------------------------                        ---------------------------------
statement : PRINT expr                          print(expr.val)
          | ID = expr                           ID.val = expr.val

expr0     : expr1 + expr2                       expr0.val = expr1.val + expr2.val
          | expr1 - expr2                       expr0.val = expr1.val - expr2.val
          | expr1 * expr2                       expr0.val = expr1.val * expr2.val
          | expr1 / expr2                       expr0.val = expr1.val / expr2.val
          | (expr1)                             expr0.val = expr1.val
          | FLOAT                               expr0.val = float(FLOAT.val)
          | INT                                 expr0.val = int(INT.val)
          | STRING                              expr0.val = string(STRING.val)
          | ID                                  self.ids[ID.val]
          | LOAD STRING                         expr0.val = np.array(eval(STRING.val))
          | RANGE INTEGER INTEGER INTEGER       expr0.val = np.arange(p.INT0, dtype=np.int64).reshape(p.INT1, p.INT2)
          | MAX                                 expr0.val = expr1.max()
          | COLUMNMAX                           expr0.val = expr1.max(axis=0)
          | LINEMAX                             expr0.val = expr1.max(axis=1)

Créditos

Projetos de código aberto utilizados:


GitHub @jorge-g99  ·