我是Antlr的新手。我想在C#中使用Antlr,并且已经完成了https://github.com/sharwell/antlr4cs中描述的所有操作,但是在构建Project时没有任何反应。

我的项目文件的一部分:

<ItemGroup>
  <Antlr4 Include="Model\ScriptGrammar\ScriptGrammar.g4">
    <Generator>MSBuild:Compile</Generator>
    <CustomToolNamespace>Model.ScriptGrammar</CustomToolNamespace>
  </Antlr4>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
  <!-- Folder containing Antlr4BuildTasks.dll -->
  <Antlr4BuildTaskPath>..\..\External\Antlr</Antlr4BuildTaskPath>
  <!-- Path to the ANTLR Tool itself. -->
  <Antlr4ToolPath>..\..\External\Antlr\antlr4-csharp-4.0.1-SNAPSHOT-complete.jar</Antlr4ToolPath>
</PropertyGroup>
<Import Project="..\..\External\Antlr\Antlr4.targets" />
<PropertyGroup>
  <PostBuildEvent>$(ProjectDir)\copyExternals.bat</PostBuildEvent>
</PropertyGroup>


我的测试语法文件:


grammar ScriptGrammar;
options
{
    language=CSharp_v4_5;
}

r : 'hello' ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines, \r (Windows)


我正在使用Visual Studio 2012专业版

最佳答案

从项目文件中删除以下行:

<PropertyGroup>
  <!-- Folder containing Antlr4BuildTasks.dll -->
  <Antlr4BuildTaskPath>..\..\External\Antlr</Antlr4BuildTaskPath>
  <!-- Path to the ANTLR Tool itself. -->
  <Antlr4ToolPath>..\..\External\Antlr\antlr4-csharp-4.0.1-SNAPSHOT-complete.jar</Antlr4ToolPath>
</PropertyGroup>
<Import Project="..\..\External\Antlr\Antlr4.targets" />

使用NuGet软件包管理器来安装此处描述的Antlr4软件包:
https://www.nuget.org/packages/Antlr4
从语法文件中删除以下几行。语言由构建工具设置。

options
{
    language=CSharp_v4_5;
}

关于c# - Antlr4cs什么都不做,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18824588/

10-09 05:36