Pergunta

Eu estou trabalhando em um projeto de design do compilador em Java. análise léxica é feito (usando jflex) e eu estou querendo saber qual yacc-como ferramenta seria melhor (mais eficiente, mais fácil de usar, etc.) para fazer a análise sintática e por quê.

Foi útil?

Solução

Se você quer especificamente YACC-como comportamento (baseado em tabela), o único que sei é CUP .

No mundo Java, parece que mais pessoas se inclinam para analisador sintático descendente recursivo como ANTLR ou JavaCC .

E eficiência é raramente uma razão para escolher um gerador de analisador.

Outras dicas

No passado, eu usei ANLTR tanto para lexer e analisador, e a página inicial JFlex diz que pode interoperar com ANTLR. Eu não diria que a documentação on-line do ANTLR é assim tão grande. Acabei investir em 'A referência ANTLR definitivo' , que ajudou consideravelmente.

GNU Bison tem uma interface Java,

http://www.gnu.org /software/bison/manual/html_node/Java-Bison-Interface.html

Você pode usá-lo ir gerar código Java.

Há também jacc.

JACC é quase tão perto de yacc como você pode começar, mas ele é implementado em java puro e gera um analisador java.

Ele interage bem com jFlex

http://web.cecs.pdx.edu/~mpj/jacc/

Outra opção seria a OURO Analisador .

Ao contrário de muitas das alternativas, o analisador OURO gera as tabelas parsing da gramática e coloca-los em um arquivo binário, não-executável. Cada idioma suportado, em seguida, tem um motor que lê as tabelas binárias e analisa o seu arquivo de origem.

Eu não usei a implementação Java especificamente, mas usaram o motor de Delphi com resultados bastante positivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top