Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(705)

Unified Diff: src/lexer/lexer-shell.cc

Issue 26764004: Invoke generated lexer along with baseline lexer to compare results. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/lexer/lexer.re ('K') | « src/lexer/lexer.re ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/lexer/lexer-shell.cc
diff --git a/src/lexer/lexer-shell.cc b/src/lexer/lexer-shell.cc
index 71ab3176cd7fd7bde6adb9582a70ba65460442cc..bdf8ac0540685f0e0c9d5edd94022507252bd2c7 100644
--- a/src/lexer/lexer-shell.cc
+++ b/src/lexer/lexer-shell.cc
@@ -42,6 +42,7 @@
#include "scopeinfo.h"
#include "string-stream.h"
#include "scanner.h"
+#include "lexer.h"
using namespace v8::internal;
@@ -84,12 +85,11 @@ class BaselineScanner {
delete unicode_cache_;
}
- Token::Value Next() {
- return scanner_->Next();
- }
-
- Scanner::Location Location() {
- return scanner_->location();
+ Token::Value Next(int* beg_pos, int* end_pos) {
+ Token::Value res = scanner_->Next();
+ *beg_pos = scanner_->location().beg_pos;
+ *end_pos = scanner_->location().end_pos;
+ return res;
}
private:
@@ -99,14 +99,6 @@ class BaselineScanner {
};
-class ExperimentalScanner {
- explicit ExperimentalScanner(const char* fname);
- ~ExperimentalScanner();
- Token::Value Next();
- Scanner::Location Location();
-};
-
-
int main(int argc, char* argv[]) {
v8::V8::InitializeICU();
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
@@ -121,13 +113,28 @@ int main(int argc, char* argv[]) {
Isolate* isolate = Isolate::Current();
HandleScope handle_scope(isolate);
BaselineScanner baseline(argv[1], isolate);
- Token::Value current;
- while ((current = baseline.Next()) != Token::EOS) {
- printf("%11s => (%d, %d)\n",
- Token::Name(current),
- baseline.Location().beg_pos,
- baseline.Location().end_pos);
- }
+ ExperimentalScanner experimental(argv[1]);
+ Token::Value expected_token, actual_token;
+ int expected_beg, expected_end, actual_beg, actual_end;
+ do {
+ expected_token = baseline.Next(&expected_beg, &expected_end);
+ actual_token = experimental.Next(&actual_beg, &actual_end);
+ printf("=> %11s at (%d, %d)\n",
+ Token::Name(actual_token),
+ actual_beg, actual_end);
+ if (expected_token != actual_token ||
+ expected_beg != actual_beg ||
+ expected_end != actual_end) {
+ printf("MISMATCH:\n");
+ printf("Expected: %s at (%d, %d)\n",
+ Token::Name(expected_token),
+ expected_beg, expected_end);
+ printf("Actual: %s at (%d, %d)\n",
+ Token::Name(actual_token),
+ actual_beg, actual_end);
+ return 1;
+ }
+ } while (actual_token != Token::EOS);
}
}
v8::V8::Dispose();
« src/lexer/lexer.re ('K') | « src/lexer/lexer.re ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698