]> git.saurik.com Git - cycript.git/commitdiff
Support tokenization errors.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 1 Oct 2009 21:30:23 +0000 (21:30 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 1 Oct 2009 21:30:23 +0000 (21:30 +0000)
Application.mm
Cycript.l

index 1739471a9ac064393e7ad1194d9c3133828cf797..56a3cc1010477d4404f6bd51d166992cd97098f3 100644 (file)
@@ -65,7 +65,7 @@ int main(int argc, const char *argv[]) {
         driver.data_ = command.c_str();
         driver.size_ = command.size();
 
-        if (parser.parse() != 0) {
+        if (parser.parse() != 0 || !driver.errors_.empty()) {
             for (CYDriver::Errors::const_iterator i(driver.errors_.begin()); i != driver.errors_.end(); ++i) {
                 cy::position begin(i->location_.begin);
                 if (begin.line != lines.size() || begin.column - 1 != lines.back().size()) {
index 13ae15e399f5526e5aff6eb9098979ec14baf374..4a5440346d7664702fa7e41a408e717d9cd59d5c 100644 (file)
--- a/Cycript.l
+++ b/Cycript.l
@@ -196,7 +196,14 @@ Escape   \\[\\'"bfnrtv]|\\0|\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}
 
 [ \t] L
 <<EOF>> L yyterminate();
-. yyterminate();
+
+. {
+    CYDriver::Error error;
+    error.location_ = *yylloc;
+    error.message_ = "syntax error, unknown token";
+    yyextra->errors_.push_back(error);
+    yyterminate();
+}
 
 %%