Giter VIP home page Giter VIP logo

compilers's Introduction

Compilador em Java

Este repositório contém um compilador Java para uma linguagem de programação especificada. A linguagem de programação é definida pela gramática abaixo:

program ::= program identifier [decl-list] begin stmt-list end "."

decl-list ::= decl ";" { decl ";"}

decl ::= ident-list is type

ident-list ::= identifier {"," identifier}

type ::= int | float | char

stmt-list ::= stmt {";" stmt}

stmt ::= assign-stmt | if-stmt | while-stmt | repeat-stmt | read-stmt | write-stmt

assign-stmt ::= identifier "=" simple_expr

if-stmt ::= if condition then stmt-list end | if condition then stmt-list else stmt-list end

condition ::= expression

repeat-stmt ::= repeat stmt-list stmt-suffix

stmt-suffix ::= until condition

while-stmt ::= stmt-prefix stmt-list end

stmt-prefix ::= while condition do

read-stmt ::= read "(" identifier ")"

write-stmt ::= write "(" writable ")"

writable ::= simple-expr | literal

expression ::= simple-expr | simple-expr relop simple-expr

simple-expr ::= term | simple-expr addop term

term ::= factor-a | term mulop factor-a

fator-a ::= factor | "!" factor | "-" factor

factor ::= identifier | constant | "(" expression ")"

relop ::= "==" | ">" | ">=" | "<" | "<=" | "!="

addop ::= "+" | "-" | "||"

mulop ::= "*" | "/" | "&&"

constant ::= integer_const | float_const | char_const

Padrões dos tokens

digit ::= [0-9]

carac ::= um dos caracteres ASCII

caractere ::= um dos caracteres ASCII, exceto quebra de linha

integer_const ::= digit+

float_const ::= digit+ “.”digit+

char_const ::= " ‘ " carac " ’ "

literal ::= "{" caractere* "}"

identifier ::= letter (letter | digit | " _")*

letter ::= [A-Za-z]

Funcionalidades

O compilador implementado neste repositório é capaz de realizar as seguintes funcionalidades:

  • Análise léxica
  • Análise sintática
  • Análise semântica
  • Geração de código

Como utilizar

Para utilizar o compilador, siga os passos abaixo:

  1. Clone este repositório em sua máquina local.
  2. Abra o terminal e navegue até o diretório onde o repositório foi clonado.
  3. Entre na pasta src cd src/
  4. Compile o código-fonte utilizando o comando javac Compiler.java
  5. Execute o compilador utilizando o comando java Compiler <file-path>

Observação: O compilador espera receber como parâmetro o caminho para um arquivo de código-fonte. Também é possível passar o parâmetro -d que ira ativar o modo de debug, que exibe informações sobre o processo de compilação. Exemplo: java Compiler <file-path> -d

Realizado por:

Erick H. D. de Souza
Lucas C. Dornelas
Násser Rafael

compilers's People

Contributors

erickhdds avatar lucascdornelas avatar nasserkilesse avatar

Watchers

 avatar

compilers's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.