変換する PEGjs ルールを作成しようとしています
Return _a_b_c_.
に
Return <>a_b_c</>.
私の文法は
root = atoms:atom+
{ return atoms.join(''); }
atom = variable
/ normalText
variable = "_" first:variableSegment rest:$("_" variableSegment)* "_"
{ return '<>' + first + rest + '</>'; }
variableSegment = $[^\n_ ]+
normalText = $[^\n]
これは
Return _a_b_c_ .
と
Return _a_b_c_
しかし、何かがうまくいかない
Return _a_b_c_.
例。
これが壊れている理由がよくわかりません。なぜこのように動作しているのかについての説明が欲しいです。(必ずしも、問題の解決策さえ必要ありません。最大の問題は、私の PEGjs 文法のメンタル モデルが不十分であることです。)