作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Antlr 中为命题逻辑创建 BNF 语法,但我不断收到错误:
java.lang.NoSuchFieldError:offendingToken
由于没有显示行号,所以我不知道错误在哪里。构建成功,但当我输入示例输入时,树停在句子处,即 BNF 中定义的第一项。
这是我的 BNF:
grammar Grammar;
options {
language = Java;
output = AST;
ASTLabelType=CommonTree;
}
@header {
package antlr;
}
@members {
}
@lexer::header { //lexer
package antlr;
}
@lexer::members {
}
sentence: atomicsentence | complexsentence;
atomicsentence: 'T' | 'F' | symbol;
complexsentence: unop sentence | sentence binop sentence | (sentence);
unop: 'NOT';
binop: 'AND' | 'OR' | 'IMPLIES' | 'EQUIVALENT';
symbol: (LEXRULE)+;
LEXRULE: ('a'..'z')|('A'..'Z');
如果你注释掉句子中的复杂句子,原子句子部分就会起作用,直到它因为没有EOF而终止。我不确定这应该去哪里,因为将其添加到句子中不起作用。
最佳答案
(已编辑)
我已经重构了你的语法,所以它应该按照你的预期工作。
grammar Grammar;
options {
language = Java;
output = AST;
ASTLabelType=CommonTree;
}
tokens {
CODE;
}
@header {
package antlr;
}
@members {
}
@lexer::header { //lexer
package antlr;
}
@lexer::members {
}
code : sentence -> ^(CODE code);
sentence: UNOP? complexsentence (BINOP sentence)?;
atomicsentence: 'T' | 'F' | SYMBOL;
complexsentence: atomicsentence | '(' sentence ')';
UNOP: 'NOT';
BINOP: 'AND' | 'OR' | 'IMPLIES' | 'EQUIVALENT';
SYMBOL: LEXRULE+;
fragment
LEXRULE: ('a'..'z')|('A'..'Z');
关于java - 命题逻辑的 BNF 语法 ANTLR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14379711/
前言请注意,这是一项作业。第一个问题已经问了一个问题。所以我们有数据类型: data BoolProp : ??? where ptrue : BoolProp true pfalse :
我是依赖类型的新手,有 Haskell 经验,正在慢慢学习 Idris。作为练习,我想编写霍夫曼编码。目前我正在尝试编写一个证明,证明代码树的“扁平化”会产生一个前缀代码,但被量词卡住了。 我有一个简
我是一名优秀的程序员,十分优秀!