| <project name="KotlinLexer" default="lexer"> |
| <property name="home" value="${basedir}"/> |
| <property name="builddir" value="${basedir}/build"/> |
| <property name="flex.classpath" value=""/> |
| <property name="out.dir" value="${builddir}/tmpout"/> |
| |
| <macrodef name="flex"> |
| <attribute name="flexfile"/> |
| <attribute name="destdir"/> |
| <attribute name="skeleton" default="${builddir}/idea-flex.skeleton"/> |
| <sequential> |
| <delete dir="${out.dir}"/> |
| <mkdir dir="${out.dir}"/> |
| <java classname="jflex.Main" |
| jvmargs="-Xmx512M" |
| fork="true" |
| failonerror="true"> |
| <arg value="-skel"/> |
| <arg value="@{skeleton}"/> |
| <arg value="-d"/> |
| <arg value="${out.dir}"/> |
| <arg value="@{flexfile}"/> |
| <classpath> |
| <pathelement path="${flex.classpath}"/> |
| </classpath> |
| </java> |
| <move todir="@{destdir}"> |
| <fileset dir="${out.dir}"> |
| <include name="*.java"/> |
| </fileset> |
| </move> |
| <delete dir="${out.dir}"/> |
| </sequential> |
| </macrodef> |
| |
| <target name="check-idea-flex.skeleton.exists"> |
| <available file="${builddir}/idea-flex.skeleton" property="skeleton.exists"/> |
| </target> |
| |
| <target name="get-idea-flex.skeleton.if.not.exists" depends="check-idea-flex.skeleton.exists" unless="skjeleton.exisits"> |
| <get src="https://raw.github.com/JetBrains/intellij-community/master/tools/lexer/idea-flex.skeleton" |
| dest="${builddir}/idea-flex.skeleton" usetimestamp="true"/> |
| </target> |
| |
| <target name="lexer" depends="get-idea-flex.skeleton.if.not.exists"> |
| <flex flexfile="${home}/src/org/jetbrains/kotlin/lexer/Kotlin.flex" |
| destdir="${home}/src/org/jetbrains/kotlin/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/kotlin/lexer/_JetLexer.java" |
| match="throw new KotlinLexerException\(message\);" |
| replace="throw new KotlinLexerException(message + "\\\\n at '" + yytext() + "'\\\\n" + zzBuffer);"/> |
| |
| <flex flexfile="${home}/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex" |
| destdir="${home}/src/org/jetbrains/kotlin/kdoc/lexer/"/> |
| </target> |
| </project> |