Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 14488)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 14489)
@@ -469,5 +469,5 @@
                     try {
                         final String val = ai.val instanceof Expression
-                                ? Optional.of(((Expression) ai.val).evaluate(new Environment())).map(Object::toString).orElse(null)
+                                ? Optional.ofNullable(((Expression) ai.val).evaluate(new Environment())).map(Object::toString).orElse(null)
                                 : ai.val instanceof String
                                 ? (String) ai.val
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 14488)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 14489)
@@ -166,5 +166,4 @@
 {
     < IDENT: ["a"-"z","A"-"Z","_"] ( ["a"-"z","A"-"Z","_","-","0"-"9"] )* >
-|   < EXTIDENT: <MINUS> <IDENT> >
 |   < UINT: ( ["0"-"9"] )+ >
 |   < STRING: "\"" ( [" ","!","#"-"[","]"-"~","\u0080"-"\uFFFF"] | "\\\"" | "\\\\" )*  "\"" >
@@ -284,5 +283,5 @@
 {
     (
-        (t=<PP_AND> | t=<PP_OR> | t=<PP_NOT> | t=<UINT> | t=<STRING> | t=<REGEX> | t=<LPAR> | t=<RPAR> | t=<COMMA> | t=<COLON> | t=<IDENT> | t=<EXTIDENT> | t=<PP_SOMETHING_ELSE>) { if (write) sb.append(t.image); }
+        (t=<PP_AND> | t=<PP_OR> | t=<PP_NOT> | t=<UINT> | t=<STRING> | t=<REGEX> | t=<LPAR> | t=<RPAR> | t=<COMMA> | t=<COLON> | t=<IDENT> | t=<PP_SOMETHING_ELSE>) { if (write) sb.append(t.image); }
         |
             pp_w1()
@@ -907,5 +906,5 @@
         )
     |
-        <EXTIDENT> w() <COLON> w() expression() <SEMICOLON> w()
+        <MINUS> <IDENT> w() <COLON> w() expression() <SEMICOLON> w()
     |
         key=<IDENT> w() <COLON> w()
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 14488)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 14489)
@@ -461,3 +461,20 @@
         assertFalse(condition.applies(new Environment(OsmUtils.createPrimitive("way name=fÓo"))));
     }
+
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/17053">Bug #17053</a>.
+     */
+    @Test
+    public void testTicket17053() {
+        MapCSSStyleSource sheet = new MapCSSStyleSource(
+            "way {\n" +
+            "    placement_offset: eval(\n" +
+            "        cond(prop(\"placement_value\")=\"right_of:1\",eval((prop(lane_width_forward_1)/2)-prop(lane_offset_forward_1)),\n" +
+            "        0\n" +
+            "        )\n" +
+            "       );\n" +
+            "}");
+        sheet.loadStyleSource();
+        assertTrue(sheet.getErrors().toString(), sheet.getErrors().isEmpty());
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 14488)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 14489)
@@ -83,5 +83,5 @@
         checkUrl(info, info.getAttributionLinkURL());
         String eula = info.getEulaAcceptanceRequired();
-        if(eula != null) {
+        if (eula != null) {
             checkUrl(info, eula.replaceAll("\\{lang\\}", ""));
         }
