Bonjour,
Récemment, j’ai fait un lexer, voici le code :
const tokenTypes = [
{ regex: /^\+/, tokenType: 'OP_ADD' },
{ regex: /^\-/, tokenType: 'OP_MIN' },
{ regex: /^\*/, tokenType: 'OP_MUL' },
{ regex: /^\//, tokenType: 'OP_DIV' },
{ regex: /^\d+/, tokenType: 'NUMBER' }
];
function getTokens(input) {
input = input.replace(/\s/g, '')
console.log(input)
let tokens = [];
let findToken = false;
let match;
let i;
let numTokenTypes = tokenTypes.length;
do {
for (i = 0; i < numTokenTypes; i++) {
match = tokenTypes[i].regex.exec(input);
if (match) {
tokens.push({ type: tokenTypes[i].tokenType, value: match[0]});
input = input.substring(match[0].length);
findToken = true;
break;
}
}
} while (input.length > 0 && findToken);
return tokens;
}
console.log(getTokens("4 / 2"))
Désormais, j’aimerais faire un parser histoire de faire l’opération correctement mais je ne sais pas comment m’y prendre.
Merci d’avance.
Bonne fin de journée !
+0
-0