Skip to content

Latest commit

 

History

History
84 lines (56 loc) · 4.21 KB

README.md

File metadata and controls

84 lines (56 loc) · 4.21 KB

SanchaCppParser

Bem Vindo ao SanchaCppParser

Implementação de um analisador Léxico e Sintático para C++ desenvolvido em Java, com JavaCC e Swing UI, por alunos da universidade UniNorte Laureate Universities com finalidade de compor a nota parcial da 3ª ARE, como projeto final, da disciplina de Computação Teórica/Compiladores, ministrada pelo Prof.º M.Sc. Camilo Souza.

Dedicamos o nome e ícone deste projeto a nossa ex professora e orientadora Prof.ª M.Sc. Francisca Sancha. Àquela que em nós sempre acreditou. Muito obrigado, professora.

Sumário

  1. Instalação e execução
  2. Uso básico
  3. Gramática BNF C++ projetada

Instalação e execução

  1. Clone o repositório

    $ git clone https://github.com/pauloigormoraes/SanchaCppParser.git
    $ cd SanchaCppParser/
  2. Execute o SanchaCppParser:

    $ java -jar SanchaCppParser.jar

Uso básico

  1. Após abrir, você verá esta tela:

  2. Você pode clicar no menu Arquivo > Abrir ou Arquivo > Salvar para abrir ou salvar, respectivamente, um arquivo .txt contendo um código C++. Por padrão, você pode selecionar um dos arquivos em models/ como exemplo.

  3. Ao abrir um arquivo, você verá o código carregado com seus lexemas destacados com Syntax Highlighting:

  4. Caso você não tenha um arquivo, você pode digitar seu próprio código.

  5. Após ter seu código pronto, você pode fazer a Análise Léxica ou Sintática, através das opções Ferramentas > Analisar lexemas ou Ferramentas > Analisar sintaxe, respectivamente.

  6. Você pode mais alguns detalhes no menu Sobre

Gramática BNF C++ projetada

<INICIAL> → <ATRIBUIÇÃO> | <REPETIÇÃO> | <CONDIÇÃO>
<ATRIBUIÇÃO> → <TIPO> <IDENTIFICADOR> "=" <ARITMETICO> ";" | <TIPO> <IDENTIFICADOR> ";" | <IDENTIFICADOR> "=" <ARITMETICO> ";" | <IDENTIFICADOR> "++" ";" | <IDENTIFICADOR> "--" ";" | <ATRIBUIRFUNÇÃO>
<IDENTIFICADOR> → ([a-z, A-Z])* ([0-9_])+
<NUMERO> → ([0-9])+
<NUMEROREAL> → ([0-9])+ | ([0-9])* . ([0-9])*
<TIPO> → "int" | "float" | "char" | "void"
<ARITMETICO> → <EXPRESSÃO> ("+" | "-" | "/" | "*") <EXPRESSÃO>
<EXPRESSÃO> → <NUMEROINTEIRO> | <NUMEROREAL>
<CONDIÇÃO> → "if" "(" <COMPARAÇÃO> ")" "{" <BLOCO> "}"
<REPETIÇÃO> → <PARA> | <FAÇAENQUANTO>
<PARA> → "for" "(" <ATRIBUIÇÃO> ";" <COMPARAÇÃO> ";" <ATRIBUIÇÃO> ")" "{" <BLOCO> "}"
<FUNÇÃO> → <TIPO> <IDENTIFICADOR> "(" ")" "{" <BLOCO> "}"
<FAÇAENQUANTO> → "do" "{" <BLOCO> "}" "while" "(" <CONDIÇÃO> ")"
<ATRIBUIRFUNÇÃO> → <IDENTIFICADOR> ( "<<" | ">>" ) "\"" <IDENTIFICADOR> "\"" ";" 
<COMPARAÇÃO> → <ATCOND> ("==" | "!=" | ">" | "<" | ">=" | "<=") <ATCOND> | <ATCOND> |  <ATCOND> ("==" | "!=" | ">" | "<" | ">=" | "<=") <ATCOND> (("&&" | "||" ) <ATCOND> ("==" | "!=" | ">" | "<" | ">=" | "<=") <ATCOND>)+ 
<ATCOND> → <IDENTIFICADOR> | <NUMERO> | "true" | "false"   

Equipe

Copyright © 2016 SanchaCppParser - Licensed by MIT LICENSE.