Pessoal, preciso desenvolver uma ferramenta que seja um interpretador de código, no sentido de validador!
por exemplo: tenho estruturas de decisão como SE / E SE /SENÂO /CASO
e tenho tambem o conteúdo que vaí entre as estruturas, que vou chamar de COMUM. Estou me batendo na lógica que aparenta ser fácil mas não é não.
exemplo de codigo:
1- SE atributo1 > atributo2
2- E SE atributo2 != 0
3- COMUM1
4- COMUM2
5- COMUM3
6- SENÃO
7- COMUM4
8- COMUM5
9- COMUM6
Então, o problema está em administrar dois fatores: IDENTAÇÃO e os INDICADORES DE POSIÇÃO.
preciso dizer o comando 1 (SE atributo1 > atributo2) está alinhado na coluna 0 e que se ele for verdadeiro executará o comando 2 (E SE atributo2 != 0) mas se ele for falso executará o comando 7 i[/i] e o comando 7 deve estar na coluna 1
Indentação - parece coisa do Python (que é uma das poucas linguagens que usa esse recurso sintático.)
Antes de ficar falando para você construir a árvore sintática e coisas desse tipo, gostaria de saber:
Qual o seu background? (Está fazendo o curso de compiladores, ou então “não sei nada de nada de análise léxica e sintática e peguei esse p… abacaxi para fazer”);
Dá para mudar a especificação da sua linguagem para algo mais fácil de ler (não por humanos, mas pela máquina) - algo como - só para dar um exemplo - uma versão simplificada do XML (não estou brincando!)
Dessa maneira, a parte de montar a árvore sintática fica eliminada (pois basicamente a árvore já está especificada no XML), e você não precisa aprender a usar o flex e o bison, ou então o gerador de compiladores Java (javacc).
EDIT - postei o exemplo em XML acima e percebi que você ainda tem de montar a tal árvore sintática. Que coisa… acho que não ajudou muito.
E o javacc está em https://javacc.dev.java.net/
thingol.
Infelizmente não posso mudar a sintaxe pois o conteúdo já existe e está sendo migrado, mas não temos acesso a lógica anterior…
E a base que já existe está no mainframe para ajudar…rs
E a linguagem já é utilizada por usuários leigos em informática, eles cadastram pequenas regras de busines.
Cara já fiz um interpretador de ligunagem em VB.
A sintaxe ra meio parecida só que eu usava o end if.
Não sei como está sua lógica, mas eu me baseava em caracteres não em palavras.
Eu montava as palavras até achar caracteres separadores
espaco, (, ), enter
Se esse for o caso procure o caratcter de tabulação char(9).