Index: /applications/editors/josm/plugins/comfort0/build.xml
===================================================================
--- /applications/editors/josm/plugins/comfort0/build.xml	(revision 35282)
+++ /applications/editors/josm/plugins/comfort0/build.xml	(revision 35283)
@@ -15,3 +15,20 @@
     <import file="../build-common.xml"/>
 
+    <property name="javacc.home" location="../../core/tools"/>
+    <property name="parser.dir" location="src/net/simon04/comfort0/level0l"/>
+    <target name="javacc" depends="init" unless="javacc.notRequired">
+        <mkdir dir="${parser.dir}/parsergen"/>
+        <exec append="false" executable="java" failifexecutionfails="true">
+            <arg value="-cp"/>
+            <arg value="${javacc.home}/javacc.jar"/>
+            <arg value="javacc"/>
+            <arg value="-DEBUG_PARSER=false"/>
+            <arg value="-DEBUG_TOKEN_MANAGER=false"/>
+            <arg value="-JDK_VERSION=1.7"/>
+            <arg value="-GRAMMAR_ENCODING=UTF-8"/>
+            <arg value="-OUTPUT_DIRECTORY=${parser.dir}/parsergen"/>
+            <arg value="${parser.dir}/Level0LParser.jj"/>
+        </exec>
+    </target>
+
 </project>
Index: /applications/editors/josm/plugins/comfort0/src/net/simon04/comfort0/level0l/Level0LParser.jj
===================================================================
--- /applications/editors/josm/plugins/comfort0/src/net/simon04/comfort0/level0l/Level0LParser.jj	(revision 35283)
+++ /applications/editors/josm/plugins/comfort0/src/net/simon04/comfort0/level0l/Level0LParser.jj	(revision 35283)
@@ -0,0 +1,66 @@
+options {
+  STATIC = false;
+  OUTPUT_DIRECTORY = "parsergen";
+}
+
+PARSER_BEGIN(Level0LParser)
+package net.simon04.comfort0.level0l.parsergen;
+import org.openstreetmap.josm.data.osm.*;
+import org.openstreetmap.josm.data.coor.*;
+public class Level0LParser {
+}
+PARSER_END(Level0LParser)
+
+<DEFAULT> //HEADER
+SKIP: { " " }
+
+<DEFAULT> //HEADER
+TOKEN: {
+    <H_EOL: ("\n" | "\r" | "\r\n") >
+    | <H_ID: (["0"-"9"])+ >
+    | <NODE: "node" >
+    | <WAY: "way" >
+    | <RELATION: "relation" >
+    | <FLOAT: ("+" | "-")? (["0"-"9"])+ ("." (["0"-"9"])+)? >
+    | <COLON: ":" >
+    | <COMMA: "," >
+    | <COMMENT_START: "#"> : COMMENT
+}
+
+<COMMENT>
+SKIP: { < ~[] > }
+
+<COMMENT>
+TOKEN: {
+    <C_EOL: ("\n" | "\r" | "\r\n") > : DATA
+}
+
+<DATA>
+TOKEN: {
+    <D_EOL: ("\n" | "\r" | "\r\n") >
+    | <D_ID: (["0"-"9"])+ >
+    | <WY: "wy" >
+    | <ND: "nd" >
+    | <REL: "rel" >
+    | <EQ: "=" >
+    | <IDENT: ["a"-"z", "A"-"Z", "_"] (["a"-"z", "A"-"Z", "_", "-", "0"-"9"])* >
+}
+
+NodeData node():
+{
+    NodeData r;
+    Token id, lat, lon;
+}
+{
+    <NODE>
+    { r = new NodeData(); }
+    id=<H_ID>
+    { r.setId(Long.parseLong(id.image)); }
+    <COLON>
+    lat=<FLOAT>
+    <COMMA>
+    lon=<FLOAT>
+    { r.setCoor(new LatLon(Double.parseDouble(lat.image), Double.parseDouble(lon.image))); }
+    (<COMMENT_START> | <H_EOL>)
+    { return r; }
+}
Index: /applications/editors/josm/plugins/comfort0/test/unit/net/simon04/comfort0/level0l/parsergen/Level0LParserTest.java
===================================================================
--- /applications/editors/josm/plugins/comfort0/test/unit/net/simon04/comfort0/level0l/parsergen/Level0LParserTest.java	(revision 35283)
+++ /applications/editors/josm/plugins/comfort0/test/unit/net/simon04/comfort0/level0l/parsergen/Level0LParserTest.java	(revision 35283)
@@ -0,0 +1,20 @@
+package net.simon04.comfort0.level0l.parsergen;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.*;
+
+import java.io.StringReader;
+
+import org.junit.Test;
+import org.openstreetmap.josm.data.osm.NodeData;
+
+public class Level0LParserTest {
+    @Test
+    public void testNode() throws Exception {
+        final NodeData node = new Level0LParser(new StringReader("node 298884272: 54.0901447, 12.2516513\n")).node();
+        assertThat(node.getId(), is(298884272L));
+        assertThat(node.getCoor().lat(), is(54.0901447));
+        assertThat(node.getCoor().lon(), is(12.2516513));
+
+    }
+}
