blob: f217507b9fcf3f9ecc6e271d4a5f80b03336bb18 [file] [log] [blame]
<!--
Copyright 2019 Alain Dargelas
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Ant build script for the grammars -->
<project name="SV Antlr Grammar" default="compile_cpp" basedir=".">
<description>
System Verilog Antlr Grammar build
</description>
<!-- set global properties for this build -->
<property name="antlr_tool_location"
value="../third_party/antlr4/antlr4-4.7.2-complete.jar"/>
<property name="antlr_tool_target" value="org.antlr.v4.Tool"/>
<property name="antlr_test_rig" value="org.antlr.v4.gui.TestRig"/>
<property name="sv_parser_grammar" value="SV3_1a"/>
<property name="sv_preproc_grammar" value="SV3_1aPp"/>
<property name="sv_splitter_grammar" value="SV3_1aSplitter"/>
<property name="sv_parser_top_rule" value="top_level_rule"/>
<property name="sv_splitter_top_rule" value="source_text"/>
<property name="sv_preproc_top_rule" value="source_text"/>
<property name="antlr_tool_cpp_options" value="-Dlanguage=Cpp -o ../src/parser/"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Delete the generated files: *.cpp, *.h, *.tokens -->
<delete>
<fileset dir="." includes="*.cpp *.h *.tokens"/>
</delete>
</target>
<target name="compile_cpp" depends="init"
description="compile the Grammar files for C++">
<!-- Compile the G4 files for C++, only generates C++ files -->
<echo>Antlr Compile SV3_1aPpLexer.g4 SV3_1aPpParser.g4 SV3_1aLexer.g4 SV3_1aParser.g4 SV3_1aSplitterLexer.g4 SV3_1aSplitterParser.g4 </echo>
<java classpath="${antlr_tool_location}" classname="${antlr_tool_target}" fork="true" maxmemory="4096m" >
<arg line="${antlr_tool_cpp_options} SV3_1aPpLexer.g4 SV3_1aPpParser.g4 SV3_1aLexer.g4 SV3_1aParser.g4 SV3_1aSplitterLexer.g4 SV3_1aSplitterParser.g4" />
</java>
</target>
<target name="compile_java" depends="init"
description="Compile the Grammar files for Java for Testing purposes">
<!-- Compile the G4 files for Java target-->
<echo>Antlr Compile SV3_1aPpLexer.g4 SV3_1aPpParser.g4 SV3_1aLexer.g4 SV3_1aParser.g4 SV3_1aSplitterLexer.g4 SV3_1aSplitterParser.g4</echo>
<java classpath="${antlr_tool_location}" classname="${antlr_tool_target}">
<arg line=" SV3_1aPpLexer.g4 SV3_1aPpParser.g4 SV3_1aLexer.g4 SV3_1aParser.g4 SV3_1aSplitterLexer.g4 SV3_1aSplitterParser.g4" />
</java>
</target>
<target name="javac" description="Compile all Java files">
<!-- Java compile all .java files into .class -->
<echo>Compile all Java files</echo>
<mkdir dir="build"/>
<javac classpath="${antlr_tool_location}" srcdir="."
destdir="build" debug="true" includeantruntime="false"
fork="true"/>
</target>
<target name="clean"
description="clean up">
<!-- Delete the generated files: *.cpp, *.h, *.tokens *.java -->
<delete>
<fileset dir="." includes="*.cpp *.h *.tokens *.java"/>
<fileset dir="build"/>
</delete>
</target>
<target name="test_tokens">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_parser_grammar} ${sv_parser_top_rule} -tokens" />
</java>
</target>
<target name="test_gui">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_parser_grammar} ${sv_parser_top_rule} -gui" />
</java>
</target>
<target name="test_tree">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_parser_grammar} ${sv_parser_top_rule} -tree" />
</java>
</target>
<target name="test_pp_tokens">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_preproc_grammar} ${sv_preproc_top_rule} -tokens" />
</java>
</target>
<target name="test_pp_gui">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_preproc_grammar} ${sv_preproc_top_rule} -gui" />
</java>
</target>
<target name="test_pp_tree">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_preproc_grammar} ${sv_preproc_top_rule} -tree" />
</java>
</target>
<target name="test_split_tokens">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_splitter_grammar} ${sv_splitter_top_rule} -tokens" />
</java>
</target>
<target name="test_split_gui">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_splitter_grammar} ${sv_splitter_top_rule} -gui" />
</java>
</target>
<target name="test_split_tree">
<java classpath="${antlr_tool_location}:build" classname="${antlr_test_rig}">
<arg line="${sv_splitter_grammar} ${sv_splitter_top_rule} -tree" />
</java>
</target>
</project>