我提出的bbcode解析器用PEG(柑橘實施紅寶石),我被困在解析這個[b]sometext[anothertext[/b]
與PEG的問題製作的BBcode解析器
有代碼
grammar BBCodeParser
rule document
(open_tag | close_tag | new_line | text)*
end
rule open_tag
("[" tag_name "="? tag_data? "]")
end
rule close_tag
("[/" tag_name "]")
end
rule text
[^\n\[\]]+
end
rule new_line
("\r\n" | "\n")
end
rule tag_name
# [p|br|b|i|u|hr|code|quote|list|url|img|\*|color]
[a-zA-Z\*]+
end
rule tag_data
([^\[\]\n])+
end
end
問題是與規則text
我不知道該怎麼說,該文本可以包含除\ r,\ n,open_tag或close_tag之外的所有內容。 使用這種實現它失敗的例子,因爲[和](那是錯誤的)
所以finaly問題是怎麼做的規則,可以匹配不同的東西排除\ r \ n或open_tag或close_tag
的精確匹配如果您有針對另一個PEG實現的解決方案,請將其提供給那裏。我可以切換:)