finish math parser

This commit is contained in:
2025-02-05 23:04:53 +01:00
parent 69edf86b63
commit 5f7c1ca61a
2 changed files with 11 additions and 1 deletions

View File

@@ -197,7 +197,7 @@ function parseNumbers(tokens: (Token | ASTNode)[]): (Token | ASTNode)[] {
nextNextToken as NumberToken
]);
tokens.splice(i, 3, numberNode);
i += 3;
i += 2;
continue;
} else {
// it is a regular number
@@ -247,6 +247,11 @@ function parseGroups(tokens: (Token | ASTNode)[]): (Token | ASTNode)[] {
for (const [start, end] of parenthesisPairs) {
const groupNode = GroupNode.fromTokens(tokens.slice(start + 1, end));
tokens.splice(start, end - start + 1, groupNode);
// update pairs after splice
for (let i = 0; i < parenthesisPairs.length; i++) {
const [start2, end2] = parenthesisPairs[i];
parenthesisPairs[i] = [start2 - (end - start), end2 - (end - start)];
}
}
return tokens;
@@ -293,6 +298,7 @@ function parseMultDiv(tokens: (Token | ASTNode)[]): (Token | ASTNode)[] {
const operator = token.value as OperatorChars;
const operatorNode = new OperatorNode(operator, left, right);
tokens.splice(i - 1, 3, operatorNode);
continue;
}
i++;
}
@@ -316,6 +322,7 @@ function parseAddSub(tokens: (Token | ASTNode)[]): (Token | ASTNode)[] {
const operator = token.value as OperatorChars;
const operatorNode = new OperatorNode(operator, left, right);
tokens.splice(i - 1, 3, operatorNode);
continue;
}
i++;
}