Analisador de Código

4 respostas
R

Olá,

Trabalho em uma empresa que presta serviços para a Porto Seguro Seguros S/A. A empresa utiliza a linguagem Informix/4GL, sei que a esmagadora maioria nunca ouviu falar. Estou precisando de um programa que faça análise sintáxica do código afim de encontrar palavras reservadas a linguagem que estão sendo utilizadas indevidamente, em nomes de variáveis por exemplo.
O programa ou deve contemplar a linguagem em questão, ou então, ter alguma forma de inserir expressões regulares, para que se possa definir as palavras reservadas e a forma que elas estão sendo utilizadas indevidamente, para que o analisador possa encontra-las.

Não sei se fui suficientemente claro, mas quem puder me ajudar fico grato. E qualquer coisa que não tenham entendido é só falar que tento explicar de forma melhor, quem sabe com exemplos de código.

Falando nsiso, ai vai um exemplo muito comum de utilização indevida de palavra reservada.

EX:

Define lr_exemplo record
variavel1 smallint
,variavel2 char(50)
,status smallint
end record

let lr_exemplo.status = 1 # A variável status é reservada da linguagem, e possui o valor de uma execução SQL, se foi bem sucedida ou não, caso seja bem sucedida terá o valor zero. Enfim, o fato é que ela não pode ser utilizada desta maneira. Porém, não há problema em ser utilizada da maneira abaixo.

EX:

define l_status smallint

let l_status = 1

Isso se deve ao fato de que a variável está definida como a precedência de “l_”, o que faz com que o programa não o reconheça como reservada. Porém no caso acima, o nome é apenas “status”, sendo reconhecida pelo compilador.

Espero que tenha me expressado bem.

Obrigado a todos.

4 Respostas

Vmaia

Olá,

Talvez o Aqua Data Studio tenha essas funcionalidades.

peczenyj

Seria bom vc obter o BNF dessa linguagem para este tipo de analise.

de qq forma veja se alguma dessas ferramentas podem ajudar:

http://www.antlr.org/
https://javacc.dev.java.net/

R

Dei uma pesquisada sobre BNF, e pelo que entendi seria o arquivo que contem a “sintaxe” da linguagem, as regras?

E

Você pode tentar aproveitar a gramática (acho que em formato YACC, deve ser um arquivo .y nessa distribuição, infelizmente o site sourceforge.net está bloqueado aqui no proxy) que está nos fontes deste projeto:

http://www.filetransit.com/view.php?id=93595

Se bem que se você procurar direitinho alguma pessoa tenha já feito tal coisa. Fazer um analisador sintático é coisa que requer um pouquinho de teoria - por acaso você teve aquela disciplina “Teoria de Compiladores” ou coisa parecida na faculdade? Pois é.

Criado 9 de junho de 2010
Ultima resposta 9 de jun. de 2010
Respostas 4
Participantes 4