我想在stackoverflow中实现一个highliting系统:
**text**
- > 文字(大文)
**_text_**
- > 文字 (大斜体文字)
**text
没有任何匹配的“收盘星” - > **文本
我可以设法使用词法分析器/解析器中的一些自定义代码并执行一些自定义的AST-Parsing:
为潜在的“highlitingstart”(例如WS ** gets to WS HLS **
)发出额外的令牌
使用手动预测为潜在的“highlitingend”发出额外的令牌(例如text** WS|EOL gets to text HLE **
我认为我不能绕过自定义AST解析,但其余的应该可以使用谓词和/或回溯来进行解析。
那么,你怎么能这样做?
我没有清楚地描述的一件事是我只希望关闭令牌在空白之前有效,例如:
**bla**bla -> not bold
**bla** bla -> bold
**_bla_** bla -> bold italic
**_bla _** bla -> bold, but not italic
**_bla_**bla -> not bold and not italic
所有这些都使得它非常模糊,需要大量的回溯。 Funnily似乎有一个错误:
**bla**blubb
(bla应该是粗体,因为它的每一端都有两颗星)