如何使用ANTLR解析/ lexing非结构化文本

时间:2011-03-11 07:40:02

标签: antlr

我想在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应该是粗体,因为它的每一端都有两颗星)

0 个答案:

没有答案