summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2016-11-01 17:48:55 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2016-11-01 22:21:15 +0100
commit9b8d8acf2745835616d23fee2afe4505aef147b1 (patch)
treee1be5c58b3bd4b7ce25e76c85c54c401975fbb80
parente6f8e4ceec38e9b1878fa4074c7db3751d7a38b1 (diff)
downloadvala-9b8d8acf2745835616d23fee2afe4505aef147b1.tar.gz
parser: Cache current token if possible
-rw-r--r--vala/valagenieparser.vala13
-rw-r--r--vala/valaparser.vala17
2 files changed, 16 insertions, 14 deletions
diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala
index 46c600016..b1a169391 100644
--- a/vala/valagenieparser.vala
+++ b/vala/valagenieparser.vala
@@ -100,9 +100,7 @@ public class Vala.Genie.Parser : CodeVisitor {
if (size <= 0) {
SourceLocation begin, end;
TokenType type = scanner.read_token (out begin, out end);
- tokens[index].type = type;
- tokens[index].begin = begin;
- tokens[index].end = end;
+ tokens[index] = { type, begin, end };
size = 1;
}
return (tokens[index].type != TokenType.EOF);
@@ -183,12 +181,14 @@ public class Vala.Genie.Parser : CodeVisitor {
}
string get_current_string () {
- return ((string) tokens[index].begin.pos).substring (0, (int) (tokens[index].end.pos - tokens[index].begin.pos));
+ var token = tokens[index];
+ return ((string) token.begin.pos).substring (0, (int) (token.end.pos - token.begin.pos));
}
string get_last_string () {
int last_index = (index + BUFFER_SIZE - 1) % BUFFER_SIZE;
- return ((string) tokens[last_index].begin.pos).substring (0, (int) (tokens[last_index].end.pos - tokens[last_index].begin.pos));
+ var token = tokens[last_index];
+ return ((string) token.begin.pos).substring (0, (int) (token.end.pos - token.begin.pos));
}
SourceReference get_src (SourceLocation begin) {
@@ -198,7 +198,8 @@ public class Vala.Genie.Parser : CodeVisitor {
}
SourceReference get_current_src () {
- return new SourceReference (scanner.source_file, tokens[index].begin, tokens[index].end);
+ var token = tokens[index];
+ return new SourceReference (scanner.source_file, token.begin, token.end);
}
void rollback (SourceLocation location) {
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index fc0abd142..48127eba0 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -90,9 +90,7 @@ public class Vala.Parser : CodeVisitor {
if (size <= 0) {
SourceLocation begin, end;
TokenType type = scanner.read_token (out begin, out end);
- tokens[index].type = type;
- tokens[index].begin = begin;
- tokens[index].end = end;
+ tokens[index] = { type, begin, end };
size = 1;
}
return (tokens[index].type != TokenType.EOF);
@@ -136,12 +134,14 @@ public class Vala.Parser : CodeVisitor {
}
string get_current_string () {
- return ((string) tokens[index].begin.pos).substring (0, (int) (tokens[index].end.pos - tokens[index].begin.pos));
+ var token = tokens[index];
+ return ((string) token.begin.pos).substring (0, (int) (token.end.pos - token.begin.pos));
}
string get_last_string () {
int last_index = (index + BUFFER_SIZE - 1) % BUFFER_SIZE;
- return ((string) tokens[last_index].begin.pos).substring (0, (int) (tokens[last_index].end.pos - tokens[last_index].begin.pos));
+ var token = tokens[last_index];
+ return ((string) token.begin.pos).substring (0, (int) (token.end.pos - token.begin.pos));
}
SourceReference get_src (SourceLocation begin) {
@@ -151,13 +151,14 @@ public class Vala.Parser : CodeVisitor {
}
SourceReference get_current_src () {
- return new SourceReference (scanner.source_file, tokens[index].begin, tokens[index].end);
+ var token = tokens[index];
+ return new SourceReference (scanner.source_file, token.begin, token.end);
}
SourceReference get_last_src () {
int last_index = (index + BUFFER_SIZE - 1) % BUFFER_SIZE;
-
- return new SourceReference (scanner.source_file, tokens[last_index].begin, tokens[last_index].end);
+ var token = tokens[last_index];
+ return new SourceReference (scanner.source_file, token.begin, token.end);
}
void rollback (SourceLocation location) {