JavaScript/Nodeで簡単なインタープリタを作成したいと思います。私は、トークンを生成するときには障害があります。示されているようにJavaScriptコードからトークンを取得
var code = 'if (a > 2 && b<4) c = 10;';
code.match(/\W+/g)
// [" (", " > ", " && ", "<", ") ", ";"]
code.match(/\w+/g)
// ["if", "a", "2", "b", "4", "elo"]
、W+
は私が特殊文字を取得することができますし、w+
は私が単語を取得することができます。私は以下のように1列のもの、何かを取得する方法を疑問に思う:示されているように
// ["if", "(", "a", ">", "2", "&&", "b", "<", "4", ")", "c", "=", "10", ";"]
'\ W +'は非常に素朴ですが、 '/ \ w + | \ W + /'は '(!a + -1)'を生成します。正しいトークン化は '(、!、a、+、-1、)' – georg
regexpでJSを解析することはできません。それは必要な解析能力を持たない。 –
@torazaburoあなたは何か良いことを提案できますか? –