2010-02-14 6 views
8

나는 렉서와 파서를 쓰고 싶기 때문에 F #을 배우고있다. 이런 종류의 처리에 대해서는 약간의 경험이 있지만 실제로 F #뿐만 아니라 올바르게 배울 필요가 있습니다.lex/yacc와 fslex/fsyacc의 차이점은 무엇입니까?

F #의 렉싱/파싱 기능을 배울 때 렉스와 yacc를 충분히 공부하고 있습니까?

또는 lex/yacc에 대한 코드가 fslex 및 fsyacc에서 작동하지 않는다는 것을 의미하는 몇 가지 차이점이 있습니까?

답변

9

필자는 개인적으로이 OcamlLexOcamlYacc 튜토리얼을 사용하여 시작하기에 매우 좋은 자료를 찾았습니다. 따라하기 쉽고 FsLex/FsYacc의 튜토리얼에서 대부분의 내용을 거의 그대로 번역 할 수 있습니다.

+3

'as'는 충격적인 한계 인'fslex'에서 작동하지 않습니다. –

5

음, lex와 yacc를 사용하면 'actions'에 C/C++ 코드를 넣는 반면, fslex와 fsyacc를 사용하면 F # 코드를 거기에 넣을 수 있습니다. 나는 그들이 달리 같은 (설립/고대) 토큰 화 및 분석 기술을 기반으로 생각, 그래서 당신이 계신 있다면 일반적인 구조/문법의 행동이 비슷해야

...

+0

나는 아직도 F #과 lex/yacc 모두를 배우고있다. 기능적 프로그래밍의 본질은 디버그하기가 더 어려워서 잘못된 구문을 사용하기 때문에 이상한 행동을하고 싶지 않습니다! :-) –