Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.java	(revision 3970)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.java	(revision 3971)
@@ -961,6 +961,6 @@
     FunctionExpression fn;
     Object lit;
-    if (jj_2_7(2)) {
-      // both function and identifier start with an identifier
+    if (jj_2_7(3)) {
+      // both function and identifier start with an identifier (+ optional whitespace)
               fn = function();
                         {if (true) return fn;}
@@ -1171,5 +1171,5 @@
   }
 
-  private boolean jj_3R_40() {
+  private boolean jj_3R_41() {
     if (jj_scan_token(CARET)) return true;
     if (jj_scan_token(EQUAL)) return true;
@@ -1177,5 +1177,5 @@
   }
 
-  private boolean jj_3R_39() {
+  private boolean jj_3R_40() {
     if (jj_scan_token(TILDE)) return true;
     if (jj_scan_token(EQUAL)) return true;
@@ -1190,15 +1190,15 @@
   }
 
-  private boolean jj_3R_58() {
+  private boolean jj_3R_59() {
     if (jj_3R_28()) return true;
     return false;
   }
 
+  private boolean jj_3R_39() {
+    if (jj_scan_token(EQUAL)) return true;
+    return false;
+  }
+
   private boolean jj_3R_38() {
-    if (jj_scan_token(EQUAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_37() {
     if (jj_scan_token(EXCLAMATION)) return true;
     if (jj_scan_token(EQUAL)) return true;
@@ -1206,5 +1206,5 @@
   }
 
-  private boolean jj_3R_36() {
+  private boolean jj_3R_37() {
     if (jj_scan_token(REGEX)) return true;
     return false;
@@ -1214,6 +1214,4 @@
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_37()) {
-    jj_scanpos = xsp;
     if (jj_3R_38()) {
     jj_scanpos = xsp;
@@ -1224,5 +1222,7 @@
     if (jj_3R_41()) {
     jj_scanpos = xsp;
-    if (jj_3R_42()) return true;
+    if (jj_3R_42()) {
+    jj_scanpos = xsp;
+    if (jj_3R_43()) return true;
     }
     }
@@ -1234,13 +1234,13 @@
     if (jj_3_3()) {
     jj_scanpos = xsp;
-    if (jj_3R_43()) {
-    jj_scanpos = xsp;
-    if (jj_3R_44()) return true;
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_55() {
+    if (jj_3R_44()) {
+    jj_scanpos = xsp;
+    if (jj_3R_45()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_56() {
     if (jj_scan_token(COLON)) return true;
     if (jj_scan_token(IDENT)) return true;
@@ -1248,15 +1248,15 @@
   }
 
-  private boolean jj_3R_56() {
+  private boolean jj_3R_57() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_73()) {
-    jj_scanpos = xsp;
-    if (jj_3R_74()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_73() {
+    if (jj_3R_74()) {
+    jj_scanpos = xsp;
+    if (jj_3R_75()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_74() {
     if (jj_scan_token(IDENT)) return true;
     return false;
@@ -1267,5 +1267,5 @@
     if (jj_scan_token(TILDE)) return true;
     if (jj_3R_14()) return true;
-    if (jj_3R_36()) return true;
+    if (jj_3R_37()) return true;
     return false;
   }
@@ -1277,5 +1277,5 @@
 
   private boolean jj_3R_27() {
-    if (jj_3R_50()) return true;
+    if (jj_3R_51()) return true;
     return false;
   }
@@ -1308,5 +1308,5 @@
 
   private boolean jj_3R_82() {
-    if (jj_3R_54()) return true;
+    if (jj_3R_55()) return true;
     return false;
   }
@@ -1317,5 +1317,5 @@
   }
 
-  private boolean jj_3R_75() {
+  private boolean jj_3R_76() {
     Token xsp;
     xsp = jj_scanpos;
@@ -1336,5 +1336,5 @@
   }
 
-  private boolean jj_3R_54() {
+  private boolean jj_3R_55() {
     if (jj_scan_token(STRING)) return true;
     return false;
@@ -1346,15 +1346,15 @@
   }
 
-  private boolean jj_3R_49() {
+  private boolean jj_3R_50() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_57()) {
-    jj_scanpos = xsp;
-    if (jj_3R_58()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_57() {
+    if (jj_3R_58()) {
+    jj_scanpos = xsp;
+    if (jj_3R_59()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_58() {
     if (jj_scan_token(MINUS)) return true;
     if (jj_3R_28()) return true;
@@ -1384,5 +1384,5 @@
   }
 
-  private boolean jj_3R_80() {
+  private boolean jj_3R_34() {
     if (jj_3R_19()) return true;
     Token xsp;
@@ -1404,16 +1404,16 @@
   }
 
-  private boolean jj_3R_35() {
+  private boolean jj_3R_36() {
     if (jj_scan_token(IDENT)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_55()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_34() {
-    if (jj_3R_54()) return true;
+      if (jj_3R_56()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_35() {
+    if (jj_3R_55()) return true;
     return false;
   }
@@ -1422,7 +1422,7 @@
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_34()) {
-    jj_scanpos = xsp;
-    if (jj_3R_35()) return true;
+    if (jj_3R_35()) {
+    jj_scanpos = xsp;
+    if (jj_3R_36()) return true;
     }
     return false;
@@ -1436,5 +1436,5 @@
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_80()) jj_scanpos = xsp;
+    if (jj_3R_34()) jj_scanpos = xsp;
     if (jj_scan_token(RPAR)) return true;
     return false;
@@ -1457,5 +1457,5 @@
   private boolean jj_3R_26() {
     if (jj_scan_token(MINUS)) return true;
-    if (jj_3R_50()) return true;
+    if (jj_3R_51()) return true;
     return false;
   }
@@ -1471,5 +1471,5 @@
   }
 
-  private boolean jj_3R_60() {
+  private boolean jj_3R_61() {
     if (jj_scan_token(LPAR)) return true;
     if (jj_3R_18()) return true;
@@ -1479,10 +1479,10 @@
   }
 
-  private boolean jj_3R_59() {
-    if (jj_3R_75()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_50() {
+  private boolean jj_3R_60() {
+    if (jj_3R_76()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_51() {
     if (jj_scan_token(UINT)) return true;
     return false;
@@ -1494,43 +1494,51 @@
   }
 
-  private boolean jj_3R_52() {
+  private boolean jj_3R_53() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_7()) {
     jj_scanpos = xsp;
-    if (jj_3R_59()) {
-    jj_scanpos = xsp;
-    if (jj_3R_60()) return true;
-    }
-    }
+    if (jj_3R_60()) {
+    jj_scanpos = xsp;
+    if (jj_3R_61()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_73() {
+    if (jj_scan_token(QUESTION)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
+    if (jj_scan_token(COLON)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
     return false;
   }
 
   private boolean jj_3R_72() {
-    if (jj_scan_token(QUESTION)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
-    if (jj_scan_token(COLON)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_71() {
     if (jj_scan_token(PIPE)) return true;
     if (jj_scan_token(PIPE)) return true;
     if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_70() {
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_71() {
     if (jj_scan_token(AMPERSAND)) return true;
     if (jj_scan_token(AMPERSAND)) return true;
     if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_70() {
+    if (jj_scan_token(LESS)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1538,12 +1546,4 @@
 
   private boolean jj_3R_69() {
-    if (jj_scan_token(LESS)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_68() {
     if (jj_scan_token(EQUAL)) return true;
     Token xsp;
@@ -1551,5 +1551,13 @@
     if (jj_scan_token(22)) jj_scanpos = xsp;
     if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_68() {
+    if (jj_scan_token(GREATER)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1557,7 +1565,15 @@
 
   private boolean jj_3R_67() {
-    if (jj_scan_token(GREATER)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_scan_token(LESS_EQUAL)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_80() {
+    if (jj_scan_token(SLASH)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1565,7 +1581,7 @@
 
   private boolean jj_3R_66() {
-    if (jj_scan_token(LESS_EQUAL)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_scan_token(GREATER_EQUAL)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1573,7 +1589,7 @@
 
   private boolean jj_3R_79() {
-    if (jj_scan_token(SLASH)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_scan_token(MINUS)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1581,15 +1597,17 @@
 
   private boolean jj_3R_65() {
-    if (jj_scan_token(GREATER_EQUAL)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
+    Token xsp;
+    if (jj_3R_80()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_80()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
   private boolean jj_3R_78() {
-    if (jj_scan_token(MINUS)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_scan_token(STAR)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1607,7 +1625,7 @@
 
   private boolean jj_3R_77() {
-    if (jj_scan_token(STAR)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_scan_token(PLUS)) return true;
+    if (jj_3R_18()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1624,9 +1642,41 @@
   }
 
-  private boolean jj_3R_76() {
-    if (jj_scan_token(PLUS)) return true;
-    if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
+  private boolean jj_3R_54() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_62()) {
+    jj_scanpos = xsp;
+    if (jj_3R_63()) {
+    jj_scanpos = xsp;
+    if (jj_3R_64()) {
+    jj_scanpos = xsp;
+    if (jj_3R_65()) {
+    jj_scanpos = xsp;
+    if (jj_3R_66()) {
+    jj_scanpos = xsp;
+    if (jj_3R_67()) {
+    jj_scanpos = xsp;
+    if (jj_3R_68()) {
+    jj_scanpos = xsp;
+    if (jj_3R_69()) {
+    jj_scanpos = xsp;
+    if (jj_3R_70()) {
+    jj_scanpos = xsp;
+    if (jj_3R_71()) {
+    jj_scanpos = xsp;
+    if (jj_3R_72()) {
+    jj_scanpos = xsp;
+    if (jj_3R_73()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
@@ -1642,60 +1692,10 @@
   }
 
-  private boolean jj_3R_53() {
+  private boolean jj_3R_33() {
+    if (jj_3R_53()) return true;
+    if (jj_3R_18()) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_61()) {
-    jj_scanpos = xsp;
-    if (jj_3R_62()) {
-    jj_scanpos = xsp;
-    if (jj_3R_63()) {
-    jj_scanpos = xsp;
-    if (jj_3R_64()) {
-    jj_scanpos = xsp;
-    if (jj_3R_65()) {
-    jj_scanpos = xsp;
-    if (jj_3R_66()) {
-    jj_scanpos = xsp;
-    if (jj_3R_67()) {
-    jj_scanpos = xsp;
-    if (jj_3R_68()) {
-    jj_scanpos = xsp;
-    if (jj_3R_69()) {
-    jj_scanpos = xsp;
-    if (jj_3R_70()) {
-    jj_scanpos = xsp;
-    if (jj_3R_71()) {
-    jj_scanpos = xsp;
-    if (jj_3R_72()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_61() {
-    Token xsp;
-    if (jj_3R_76()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_76()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_33() {
-    if (jj_3R_52()) return true;
-    if (jj_3R_18()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_53()) jj_scanpos = xsp;
+    if (jj_3R_54()) jj_scanpos = xsp;
     return false;
   }
@@ -1704,5 +1704,5 @@
     if (jj_scan_token(MINUS)) return true;
     if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1712,5 +1712,5 @@
     if (jj_scan_token(EXCLAMATION)) return true;
     if (jj_3R_18()) return true;
-    if (jj_3R_52()) return true;
+    if (jj_3R_53()) return true;
     if (jj_3R_18()) return true;
     return false;
@@ -1760,10 +1760,10 @@
   }
 
+  private boolean jj_3R_49() {
+    if (jj_scan_token(LESS)) return true;
+    return false;
+  }
+
   private boolean jj_3R_48() {
-    if (jj_scan_token(LESS)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_47() {
     if (jj_scan_token(LESS_EQUAL)) return true;
     return false;
@@ -1781,20 +1781,20 @@
   }
 
+  private boolean jj_3R_47() {
+    if (jj_scan_token(GREATER)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_45() {
+    if (jj_3R_57()) return true;
+    return false;
+  }
+
   private boolean jj_3R_46() {
-    if (jj_scan_token(GREATER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_44() {
-    if (jj_3R_56()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_45() {
     if (jj_scan_token(GREATER_EQUAL)) return true;
     return false;
   }
 
-  private boolean jj_3R_51() {
+  private boolean jj_3R_52() {
     if (jj_scan_token(COMMENT_START)) return true;
     if (jj_scan_token(COMMENT_END)) return true;
@@ -1802,11 +1802,11 @@
   }
 
-  private boolean jj_3R_43() {
-    if (jj_3R_49()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_74() {
-    if (jj_3R_54()) return true;
+  private boolean jj_3R_44() {
+    if (jj_3R_50()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_75() {
+    if (jj_3R_55()) return true;
     return false;
   }
@@ -1817,5 +1817,5 @@
     if (jj_scan_token(9)) {
     jj_scanpos = xsp;
-    if (jj_3R_51()) return true;
+    if (jj_3R_52()) return true;
     }
     return false;
@@ -1825,16 +1825,16 @@
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_45()) {
-    jj_scanpos = xsp;
     if (jj_3R_46()) {
     jj_scanpos = xsp;
     if (jj_3R_47()) {
     jj_scanpos = xsp;
-    if (jj_3R_48()) return true;
+    if (jj_3R_48()) {
+    jj_scanpos = xsp;
+    if (jj_3R_49()) return true;
     }
     }
     }
     if (jj_3R_14()) return true;
-    if (jj_3R_49()) return true;
+    if (jj_3R_50()) return true;
     return false;
   }
@@ -1854,5 +1854,5 @@
   }
 
-  private boolean jj_3R_42() {
+  private boolean jj_3R_43() {
     if (jj_scan_token(STAR)) return true;
     if (jj_scan_token(EQUAL)) return true;
@@ -1860,5 +1860,5 @@
   }
 
-  private boolean jj_3R_41() {
+  private boolean jj_3R_42() {
     if (jj_scan_token(DOLLAR)) return true;
     if (jj_scan_token(EQUAL)) return true;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj	(revision 3970)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj	(revision 3971)
@@ -496,5 +496,5 @@
 }
 {
-    LOOKAHEAD(2) // both function and identifier start with an identifier
+    LOOKAHEAD(3) // both function and identifier start with an identifier (+ optional whitespace)
         fn=function() { return fn; }
     |
