]> git.saurik.com Git - cycript.git/blobdiff - Cycript.l.in
Factored out the execution engine from the compiler.
[cycript.git] / Cycript.l.in
index cb2871d9d57f0d91b80d0e58b9610ae2709e3839..91e6a633827408d295324d0d8406543bcb5f7288 100644 (file)
@@ -37,7 +37,7 @@
 */
 /* }}} */
 
-// XXX: supposedly I will be screwed on very very long multi-line comments and need to replace these with a manual lexer. http://websrv.cs.fsu.edu/~engelen/courses/COP5621/Pr2.pdf
+/* XXX: supposedly I will be screwed on very very long multi-line comments and need to replace these with a manual lexer. http://websrv.cs.fsu.edu/~engelen/courses/COP5621/Pr2.pdf */
 
 %{
 #define YYLTYPE cy::location
@@ -107,7 +107,8 @@ int H(char c) {
     } else if (yyextra->size_ == 0) \
         value = YY_NULL; \
     else { \
-        size_t copy(std::min(size, yyextra->size_)); \
+        size_t copy(size); \
+        copy = (std::min(copy, yyextra->size_)); \
         memcpy(data, yyextra->data_, copy); \
         yyextra->data_ += copy; \
         yyextra->size_ -= copy; \
@@ -160,6 +161,7 @@ XMLName {XMLNameStart}{XMLNamePart}*
 <RegExp>\/{RegularExpressionBody}\/{RegularExpressionFlags} E("")
 
 \/\/[^\n]* L
+\/\*!(\n|[^\*]|\*[^/])*\*\/ V() C yylval->comment_ = new(yyextra->pool_) CYComment(apr_pstrmemdup(yyextra->pool_, yytext, yyleng)); return tk::Comment;
 \/\*(\n|[^\*]|\*[^/])*\*\/ V(N)
 
 @begin E4X
@@ -188,11 +190,14 @@ XMLName {XMLNameStart}{XMLNamePart}*
 @end
 
 @begin E4X
-"@"    L C return tk::At;
 "::"   L C return tk::ColonColon;
 ".."   L C return tk::PeriodPeriod;
 @end
 
+@begin E4X ObjectiveC
+"@"    L C return tk::At;
+@end
+
 "&"    L C return tk::Ampersand;
 "&&"   L C return tk::AmpersandAmpersand;
 "&="   L C return tk::AmpersandEqual;