[antlr-interest] VS2008 Integration Example

Jim Idle jimi at temporal-wave.com
Tue Oct 14 09:36:56 PDT 2008


On Tue, 2008-10-14 at 11:28 -0500, Sam Harwell wrote:
> Here’s how you can get the Clean and Rebuild tasks working as well. If
> you delete the .tokens files associated with each grammar, then the
> grammar will get properly rebuilt:
> 
>  
> 
> <PropertyGroup>
> 
> 
> <CoreCleanDependsOn>$(CoreCleanDependsOn);CleanAntlrCode</CoreCleanDependsOn>
> 
> </PropertyGroup>
> 
> <Target Name="CleanAntlrCode">
> 
>         <ItemGroup>
> 
>                 <_CleanAntlrFileWrites
> Include="@(Antlr3->'%(RelativeDir)%(Filename).tokens')" />
> 
>         </ItemGroup>
> 
>         <Message Importance="normal" Text="Antlr: Deleting output
> files '@(_CleanAntlrFileWrites)'"/>
> 
>         <Delete Files="@(_CleanAntlrFileWrites)" />
> 
> </Target>
> 


Guys,

We really need to update the WIki article rather than/as well as, post
here - this is all useful information.

Jim

>  
> 
> Sam
> 
>  
> 
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Gavin Lambert
> Sent: Tuesday, October 14, 2008 4:09 AM
> To: André van der Merwe; antlr-interest at antlr.org
> Subject: Re: [antlr-interest] VS2008 Integration Example
> 
>  
> 
> At 21:35 14/10/2008, André van der Merwe wrote:
> 
> >Does anyone have a simple example VS2008 
> 
> >solution that calls ANTLR as part of the build 
> 
> >(i.e. not a pre-build event).
> 
> > 
> 
> >I’ve followed the instructions on the web site 
> 
> >but I’m doing something wrong....
> 
>  
> 
> For which target language?
> 
>  
> 
> This is the method I use for C# projects (will 
> 
> probably also work with other .NET languages, but *not* C/C++):
> 
>  
> 
> 1. Right-click, Unload Project, Right-click, Edit 
> 
> project.  (If you're using Express, you don't 
> 
> have this option, but you can edit the project 
> 
> file outside of VS instead.)
> 
> 2. Somewhere inside the first <PropertyGroup> section, add these:
> 
>  
> 
>      <AntlrFolder>D:\path\to\antlr\lib</AntlrFolder>
> 
>      <AntlrClassPath>$(AntlrFolder)\antlr-3.jar;
> $(AntlrFolder)\stringtemplate-3.2.jar;
> $(AntlrFolder)\antlr-2.7.7.jar</AntlrClassPath>
> 
>  
> 
> 3. Immediately below the 
> 
> <ItemGroup>...</ItemGroup> block containing your 
> 
> normal source files, add this:
> 
>  
> 
>      <ItemGroup>
> 
>        <Antlr3 Include="Your.g">
> 
> 
> <OutputFiles>YourLexer.g;YourParser.g;Your.tokens</OutputFiles>
> 
>        </Antlr3>
> 
>        <Antlr3 Include="YourTree.g">
> 
>          <InputFiles>Your.tokens</InputFiles>
> 
>          <OutputFiles>YourTree.cs</OutputFiles>
> 
>        </Antlr3>
> 
>        <Compile Include="YourLexer.cs">
> 
>          <AutoGen>True</AutoGen>
> 
>          <DesignTime>True</DesignTime>
> 
>          <DependentUpon>Your.g</DependentUpon>
> 
>        </Compile>
> 
>        <Compile Include="YourParser.cs">
> 
>          <AutoGen>True</AutoGen>
> 
>          <DesignTime>True</DesignTime>
> 
>          <DependentUpon>Your.g</DependentUpon>
> 
>        </Compile>
> 
>        <Compile Include="YourTree.cs">
> 
>          <AutoGen>True</AutoGen>
> 
>          <DesignTime>True</DesignTime>
> 
>          <DependentUpon>YourTree.g</DependentUpon>
> 
>        </Compile>
> 
>      </ItemGroup>
> 
>  
> 
> 4. Immediately above the closing </Project> tag, add this:
> 
>  
> 
>      <Target Name="GenerateAntlrCode"
> 
>              Inputs="@(Antlr3);%(Antlr3.InputFiles)"
> 
>              Outputs="%(Antlr3.OutputFiles)">
> 
>        <Exec Command="java -cp 
> 
> &quot;$(AntlrClassPath)&quot; org.antlr.Tool 
> 
> -message-format vs2005 @(Antlr3)"
> 
>              Outputs="%(Antlr3.OutputFiles)" />
> 
>      </Target>
> 
>      <PropertyGroup>
> 
>        <BuildDependsOn>GenerateAntlrCode;
> $(BuildDependsOn)</BuildDependsOn>
> 
>      </PropertyGroup>
> 
>  
> 
> 5. Edit the above to suit your real files.
> 
>  
> 
> There's probably better ways to do this (I'm not 
> 
> really all that experienced with MSBuild), but 
> 
> the above works for me.  It's a little bit clunky 
> 
> in that you have to manually edit the project 
> 
> whenever you add new grammar files (or outputs), 
> 
> but that's usually not something that happens very often.
> 
>  
> 
> One caveat: Visual Studio does weird things if 
> 
> you have the generated .cs files open when you 
> 
> build, especially if you've modified the 
> 
> grammar.  It's best to close the .cs files before 
> 
> you build.  (It sometimes seems to compile the 
> 
> version of the code that's shown in the editor -- 
> 
> ie. the old code -- instead of the newly 
> 
> generated code.  This is especially true if it 
> 
> thinks the code has been modified -- which 
> 
> includes the line-ending adjustment it likes 
> 
> making when you open them.)
> 
>  
> 
>  
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> 
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
>  
> 
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20081014/e20cb0ba/attachment.html 


More information about the antlr-interest mailing list