Ich möchte einen einfachen Internpreter in JavaScript/Node schreiben. Ich habe ein Hindernis, wenn es darum geht Token zu generieren.Erhalte Tokens von einem JavaScript-Code
var code = 'if (a > 2 && b<4) c = 10;';
code.match(/\W+/g)
// [" (", " > ", " && ", "<", ") ", ";"]
code.match(/\w+/g)
// ["if", "a", "2", "b", "4", "elo"]
Wie gezeigt, W+
lässt mich Sonderzeichen erhalten und w+
lässt mich Worte bekommen. Ich frage mich, wie diejenigen, die in einer Reihe, so etwas wie unten zu bekommen:
// ["if", "(", "a", ">", "2", "&&", "b", "<", "4", ")", "c", "=", "10", ";"]
'\ W +' ist extrem naiv, Rücksicht r '(! a + -1)', '/ \ w + | \ W + /' erzeugt '(! , a, + -, 1,) 'während die korrekte Tokenisierung ist' (,!, a, +, -1,) ' – georg
Sie können JS nicht mit regexp analysieren. Es hat nicht die erforderliche Parsing-Power. –
@torazaburo könnten Sie etwas besseres vorschlagen? –