]> git.saurik.com Git - cycript.git/blobdiff - Cycript.l.in
Prefer __NSCFBoolean to non-__ for iOS compatibility.
[cycript.git] / Cycript.l.in
index 141e8466afb96c9d98d77d2e9d995c6c58e96ab8..a3aed14629a909716eb0f9589ee7a9b89cbf3e4c 100644 (file)
@@ -30,12 +30,14 @@ typedef cy::parser::token tk;
 
 #define YY_EXTRA_TYPE CYDriver *
 
+// do /not/ fold token to the return: this is a macro and the ordering is dependent
 #define F(value, highlight) do { \
+    int token(value); \
     yyextra->no_.AtImplementation = false; \
     yyextra->no_.Function = false; \
     yyextra->no_.OpenBrace = false; \
     yylval->highlight_ = highlight; \
-    return value; \
+    return token; \
 } while (false)
 
 #define A new($pool)
@@ -250,6 +252,11 @@ XMLName {XMLNameStart}{XMLNamePart}*
 "@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);
+
+"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
 
 "false"        L C I(false, False(), tk::False, hi::Constant);