Files
kotlin-fork/compiler/frontend/buildLexer.xml
T
Andrey Breslav e50eb73fb1 Throw exceptions (not errors) from lexer
+ Add more data to the exception message
2014-05-27 18:17:46 +04:00

49 lines
1.9 KiB
XML

<project name="JetLexer" default="lexer">
<property name="home" value="${basedir}"/>
<property name="flex.base" value="${home}/../../dependencies/jflex"/>
<property name="out.dir" value="${basedir}/tmpout"/>
<macrodef name="flex">
<attribute name="flexfile"/>
<attribute name="destdir"/>
<attribute name="skeleton" default="${flex.base}/idea-flex.skeleton"/>
<sequential>
<delete dir="${out.dir}"/>
<mkdir dir="${out.dir}"/>
<java classname="JFlex.Main"
jvmargs="-Xmx512M"
fork="true"
failonerror="true">
<arg value="-sliceandcharat"/>
<arg value="-skel"/>
<arg value="@{skeleton}"/>
<arg value="-d"/>
<arg value="${out.dir}"/>
<arg value="@{flexfile}"/>
<classpath>
<pathelement location="${flex.base}/JFlex.jar"/>
</classpath>
</java>
<move todir="@{destdir}">
<fileset dir="${out.dir}">
<include name="*.java"/>
</fileset>
</move>
<delete dir="${out.dir}"/>
</sequential>
</macrodef>
<target name="lexer">
<flex flexfile="${home}/src/org/jetbrains/jet/lexer/Jet.flex"
destdir="${home}/src/org/jetbrains/jet/lexer/"/>
<!-- This is a hack, but we don't want to alter the skeleton we are using now, because being in sync with IDEA is more important-->
<replaceregexp file="${home}/src/org/jetbrains/jet/lexer/_JetLexer.java"
match="throw new KotlinLexerException\(message\);"
replace="throw new KotlinLexerException(message + &quot;\\\\n at '&quot; + yytext() + &quot;'\\\\n&quot; + zzBuffer);"/>
<flex flexfile="${home}/src/org/jetbrains/jet/kdoc/lexer/KDoc.flex"
destdir="${home}/src/org/jetbrains/jet/kdoc/lexer/"/>
</target>
</project>