2009-06-23 5 views
3

나는 다음 F77 yacc 문법을 우연히 발견했다 : http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup.Happy (Haskell)를 사용하여 yacc 문법에서 Fortran 77 파서 생성

Happy을 사용하여이 파일에서 Fortran 77 파서를 만들려면 어떻게해야합니까?

왜 C/C++가 있습니까? 그 .y 파일에 코드?

업데이트 : 답장을 보내 주셔서 감사합니다. 처음부터 문법을 작성

  • , 추출 및 Parametric Fortran라는 제목의 논문 함께 번들로 제공되는 소스 코드 패키지에서 파서를 개질시키기

    1. :

      나는이 신선한 지금 잠시 동안 접근과 놀았 던 BNFC의 도움.

    나는 간단한 코드 발췌 부분을 이미 구문 분석했습니다. 나는 사람들이 금세기에 쓸모있는 것이 생겨날지라도 사람들을 계속 지킬 것 "이라고 말했다.

    P/S : 나는 자동으로 프로젝트를 시작하기에 충분한 추진력을 스스로 모을 수 있는지보고 싶다. 차별화 엔진을 사용하여 당분간은 바이너리 전용 엔진을 대체 할 수 있습니다. 초기 단계의 엔터테인먼트 : 나는 Love Shuffle을보고 있습니다! 매우 즐거운 J-Drama입니다 ...

  • 답변

    1

    BNFC을 사용하고 처음부터 직접 문법을 작성하십시오! BNFC는 경이로움을 나타내고 원하는대로 파싱을 정확하게 수행 할 수 있습니다.

    +1

    공개 소스가 있습니까? 나는 fortran 코드를 사용하기 위해 정확히 동일한 것을 만들고 싶다. – leon

    2

    C는 다음과 같습니다. 구문을 읽을 때 스택을 줄이기위한 의미 론적 동작이 작업은 C 소스 파일을 생성하는 Bison/Yacc를위한 것이기 때문에 C로되어 있습니다.

    해피를 사용하려면 BNF를 해피 정의 구문으로 포팅하고 하스켈에서 의미 체계를 작성하십시오.

    단지 빙산의 팁 그러나 유용한 아무것도 얻는 것.

    이미 사본이없는 경우, 드래곤 도서에 투자 (컴파일러 : 원리, 기법 아호, 램, 세티, Ullman은에 의해 & 도구 - 피어슨)

    +0

    고맙습니다. 이미 사본을 가지고 있습니다.^^ o^* !! –

    1

    당신은 AST가 필요합니다 Yacc 파일의 C 파편과 동일한 방식으로 구축 할 수 있습니다.

    +1

    AST를 작성하기 위해 조치가 작성된 언어의 의미가 작성 방법에 큰 영향을 줄 것이라고 생각합니다. C에서 하스켈로 축 어적으로 복사하는 것을 제안하지는 않을 것입니다. 그렇게하면 비 능률과 혼란을 초래할 것입니다. 가장 좋은 방법은 AST/파서/컴파일러의 기능을 연구하고 C에서 기존의 제작 작업을 너무 많이 보지 않고 하스켈에서 직접 적용하는 것입니다. –

    +0

    감사의 말에 지금 당신의 제안에 따라. –

    2

    다른 대답은 일반적인 의미에서 왜 사실 인가요? Yacc 정의에 의미가있는 작업을 직접 작성해야 실제로 이 아니며 문법과 관련된 동작이 모두입니다. 규칙. yyerror 함수와 토큰 유형에 따라 yylval에서 값을 추출하는 코드를 정의한다는 점이 다릅니다.

    yyerror/yylval에 대한 힌트가 없다면 bison/flex 자습서를 읽어야합니다. 드래곤 책은 당신이이 점에 대해 더 진지하게 생각한다면 좋은 자료입니다. 또한 책을 기반으로하는 인터넷 주변의 컴파일러에 관한 Stanford 과정의 유인물도 있습니다.

    +0

    +1 링크를 따라 +1 : –

    +0

    고맙습니다. 이미 저에게 책의 사본을 가지고 있습니다! 스탠포드 신문에 대해서는 시간이 지났을 때 나중에 확인해 보겠습니다. *^o^* !! –

    관련 문제