2010-03-08 3 views
5

저는 C/lex를 오랫동안 사용해 왔으며 지금 F #/fslex를 사용하고 싶습니다. 필자는 C#과 F #을 학습하는 과정에서 비교적 잘 설명합니다. 유일한 것은 fslex가 Visual Studio 빌드 프로세스에 제대로 포함되어있는 프로젝트 예제 나 템플릿을 볼 수 없다는 것입니다. 어디서 찾을 수 있는지 아는 사람이 있습니까?FSLex 예제 솔루션?

많은 인사말! Volker

답변

2

약간의 연구를 통해 그들은 분리 될 필요가있는 것처럼 보입니다. 당신은 비주얼 스튜디오 추가 기능에서 F # 렉스 사양 파일을 추가 할 수 있지만 명령 줄에 중단해야합니다 fslex

이 실행 : 나는 크리스 스미스에 의해이 블로그 게시물 (http://blogs.msdn.com/chrsmith/archive/2008/01/18/fslex-Sample.aspx)에서 다음을 발견 . Fslex.exe는 F # 배포판의 'bin'디렉토리에 있습니다.

희망이 있습니다.

+0

흠. 관련된 빌드 단계 등이있는 .fsl 파일에 대한 항목 템플릿이 있기를 바랬습니다. 어쨌든 고마워, 내가 먼저 VS2010 릴리스를 얻은 다음 내가 얼마나 멀리 볼 수 있는지. – Volker

10

FsLex는 PowerPack의 일부이기 때문에 불행히도 .fsl 파일에는 기본 제공 항목 템플릿이 없습니다. 따라서 Visual Studio에서는이 파일이 설치 될 것으로 기대할 수 없습니다. PowerPack과 함께 설치할 수있는 템플릿이 있으면 유용 할 것입니다!

어쨌든 FsLex를 사용하고 프로젝트의 일부로 .fsl 파일을 사용하는 샘플 프로젝트를 찾고 있다면 F # 소스 코드 (Visual Studio 2008 MSI/ZIP 패키지). .fsl을 포함하는 프로젝트는 FSharp.Compiler.fsproj이고, 설치시 C:\Programs Files\FSharp-1.9.9.9\source\fsharp\FSharp.Compiler에서 찾을 수 있습니다. 놀랍게도 F # 언어 자체에 대한 렉서가 포함되어 있습니다. 여기, 당신은 또한 FsYacc을 필요한 경우

<FsLex Include="..\lex.fsl"> 
    <OtherFlags>--lexlib Internal.Utilities.Text.Lexing</OtherFlags> 
    <Link>lex.fsl</Link> 
</FsLex> 
<Compile Include="lex.fs" /> 

(또한 FSharp.Compiler.fsproj에서) 예입니다

이 (비주얼 스튜디오 프로젝트도)에 MSBUILD 프로젝트에 FsLex 항목을 추가하려면, 다음을 사용합니다 : 에 컴파일러를 알려줍니다 사용자 정의 도구를 호출 할 FsYacc/FsLex 명령을 필요

<FsYacc Include="..\pars.fsy"> 
    <Module>Microsoft.FSharp.Compiler.Parser</Module> 
    <Open>Microsoft.FSharp.Compiler</Open> 
    <OtherFlags>--internal --lexlib Internal.Utilities.Text.Lexing 
       --parslib Internal.Utilities.Text.Parsing</OtherFlags> 
    <Link>pars.fsy</Link> 
</FsYacc> 
<Compile Include="pars.fs" /> 

주뿐만 아니라 Compile 명령 프로젝트를 빌드 할 때 생성 된 fs 파일을 포함 시키십시오.

3

마침내 전체 VS를 구입할만큼 마침내 위협 할 때까지 무료 VS 셸을 사용하고 있으며, 내가 잘못된 것을하고 있지 않는 한 (그리고 아마 내가있을 때) 아무런 해결책이없는 것 같습니다. . 내가하는 일은 다음과 같은 사전 빌드 이벤트를 프로젝트 속성에 추가하는 것입니다.

"C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\fslex.exe" "$(ProjectDir)\Lexer.fsl" 
"C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\fsyacc.exe" "$(ProjectDir)\Parser.fsy" --module Parser 

저에게는 충분합니다. 오류는 모두 출력 창으로 이동합니다. 32 비트 시스템을 사용하는 경우 해당 경로에서 (x86)을 제거합니다.

+0

VS가 올바르게 종속성을 파악할 수있는 적절한 통합이 있었으면 좋겠지 만 이것은 확실히 작동합니다. –