X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/8b820c00ce6fbca72e14c4922c729289d76f8f8a..62f398e4aed5b34ee2bd8edff9fb3afa80d75e25:/Cycript.l.in diff --git a/Cycript.l.in b/Cycript.l.in index 759a4dd..40316ae 100644 --- a/Cycript.l.in +++ b/Cycript.l.in @@ -1,20 +1,20 @@ /* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2012 Jay Freeman (saurik) + * Copyright (C) 2009-2013 Jay Freeman (saurik) */ -/* GNU Lesser General Public License, Version 3 {{{ */ +/* GNU General Public License, Version 3 {{{ */ /* - * Cycript is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. + * Cycript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. * - * Cycript is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. + * Cycript is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU Lesser General Public License + * You should have received a copy of the GNU General Public License * along with Cycript. If not, see . **/ /* }}} */ @@ -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; \ @@ -41,7 +43,7 @@ typedef cy::parser::token tk; } while (false) #define A new($pool) -#define Y apr_pstrmemdup($pool, yytext, yyleng) +#define Y $pool.strmemdup(yytext, yyleng) #define I(type, Type, value, highlight) do { \ yylval->type ## _ = A CY ## Type; \ @@ -191,6 +193,7 @@ XMLName {XMLNameStart}{XMLNamePart}* @begin E4X ObjectiveC "@" L C F(tk::At, hi::Operator); +"#" L C F(tk::Pound, hi::Operator); @end "&" L C F(tk::Ampersand, hi::Operator); @@ -249,23 +252,32 @@ XMLName {XMLNameStart}{XMLNamePart}* "[" L C F(tk::OpenBracket, hi::Structure); "]" L C F(tk::CloseBracket, hi::Structure); +"@error" L C F(tk::AtError, hi::Error); + @begin Java "@class" L C F(tk::AtClass, hi::Meta); @end +@begin C +"typedef" L C I(identifier, Identifier("typedef"), tk::Typedef, hi::Meta); +@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); +"@import" L C F(tk::AtImport, hi::Special); "@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); +"YES" L C I(identifier, Identifier("YES"), tk::Yes, hi::Constant); +"NO" L C I(identifier, Identifier("NO"), tk::No, 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); +"SEL" L C I(identifier, Identifier("SEL"), tk::Identifier_, hi::Type); @end "undefined" L C I(identifier, Identifier("undefined"), tk::Identifier_, hi::Operator);