- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Antlr 3 中定义了一个简单的语法,如下所示:
grammar StringProcessor;
options {
output=AST;
}
@header {
package com.processor;
}
@rulecatch {
// ANTLR does not generate its normal rule try/catch
catch(RecognitionException e) {
throw e;
}
}
truevalue : 'true';
falsevalue : 'false';
nullvalue : 'null';
simpleValue : truevalue | falsevalue | nullvalue | STRING | INTEGER | FLOAT;
INTEGER : '0'..'9'+;
FLOAT : INTEGER'.'INTEGER;
QUOTE : '"';
SPECIALCHAR : '-'|':'|';'|'('|')'|'£'|'&'|'@'|','|'!'|'['|']'|'{'|'}'|'#'|'^'|'*'|'+'|'='|'_'|'<'|'>'|'€'|'$'|'%'|'/'|'.'|'?'|'~'|'|';
STRING : QUOTE('a'..'z'|'A'..'Z'|INTEGER|SPECIALCHAR|WS)+QUOTE;
WS : (' '|'\t'|'\f'|'\n'|'\r')+ {skip();}; // handle white space between keywords
当我在 AntlrWorks 的解释器中尝试以下字符串时:
“5Java 开发人员”
这有效。它包括空白区域。但是当我尝试从 Java 程序中解析它时,它抛出 NoViableAltException。我看过其他帖子,但这些解决方案不适用于我的问题。 WS 是 STRING 的一部分。问题是 Java 程序不会解析任何带有空格的内容,而解释会正确显示。
显示异常的示例:
public static void main(String[] args) throws Exception {
String input = ("\"5Java Developer\"");
StringProcessorParser parser = buildParser(input);
CommonTree commonTree = (CommonTree) parser.simpleValue().getTree(); // exception thrown
}
public static StringProcessorParser buildParser(String query) {
CharStream cs = new ANTLRStringStream(query);
// the input needs to be lexed
StringProcessorLexer lexer = new StingProcessorLexer(cs);
CommonTokenStream tokens = new CommonTokenStream();
StringProcessorParser parser = new StringProcessorParser(tokens);
tokens.setTokenSource(lexer);
// use the ASTTreeAdaptor so that the grammar is aware to build tree in AST format
parser.setTreeAdaptor((TreeAdaptor) new ASTTreeAdaptor().getASTTreeAdaptor());
return parser;
}
拥有:
input = new String("\"5JavaDeveloper\""); correctly parses.
知道为什么这不起作用。
编辑:
我还尝试添加 $channel = HIDDEN;
但是还是不行
WS : (' '|'\t'|'\f'|'\n'|'\r')+ { $channel = HIDDEN; skip();}; // handle white space between keywords
最佳答案
删除skip()解决了我的问题。
关于java - Java 中使用空格引发 Antlr NoViableAltException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727869/
我正在尝试通过编写语法来学习 ANTLR(我正在将 eclipse 与 ANTLR 的插件一起使用),在遇到错误之前一切正常: NoViableAltException: line 0:-1 no v
通过许多 HQL 查询,我一次又一次地收到此异常: Antlr.Runtime.NoViableAltException 这真的是通用且无用的 - 有谁知道如何最好地调试它?显然这是我的 HQL 的问
考虑以下我的语法摘录: definition : '(' 'define' ( '(' variable def_formals ')' body '
我有以下查询,当我直接在数据库中使用它时,该查询有效: @NamedQuery(name = "Sentitems.findWhereSendingDateTimeIsYesterdayByStatu
我在 Antlr 3 中定义了一个简单的语法,如下所示: grammar StringProcessor; options { output=AST; } @header { package com.
我在运行 jpa 时遇到问题。当我尝试运行 Login.java 时出现以下异常 WicketMessage: Can't instantiate page using constructor pub
我在配置单元中创建了下表。 CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String,
在我使用 antlrworks 的语法中,我可以获得像 if 这样的规则的 noviablealtexception,而它需要相应的右括号和左括号。但是,在 Java 中,我无法获得 noviable
return NHibernateSession.CreateQuery(@"TRUNCATE TABLE dbo.Exceptions").ExecuteUpdate(); Exception of
我正在使用 antlr 3.2。我有一个简单的语法,它由原子(它们是字符“0”或“1”)组成,以及一个将它们的逗号分隔列表累积到列表中的规则。 当我传入“00”作为输入时,我没有收到错误消息,这让我感
我的 Json 在下面。我必须将此 JSON 加载到配置单元中,并且必须查询一些详细信息。 { "id": "1234", "pdid": "abcd", "summary": {
使用 NHibernate 3 linq 提供程序,我想选择一个项目子项的最大数量。 使用以下 linq 查询,我得到一个 Antlr.Runtime.NoViableAltException,后跟一
我在存储库方法上使用 @Query 指定 Spring Data 查询,但它抛出 NoViableAltException 异常。 这是我正在使用的存储库接口(interface)方法和注释: @Qu
考虑我们尝试将一些不正确的输入文本提供给某些语法(例如,包含一些未知标记的文本)。在 ANTLRWorks 中,在解释期间我们将在图表中看到 NoViableAltException。 UPD:出现这
我在查询名称中包含空格的表时遇到一些问题 如果我编写一个 sql 查询,它工作正常,即 SELECT * FROM [product groups],但是当使用 NHibernate CreateQu
UPD @Query(value = "select distinct d.documentId " + "from TrainingDocument d " +
我是一名优秀的程序员,十分优秀!