Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 14480)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 14481)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.data.validation.tests;
 
-import static org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.FixCommand.evaluateObject;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -491,4 +490,6 @@
                         } else if (val != null && "group".equals(ai.key)) {
                             check.group = val;
+                        } else if (ai.key.startsWith("-")) {
+                            Logging.debug("Ignoring extension instruction: " + ai.key + ": " + ai.val);
                         } else {
                             throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + '!');
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 14480)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 14481)
@@ -166,4 +166,5 @@
 {
     < IDENT: ["a"-"z","A"-"Z","_"] ( ["a"-"z","A"-"Z","_","-","0"-"9"] )* >
+|   < EXTIDENT: <MINUS> <IDENT> >
 |   < UINT: ( ["0"-"9"] )+ >
 |   < STRING: "\"" ( [" ","!","#"-"[","]"-"~","\u0080"-"\uFFFF"] | "\\\"" | "\\\\" )*  "\"" >
@@ -283,5 +284,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=<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=<EXTIDENT> | t=<PP_SOMETHING_ELSE>) { if (write) sb.append(t.image); }
         |
             pp_w1()
@@ -906,4 +907,6 @@
         )
     |
+        <EXTIDENT> w() <COLON> w() expression() <SEMICOLON> w()
+    |
         key=<IDENT> w() <COLON> w()
         (
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 14480)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 14481)
@@ -220,4 +220,23 @@
     }
 
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/17053">Bug #17053</a>.
+     * @throws ParseException if a parsing error occurs
+     */
+    @Test
+    public void testTicket17053() throws ParseException {
+        final MapCSSTagChecker test = buildTagChecker(
+                "way[highway=cycleway][cycleway=track] {\n" +
+                "   throwWarning: tr(\"{0} with {1}\", \"{0.tag}\", \"{1.tag}\");\n" +
+                "   -osmoseItemClassLevel: \"3032/30328/2\";\n" +
+                "   -osmoseTags: list(\"tag\", \"highway\", \"cycleway\");\n" +
+                "   fixRemove: \"cycleway\";\n" +
+                "}");
+        assertEquals(1, test.checks.size());
+        TagCheck check = test.checks.get("test").iterator().next();
+        assertEquals(1, check.fixCommands.size());
+        assertEquals(2, check.rule.declaration.instructions.size());
+    }
+
     private void doTestNaturalWood(int ticket, String filename, int errorsCount, int setsCount) throws Exception {
         final MapCSSTagChecker test = buildTagChecker(
