Pergunta

me deparei com a seguinte gramática F77 yacc: http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup .

Como posso fazer um analisador Fortran 77 deste arquivo usando feliz ?

Por que há alguns C? / C ++? código nesse arquivo .y?

UPDATE:! Obrigado pelas suas respostas

Eu tenho jogado com dois fresco se aproxima por um tempo agora:

  1. extrair e modifiying o analisador do pacote de código fonte junto com um artigo intitulado Parametric Fortran ,
  2. escrevendo uma gramática a partir do zero com a ajuda de BNFC .

Eu tenho tanto para analisar trechos de código simples já. Vou manter as pessoas no saber se algo utilizável vir a existir neste século ^ __ ^" hehe.

P / S: Quer ver se eu poderia ganhar impulso suficiente no meu próprio para iniciar um projeto para um motor de diferenciação automática para substituir um binário único que dependem, por enquanto. Para o entretenimento nos estágios iniciais: Estou assistindo Amor Aleatório ! É uma muito agradável J-Drama! Altamente recomendável ...

Foi útil?

Solução 4

Use BNFC e escrever a sua própria gramática a partir do zero! BNFC faz maravilhas e você poderia fazer a sua análise exatamente como você deseja.

Outras dicas

A C é o ação semântica para reduzir a pilha quando a sintaxe é lido. Essas ações estão em C porque a definição destina-se a Bison / Yacc que produz um arquivo de origem C.

Se você quiser usar feliz, porta a BNF para a sintaxe definição feliz e escrever sua semântica em Haskell.

Apenas o ponta do iceberg para obter alguma coisa útil no entanto.

Se você não tem uma cópia já, investir na Dragon Livro (Compiladores: Princípios, técnicas e ferramentas por Aho, Lam, Sethi, Ullman - Pearson)

Por que as outras respostas são verdadeiras no sentido geral, na medida em que você vai precisar para escrever suas próprias ações para fazer algo significativo a definição Yacc que é ligada ao realmente não tem qualquer acções associado com as regras gramaticais. O que ele faz é que ele define a função yyerror e algum código para extrair valores de yylval base no tipo de token.

Se você não tem idéia do que yyerror / yylval são sobre você deve ler um bisão / Flex tutorial. O livro do dragão também é um bom recurso se você está mais sério sobre isso. Existem também alguns excelentes apostilas de um Stanford curso sobre compiladores flutuando em torno da Net, que são baseados no livro.

Você vai precisar de um AST a compilação que pode ser construído de forma equivalente aos fragmentos C no arquivo Yacc.

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