X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/aa82b83bc1cf1a31523f5ca3e3c7e44b34c8d72c..fb486b846b9e31c15344c3bd6314b8fdd54aad0b:/Cycript.l.in?ds=inline diff --git a/Cycript.l.in b/Cycript.l.in index 0397b14..798e354 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,25 +252,34 @@ 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); +"unsigned" L C I(identifier, Identifier("unsigned"), tk::Unsigned, hi::Type); +"signed" L C I(identifier, Identifier("signed"), tk::Signed, hi::Type); +@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);