]> git.saurik.com Git - cycript.git/blobdiff - Cycript.l.in
Factor common code out of FFI closure adapters.
[cycript.git] / Cycript.l.in
index 54724177d4d42759f8723ec1e899fe7d15ba65dd..c946c89c12084d66f53928f46adab28789b0ff5e 100644 (file)
@@ -83,6 +83,12 @@ typedef cy::parser::token tk;
     yylloc->columns(yyleng); \
 }
 
+#define M { \
+    if (yyextra->commented_) { \
+        I(comment, Comment(Y), tk::Comment, hi::Comment); \
+    } \
+}
+
 int H(char c) {
     if (c >= '0' && c <= '9')
         return c - '0';
@@ -147,12 +153,12 @@ XMLName {XMLNameStart}{XMLNamePart}*
 
 <RegExp>\/{RegularExpressionBody}\/{RegularExpressionFlags} L C I(literal, RegEx(Y), tk::RegularExpressionLiteral, hi::Constant);
 
-\/\/[^\n]* L
+\/\/[^\n]* L M
 
        /* http://ostermiller.org/findcomment.html */
        /* XXX: unify these two rules using !? */
 \/\*!([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/ V() C I(comment, Comment(Y), tk::Comment, hi::Comment);
-\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/ V(N)
+\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/ V(N) M
 
 @begin E4X
 <RegExp>"<>"      L F(tk::LeftRight, hi::Structure);
@@ -248,13 +254,20 @@ XMLName {XMLNameStart}{XMLNamePart}*
 @end
 
 @begin ObjectiveC
+"@encode"         L C F(tk::AtEncode, hi::Meta);
 "@end"            L C F(tk::AtEnd, hi::Meta);
 "@implementation" L C F(yyextra->no_.AtImplementation ? tk::AtImplementation_ : tk::AtImplementation, hi::Meta);
 "@import"         L C F(tk::AtImport, hi::Meta);
 "@selector"       L C F(tk::AtSelector, hi::Meta);
-"nil"             L C I(identifier, Identifier("nil"), tk::Identifier_, hi::Constant);
+
+"NULL"         L C I(identifier, Identifier("NULL"), tk::Identifier_, hi::Constant);
+"nil"          L C I(identifier, Identifier("nil"), tk::Identifier_, hi::Constant);
+"YES"          L C I(identifier, Identifier("YES"), tk::Identifier_, hi::Constant);
+"NO"           L C I(identifier, Identifier("NO"), tk::Identifier_, hi::Constant);
 @end
 
+"undefined"    L C I(identifier, Identifier("undefined"), tk::Identifier_, hi::Operator);
+
 "false"        L C I(false, False(), tk::False, hi::Constant);
 "null"         L C I(null, Null(), tk::Null, hi::Constant);
 "true"         L C I(true, True(), tk::True, hi::Constant);