Lexical analyzer in compiler project for Portugol language

Portugol

Portugol is a pseudolanguage that allows the reader to develop algorithms structured in Portuguese in a simple and intuitive way, regardless of programming language. See in Wikipedia(PT)

Grammar

Programa → inicio Declarações Comandos fim
Declarações → Declaração Declarações | ε
Declaração → Tipo : Identificadores ;
Tipo → int | dec
Identificadores → Identificador , Identificadores | Identificador
Comandos → Comando Comandos | ε
Comando → CMD-Se | CMD-Para | CMD-Obtenha | CMD-Mostre | CMD-Atrib
CMD-Se → se Expr entao Comandos senao Comandos fim_se | se Expr entao Comandos fim_se
CMD-Para → para Identificador de Expr ate Expr passo Expr Comandos fim_para | para Identificador de Expr ate Expr Comandos fim_para
CMD-Obtenha → leia ( Identificador ) ;
CMD-Mostre → imprima ( Identificador ) ; | imprima ( Número ); | imprima ( Cadeia ) ;
CMD-Atrib → Identificador <- Expr ;
Expr → Expr OpBinario Expr | OpUnario Expr | Número
OpBinario → + | - | * | / | e | ou | = | <> | > | >= | < | <=
OpUnario → - | ++ | -- | nao
Número → Inteiro | Decimal

Input and output

https://github.com/Eberty/ProjetoCompiladoresEbertyPhiliphe/tree/master/Arquivos/Portugol-Relatorio.pdf