编译/解析有意义的空格

时间:2010-09-10 02:35:15

标签: parsing compiler-construction antlr

您好我正在寻找一种伪Markdown语言和解析器来解析它为xhtml。

我从未编写过编译器......我已经对ANTLR进行了简要介绍,并且想知道ANTLR是否可以使用有意义的空白来处理解析事物?

所以说我有这样的事情:

some text

  some other text

  # bullet point

    # nested bullet point

根据上下文和前缀空格的数量,这些行意味着不同的东西。

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

谢谢, 亚历

2 个答案:

答案 0 :(得分:2)

ANTLR肯定可以用于此。但是,如果您是ANTLR或解析器生成器的新手,我认为我不能简单解释如何准确地执行此操作。我建议您使用ANTLR尝试一些简单的事情并浏览The Definitive ANTLR Reference。它甚至有一个关于这类问题的段落,类似于解析Python代码。有关详细信息,请参阅 4.3规则章节每个Lexer规则发出多个令牌

答案 1 :(得分:1)

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

同样,在行首开始计算制表符。插入在\n[ \t]*模式上引发错误的规则应该会阻止人们混合制表符和空格。