コード内の RPAREN を探す最良の方法は何ですか? たとえば、次の擬似コードがあります。
if(a && (b || "c)"))
| ^---------^| CASE A
^----------------^ CASE B
たとえば、最初の LPAREN を考えると、最後の RPAREN と一致する必要があります (ケース B)。2 番目の LPAREN を考慮すると、最後の 1 つの RPAREN と一致する必要があります (ケース A)。
"C)"
RPAREN を含む文字列がありますが、大文字と小文字を区別する必要があることに注意してください。
ええと... 正規表現について考えますが、それは非常に複雑になると思います(一致する文字列、正規表現が必要であり、RPARENなどを含めることができると別の人が考えることに注意してください)。次に、(コードを介して)手動スキャンを使用して各部分を検出することを考えます(手動正規表現のように)。
私が構築しているコード(独自のプログラミング言語)を解析するためにそれが必要です。そして、高速化するためにいくつかのコードを読み取ることを無視したいと思います。
例えば:
function a() { return 1; }
function b() { return 2; }
alert(b());
この場合、決して使用されないb()
ため、解析するだけで済みます。a()
したがって、スターター{
でスキャンし、実際の まで無視します (ただし、保存します) }
。関数が使用されている場合は、解析されます。
私の疑問:
- 正規表現または手動コード?
- それは良いことですか、それとも悪いことですか?パーサーの速度を向上させるのに役立つコードが使用されていない場合は、コードを無視しますか?
- トピック外: パーサーを高速化するためのヒントはありますか? おそらく、言語コードをコンピュータ コード (オペコード???) と共に保存する「事前に解析された」ファイルですか?