/Parser

Implementation of a parser for arithmetic expressions in the C- programming language through a pushdown automaton (PDA).

Primary LanguagePython

Parser

This work aims to implement a parser for arithmetic expressions in the C- programming language through a pushdown automaton (PDA).


This project was based on the "Action Go-to" table of the SLR(1) algorithm of the generator grammar of the language of expressions, with the help of the JFLAP software.


How to Execute and How It Works

The program receives as input a list of simplified (only arithmetic expressions) C- language tokens (generated by the lexical analysis process) and, as output, recognizes whether the arithmetic expressions inserted in the input were accepted or not.


Before executing it, it is necessary to install some dependencies, such as the Python programming language and after having it properly installed, it will be necessary to install one of its libraries, the automata-lib . For that:

  • Access the official website for more information about the Python language and install it.
  • Install the mentioned library using the command: pip install automata-lib.


To use the Parser just type in terminal the command:

python c-parser.py

However, it is necessary to insert which arithmetic expression you want to analyze. For example one of these:

id=num+num
num-num+num/num*num
id=((num+id)*(id/num))


For that, the desired arithmetic expression needs to be inserted in the last parameter of the command that executes the code. For example:

python c-parser.py id=num+num




Analisador Sintático

Este trabalho teve como principal objetivo implementar um Analisador Sintático para expressões aritméticas da linguagem de programação C- por meio de um Autômato com Pilha (AP).


Tal projeto teve como base a tabela Action Go-To do algoritmo SLR(1) da gramática geradora da linguagem das expressões, com o auxílio do software JFLAP.

How to Execute and How It Works

O programa recebe como entrada uma lista simplificada (apenas operações aritméticas) de tokens (gerados a partir do processo de análise léxica) de um código na linguagem de programação C- e, como saída, reconhece se aquela determinada expressão aritmética inserida como entrada foi reconhecida ou não.


Antes de executar, faz-se necessário a instalação de dependências, como a linguagem de programação Python e após tê-la devidamente instalada, será necessária a instalação de uma de suas bibliotecas, a automata-lib. Para tanto:

  • Acesse o site oficial para obter mais informações sobre a linguagem Python e realize sua instalação.
  • Instale a biblioteca mencionada através do comando: pip install automata-lib.


Para utilizar o Parser basta digitar o comando:

python c-parser.py

Entretando, é necessário inserir qual expressão aritmética deseja-se analisar, por exemplo alguma destas:

id=num+num
num-num+num/num*num
id=((num+id)*(id/num))


Para tanto, a expressão aritmética desejada precisa ser inserida no último parâmetro do comando que realiza a execução do código. Por exemplo:

python c-parser.py id=num+num