(Experimental): implemented IPT composite images.

use LEX/YACC to parse IPT files.
This commit is contained in:
morkt
2019-01-28 19:37:14 +04:00
parent e0114ad91d
commit 14a94d20f1
12 changed files with 2907 additions and 0 deletions

View File

@@ -78,13 +78,16 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="Artemis\ImageIPT.cs" />
<Compile Include="Cabinet\ArcCAB.cs" />
<Compile Include="CellWorks\ArcDB.cs" />
<Compile Include="Artemis\GplexBuffers.cs" />
<Compile Include="Opus\AudioOPUS.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RPGMaker\ArcRGSS.cs" />
<Compile Include="RPGMaker\AudioRPGMV.cs" />
<Compile Include="RPGMaker\ImageRPGMV.cs" />
<Compile Include="Artemis\ShiftReduceParserCode.cs" />
<Compile Include="WebP\ImageWEBP.cs" />
</ItemGroup>
<ItemGroup>
@@ -109,11 +112,47 @@
<ItemGroup>
<Folder Include="Key\" />
</ItemGroup>
<ItemGroup Label="IPTFiles">
<Compile Include="Artemis\IPT.Parser.cs">
<DependentUpon>IPT.parser</DependentUpon>
</Compile>
<Compile Include="Artemis\IPT.Parser.Generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>IPT.Language.grammar.y</DependentUpon>
</Compile>
<Compile Include="Artemis\IPT.Scanner.cs">
<DependentUpon>IPT.parser</DependentUpon>
</Compile>
<Compile Include="Artemis\IPT.Scanner.Generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>IPT.Language.analyzer.lex</DependentUpon>
</Compile>
<None Include="Artemis\IPT.Language.analyzer.lex">
<DependentUpon>IPT.parser</DependentUpon>
</None>
<None Include="Artemis\IPT.Language.grammar.y">
<DependentUpon>IPT.parser</DependentUpon>
</None>
<None Include="Artemis\IPT.parser" />
</ItemGroup>
<PropertyGroup Label="YltParsers">
<Names>ipt</Names>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>perl "$(SolutionDir)inc-revision.pl" "$(ProjectPath)" $(ConfigurationName)
exit 0</PreBuildEvent>
</PropertyGroup>
<PropertyGroup Label="YltProperties">
<YltTools>$(SolutionDir)packages\YaccLexTools.0.2.2\tools\</YltTools>
<GplexTool>"$(YltTools)gplex.exe"</GplexTool>
<GppgTool>"$(YltTools)gppg.exe"</GppgTool>
</PropertyGroup>
<PropertyGroup Label="GenerateIPTProperties">
<IPTParser>$(ProjectDir)Artemis\IPT</IPTParser>
</PropertyGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
@@ -123,6 +162,18 @@ exit 0</PreBuildEvent>
</Target>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.109.2\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.109.2\build\net46\System.Data.SQLite.Core.targets')" />
<Target Name="BeforeBuild" DependsOnTargets="YltBuildGen" />
<Target Name="YltBuildGen" DependsOnTargets="GenerateIPT" />
<Target Name="GenerateIPT" Inputs="$(IPTParser).Language.analyzer.lex;$(IPTParser).Language.grammar.y" Outputs="$(IPTParser).Scanner.Generated.cs;$(IPTParser).Parser.Generated.cs">
<Message Text="Generating scanner for $(IPTParser) ..." />
<Exec Command="$(GplexTool) /codePage:UTF-8 &quot;/out:$(IPTParser).Scanner.Generated.cs&quot; &quot;$(IPTParser).Language.analyzer.lex&quot;" WorkingDirectory="$(ProjectDir)Artemis" Outputs="$(GenDir)Scanner.cs">
<Output TaskParameter="Outputs" ItemName="IPTScanner" />
</Exec>
<Message Text="Generating parser for $(IPTParser) ..." />
<Exec Command="$(GppgTool) /no-lines /gplex &quot;$(IPTParser).Language.grammar.y&quot; &gt; &quot;$(IPTParser).Parser.Generated.cs&quot;" WorkingDirectory="$(ProjectDir)" Outputs="$(IPTParser).Parser.Generated.cs">
<Output TaskParameter="Outputs" ItemName="IPT" />
</Exec>
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">