1

私はTreetopを初めて使用しますが、文法が非常に単純で、うまく機能しません。私はいくつかのテストを持っています:

it "parses a open tag as some text surrouded by brackets" do
  document = "[b]"
  Parser.parse(document).should_not be_nil
end
it "parses a close tag as a tag with a / preceeding the tag name" do
  document = '[/b]'
  Parser.parse(document).should_not be_nil
end

これが私の文法です:

grammar BBCode
  rule open_tag
    "[" tag_name "]"
  end

  rule tag_name
    [a-zA-Z\*]+
  end

  rule close_tag
    "[/" tag_name "]"
  end
end

最初のテストは合格し、2番目のテストは失敗します。また、これらの代替ルールを試しました。

"[" [\/] tag_name "]"
"[" "/" tag_name  "]"
"[\/" tag_name "]"

これらはすべて失敗します。

何をしようとしても、終了タグを認識できないようです。

4

1 に答える 1

1

この問題を見つけました: https://github.com/nathansobo/treetop/issues/25、私の質問に答えたようです。

私の文法には、開始タグまたは終了タグを許可するトップレベルのルールが含まれていなかったため、2 番目の可能性は考慮されませんでした。

grammar BBCode
  rule document
    (open_tag / close_tag)
  end

  rule open_tag
    ("[" tag_name "]")
  end

  rule tag_name
    [a-zA-Z\*]+
  end

  rule close_tag
    ("[/" tag_name "]")
  end
end
于 2012-12-07T01:51:08.227 に答える