私は非常に単純な言語を持っています。関数は、いくつかのコメント (セミコロンで始まる行で示される) の後に関数名 (単語の後に括弧が続く) が続き、その後に何かが続き、"q" で終わるものとして定義されます。parse-ez 関数は次のとおりです。
(defn routine []
(multi* (regex #";.*")
(regex #"(\w+)\(.*\).*" 1)
(multi* (regex #"[^q].*"))
(regex #"q.*"))
これは機能しますが、さまざまなパターンが一致する行番号を返したいです。これを行う方法はありますか、それとも独自のパーサーを作成する必要がありますか?
現状では、私の言語は単純なので、新しいパーサーを書くことはそれほど重要ではありませんが、複雑さが増すにつれて限界があります。