0

最近、jQuery と JavaScript で小さな言語をエミュレートしようと試みていますが、問題だと思われるものに遭遇しました。私はすべてを完全に間違って解析している可能性があると思います。
コード内:

@name Testing
@inputs
@outputs
@persist 
@trigger 
print("Test")

文字列を分離して解析する現在の方法は、すべてのコードを行に分割し、検索と分割を使用してこの行配列を読み取ることです。たとえば、次のようなものを使用して名前を見つけます。

if(typeof lines[line] === 'undefined')
{
}
else
{
    if(lines[line].search('@name') == 0)
    {
        name = lines[line].split(' ')[1];
    }
}

しかし、解析の処理方法については、私が大きく間違っている可能性があると思います。
他の人がこのようなコード ブロックの解析をどのように処理しているかの例を読んでいると、私のようにブロックを行に分割するのではなく、ブロック全体を解析しているように見えました。問題は、このようなものを解析するための適切で従来の方法は何か、そしてこのようなものを解析するためにそれをどのように使用することをお勧めしますか?

4

2 に答える 2

0

次のような単純なケースでは、正規表現が最適なツールです。

matches = code.match(/@name\s+(\w+)/)
name = matches[1]

「実際の」プログラミング言語を解析するには、正規表現は十分に強力ではないため、手書きまたはPEGなどのツールで自動生成されたパーサーが必要です。

于 2013-07-13T21:31:28.897 に答える