2010-09-10 30 views
0

您好我正在寻找一种伪Markdown类型的语言和解析器来解析它到xhtml。编译/分析有意义的空白

我从来没有写过一个编译器......我简单看了一下ANTLR,想知道ANTLR是否可以用有意义的空白来处理解析事情?

所以说我有这样的事情:

some text 

    some other text 

    # bullet point 

    # nested bullet point 

根据上下文和前缀空间的数量,这些线路将意味着不同的事情。

什么是用于编写解析器的好工具?

谢谢, 亚历克斯

回答

2

ANTLR肯定可以用于此。但是,如果您对ANTLR或解析器生成器一般都不熟悉,我不认为我可以简单地解释如何完全做到这一点。我建议你用ANTLR尝试一些简单的事情,并浏览The Definitive ANTLR Reference。它甚至有一段关于这种类型的问题,类似于解析Python代码。请参阅章节4.3规则,段落有关详细信息,请按照Lexer规则发送多个令牌。

1

我的做法是让你的词法分析器产生缩进/突出令牌。存储当前缩进级别并匹配\n *之类的模式。计算空格的数量,如果它与当前缩进级别不同,则发出缩进/缩进标记。

同样,在开始行计数标签。在\n[ \t]*模式中插入引发错误的规则应该会阻止人们混合标签和空格。