X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/355cc1eb84453c116ec1b46baad03b7d5ba6d0da..a243b55800abc2899dfed50d915e065d9f4797f7:/Cycript.l.in?ds=sidebyside diff --git a/Cycript.l.in b/Cycript.l.in index 37707a6..ea140a8 100644 --- a/Cycript.l.in +++ b/Cycript.l.in @@ -33,7 +33,9 @@ typedef cy::parser::token tk; // do /not/ fold token to the return: this is a macro and the ordering is dependent #define F(value, highlight) do { \ int token(value); \ +@begin ObjectiveC yyextra->no_.AtImplementation = false; \ +@end yyextra->no_.Function = false; \ yyextra->no_.OpenBrace = false; \ yylval->highlight_ = highlight; \ @@ -83,6 +85,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 +155,12 @@ XMLName {XMLNameStart}{XMLNamePart}* \/{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 "<>" L F(tk::LeftRight, hi::Structure); @@ -248,6 +256,7 @@ 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); @@ -257,6 +266,10 @@ XMLName {XMLNameStart}{XMLNamePart}* "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); + +"bool" L C I(identifier, Identifier("bool"), tk::Identifier_, hi::Type); +"BOOL" L C I(identifier, Identifier("BOOL"), tk::Identifier_, hi::Type); +"id" L C I(identifier, Identifier("id"), tk::Identifier_, hi::Type); @end "undefined" L C I(identifier, Identifier("undefined"), tk::Identifier_, hi::Operator);