mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Use local variable for frequently used fields in Lexer
This commit is contained in:
parent
a87d5f7685
commit
95d32a6c91
@ -125,7 +125,7 @@ public final class Lexer {
|
||||
length = input.length();
|
||||
|
||||
tokens = new ArrayList<>();
|
||||
buffer = new StringBuilder();
|
||||
buffer = new StringBuilder(40);
|
||||
row = col = 1;
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ public final class Lexer {
|
||||
}
|
||||
|
||||
private void tokenizeNumber() {
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
final Pos startPos = markPos();
|
||||
char current = peek(0);
|
||||
if (current == '0' && (peek(1) == 'x' || (peek(1) == 'X'))) {
|
||||
@ -206,7 +206,7 @@ public final class Lexer {
|
||||
}
|
||||
|
||||
private void tokenizeHexNumber(int skipChars) {
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
final Pos startPos = markPos();
|
||||
// Skip HEX prefix 0x or #
|
||||
for (int i = 0; i < skipChars; i++) skip();
|
||||
@ -248,7 +248,7 @@ public final class Lexer {
|
||||
}
|
||||
|
||||
final Pos startPos = markPos();
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
while (true) {
|
||||
if (!buffer.isEmpty() && !OPERATORS.containsKey(buffer.toString() + current)) {
|
||||
addToken(OPERATORS.get(buffer.toString()), startPos);
|
||||
@ -260,7 +260,7 @@ public final class Lexer {
|
||||
}
|
||||
|
||||
private void tokenizeWord() {
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
final Pos startPos = markPos();
|
||||
buffer.append(peek(0));
|
||||
char current = next();
|
||||
@ -280,7 +280,7 @@ public final class Lexer {
|
||||
private void tokenizeExtendedWord() {
|
||||
final Pos startPos = markPos();
|
||||
skip();// skip `
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
char current = peek(0);
|
||||
while (current != '`') {
|
||||
if (current == '\0') throw error("Reached end of file while parsing extended word.");
|
||||
@ -295,7 +295,7 @@ public final class Lexer {
|
||||
private void tokenizeText() {
|
||||
final Pos startPos = markPos();
|
||||
skip();// skip "
|
||||
clearBuffer();
|
||||
final var buffer = createBuffer();
|
||||
char current = peek(0);
|
||||
while (true) {
|
||||
if (current == '\\') {
|
||||
@ -372,8 +372,9 @@ public final class Lexer {
|
||||
return isOwnLangIdentifierStart(current) || isNumber(current);
|
||||
}
|
||||
|
||||
private void clearBuffer() {
|
||||
private StringBuilder createBuffer() {
|
||||
buffer.setLength(0);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
private Pos markPos() {
|
||||
|
Loading…
Reference in New Issue
Block a user