2

私は非常に単純な言語を持っています。関数は、いくつかのコメント (セミコロンで始まる行で示される) の後に関数名 (単語の後に括弧が続く) が続き、その後に何かが続き、"q" で終わるものとして定義されます。parse-ez 関数は次のとおりです。

(defn routine []
 (multi* (regex #";.*")
 (regex #"(\w+)\(.*\).*" 1)
 (multi* (regex #"[^q].*"))
 (regex #"q.*"))

これは機能しますが、さまざまなパターンが一致する行番号を返したいです。これを行う方法はありますか、それとも独自のパーサーを作成する必要がありますか?

現状では、私の言語は単純なので、新しいパーサーを書くことはそれほど重要ではありませんが、複雑さが増すにつれて限界があります。

4

1 に答える 1

2

parse-ez には「line-pos」機能があります。それ使えないの?

行番号ドキュメント:

「パーサーの現在のカーソル位置を表す [行列] ベクトルを返します」

于 2013-05-30T11:28:15.073 に答える