Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/brunbrunbrun/compilador-minijava

Compilador para o MiniJava, um subconjunto da linguagem Java.
https://github.com/brunbrunbrun/compilador-minijava

compiler minijava-compiler recursive-descent-parser

Last synced: 4 days ago
JSON representation

Compilador para o MiniJava, um subconjunto da linguagem Java.

Awesome Lists containing this project

README

        

# Compilador-MiniJava 🤏☕


Descrição da imagem

## Especificação Léxica

- Espaços em branco:
`[\n \t \r \f]`

- Identificadores:
Uma letra `[a-zA-Z]+`, seguido de zero ou mais letras `[0-9a-zA-Z]*`, dígitos ou `_`

- Numerais:
Apenas números inteiros `[0-9]`

- Operadores:
`=`
`<`
`==`
`!=`
`+`
`-`
`*`
`&&`
`!`

- Pontuação:
`(`
`)`
`[`
`]`
`{`
`}`
`;`
`.`
`,`

- Palavras reservadas:
`boolean` `class` `extends` `public` `static` `void` `main` `String` `return` `int` `if` `else` `while` `length` `true` `false` `this` `new` `null` `System.out.println`

## Gramatica
```EBNF
PROG = MAIN CLASSE
MAIN = 'class' 'id' '{' 'public' 'static' 'void' 'main' '(' 'String' '[' ']' 'id' ')' '{' CMD '}' '}'
CLASSE = 'class' 'id' '[' 'extends' 'id' ']' '{' VAR METODO '}'
VAR = TIPO 'id' ';'
METODO = 'public' TIPO 'id' '(' PARAMS ')' '{' VAR CMD 'return' REXP ';' '}'
PARAMS = TIPO 'id'
TIPO = 'boolean'
| 'int'
CMD = 'if' '(' REXP ')' CMD
| 'while' '(' REXP ')' CMD
| 'System.out.println' '(' REXP ')' ';'
| 'id' '=' REXP ';'
REXP = 'num' '<' 'num'
```

## Analise Sintatica
Foi implementado um analisador sintático descendente recursivo.

# Como usar
- Colocar o codigo dentro do arquivo **input.txt** na raiz do diretorio.
- rodar o script:
`./run_Compilador.sh` para Windows.
- rodar o script:
`./run_Compilador_unix.sh` para UNIX.