]> git.saurik.com Git - cycript.git/blobdiff - Cycript.l.in
Merge adapter into callback, removing indirection.
[cycript.git] / Cycript.l.in
index 7ee7d60ab6419032f2206b81c8109dcde3635a86..4878a2550792ba493054a73fce362de830582e84 100644 (file)
@@ -1,5 +1,5 @@
 /* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2014  Jay Freeman (saurik)
+ * Copyright (C) 2009-2015  Jay Freeman (saurik)
 */
 
 /* GNU Affero General Public License, Version 3 {{{ */
@@ -29,7 +29,7 @@
 #pragma clang diagnostic ignored "-Wdeprecated-register"
 #endif
 
-#define YYLTYPE cy::location
+#define YYLTYPE CYLocation
 #include "Cycript.tab.hh"
 typedef cy::parser::token tk;
 
@@ -80,16 +80,16 @@ typedef cy::parser::token tk;
             left = yyleng - (nl - yytext) - 1; \
             nl = reinterpret_cast<const char *>(memchr(nl + 1, '\n', left)); \
         } while (nl != NULL); \
+        yylloc->step(); \
         yylloc->end.lines(lines); \
         yylloc->end.columns(left); \
-        yylloc->step(); \
         more \
     } else L \
 }
 
 #define L { \
     yylloc->step(); \
-    yylloc->columns(yyleng); \
+    yylloc->end.columns(yyleng); \
 }
 
 #define M { \
@@ -272,6 +272,7 @@ XMLName {XMLNameStart}{XMLNamePart}*
 "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);
+"extern"          L C I(identifier, Identifier("extern"), tk::Extern, hi::Type);
 @end
 
 @begin C
@@ -417,7 +418,7 @@ XMLName {XMLNameStart}{XMLNamePart}*
     I(string, String(value, local - value), tk::StringLiteral, hi::Constant);
 }
 
-\r?\n|\r|\xe2\x80[\xa8\xa9] yylloc->end.lines(); yylloc->step(); N
+\r?\n|\r|\xe2\x80[\xa8\xa9] yylloc->step(); yylloc->end.lines(); N
 
 [ \t] L