相关疑难解决方法(0)

为什么不能用LR(1)解析器解析C++?

我正在阅读解析器和解析器生成器,并在维基百科的LR解析页面中找到了这个语句:

可以使用LR解析器的一些变体来解析许多编程语言.一个值得注意的例外是C++.

为什么会这样?C++的哪个特定属性导致无法使用LR解析器进行解析?

使用谷歌,我只发现C可以用LR(1)完美解析,但C++需要LR(∞).

c++ grammar parsing formal-languages

147
推荐指数
6
解决办法
3万
查看次数

Java - 抽象语法树

我目前正在寻找一个Java 6/7解析器,它生成一些(可能是标准化的)表单抽象语法树.

我已经发现ANTLR有一个Java 6语法,但似乎它只生成解析树,而不是语法树.我还读过有关Java编译器API的文章 - 但是所有提到的资源都是过度设计并且记录不完整(如果它确实生成了AST,我还没发现).

你知道任何好的解析器库,可能作为标准化输出吗?

谢谢

java grammar parsing abstract-syntax-tree

10
推荐指数
1
解决办法
6613
查看次数

reStructuredText的ANTLR语法(规则优先级)

第一个问题流

大家好,

这可能是这个问题的后续行动:Antlr规则优先事项

我正在尝试为reStructuredText标记语言编写ANTLR语法.

我面临的主要问题是:"如何在不掩盖其他语法规则的情况下匹配任何字符序列(常规文本)?"

让我们举一个带内联标记的段落的例子:

In `Figure 17-6`_, we have positioned ``before_ptr`` so that it points to the element 
*before* the insert point. The variable ``after_ptr`` points to the element *after* the 
insert. In other words, we are going to put our new element **in between** ``before_ptr`` 
and ``after_ptr``.
Run Code Online (Sandbox Code Playgroud)

我认为编写内联标记文本的规则很容易.所以我写了一个简单的语法:

grammar Rst;

options {
    output=AST;
    language=Java;
    backtrack=true;
    //memoize=true;
}

@members {
boolean inInlineMarkup = false;
}

// PARSER

text
    : inline_markup (WS? inline_markup)* WS? EOF …
Run Code Online (Sandbox Code Playgroud)

antlr restructuredtext antlr3

4
推荐指数
1
解决办法
2010
查看次数