mirror of
https://github.com/jamiebuilds/the-super-tiny-compiler.git
synced 2024-10-27 20:34:08 +00:00
fix infinite loop
This commit is contained in:
parent
4f7a85a9f8
commit
cbc5f013ca
@ -420,7 +420,7 @@ function tokenizer(input) {
|
||||
// Next we're going to check for a closing parenthesis. We do the same exact
|
||||
// thing as before: Check for a closing parenthesis, add a new token,
|
||||
// increment `current`, and `continue`.
|
||||
if (char === ')') {
|
||||
else if (char === ')') {
|
||||
tokens.push({
|
||||
type: 'paren',
|
||||
value: ')',
|
||||
@ -436,8 +436,7 @@ function tokenizer(input) {
|
||||
//
|
||||
// So here we're just going to test for existence and if it does exist we're
|
||||
// going to just `continue` on.
|
||||
let WHITESPACE = /\s/;
|
||||
if (WHITESPACE.test(char)) {
|
||||
else if (/\s/.test(char)) {
|
||||
current++;
|
||||
continue;
|
||||
}
|
||||
@ -451,8 +450,7 @@ function tokenizer(input) {
|
||||
// Only two separate tokens
|
||||
//
|
||||
// So we start this off when we encounter the first number in a sequence.
|
||||
let NUMBERS = /[0-9]/;
|
||||
if (NUMBERS.test(char)) {
|
||||
else if (/[0-9]/.test(char)) {
|
||||
|
||||
// We're going to create a `value` string that we are going to push
|
||||
// characters to.
|
||||
@ -480,7 +478,7 @@ function tokenizer(input) {
|
||||
// ^^^ ^^^ string tokens
|
||||
//
|
||||
// We'll start by checking for the opening quote:
|
||||
if (char === '"') {
|
||||
else if (char === '"') {
|
||||
// Keep a `value` variable for building up our string token.
|
||||
let value = '';
|
||||
|
||||
@ -511,13 +509,12 @@ function tokenizer(input) {
|
||||
// ^^^
|
||||
// Name token
|
||||
//
|
||||
let LETTERS = /[a-z]/i;
|
||||
if (LETTERS.test(char)) {
|
||||
else if (/[a-z]/i.test(char)) {
|
||||
let value = '';
|
||||
|
||||
// Again we're just going to loop through all the letters pushing them to
|
||||
// a value.
|
||||
while (LETTERS.test(char)) {
|
||||
while (char && /[a-z]/i.test(char)) {
|
||||
value += char;
|
||||
char = input[++current];
|
||||
}
|
||||
@ -526,17 +523,19 @@ function tokenizer(input) {
|
||||
tokens.push({ type: 'name', value });
|
||||
|
||||
continue;
|
||||
} else {
|
||||
current ++;
|
||||
}
|
||||
|
||||
// Finally if we have not matched a character by now, we're going to throw
|
||||
// an error and completely exit.
|
||||
throw new TypeError('I dont know what this character is: ' + char);
|
||||
// throw new TypeError('I dont know what this character is: ' + char);
|
||||
}
|
||||
|
||||
// Then at the end of our `tokenizer` we simply return the tokens array.
|
||||
return tokens;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ============================================================================
|
||||
* ヽ/❀o ل͜ o\ノ
|
||||
|
Loading…
Reference in New Issue
Block a user