1

変換する 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 文法のメンタル モデルが不十分であることです。)

4

2 に答える 2