我写一个简单的语法来识别一些表达.在这里,我发布了一个更简单的版本,我写的只是为了简化我的解释.这个更简单的版本可以识别如下表达式:
我的问题是当我总结一个表达式时:[i]这应该只生成一个识别异常[/ n]
抛出一个识别异常,但是解析器进入infinte递归,因为它匹配'[',但是当它与'i'匹配时,它就会丢失.我认为这种情况正在发生,因为我的语法文本组件不能包含方括号.所以,我发布了语法.
grammar ErrorTest;
expression
: rawText EOF
| command EOF
;
rawText
: word+
;
word
: ESPACE* TEXT ESPACE*
;
command
: simpleCommand
| compoundCommand
;
simpleCommand
: HELP
;
compoundCommand
: rawText
| BEGIN compoundCommand END
;
HELP : '[help]';
BEGIN : '[n]';
END : '[/n]';
ESPACE : ' ';
TEXT : ~(' '|'['|']')*;
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
让我们假设使用2个ANTLR语法的以下场景:
1)
expr : antExp+;
antExpr : '{' T '}' ;
T : 'foo';
Run Code Online (Sandbox Code Playgroud)
2)
expr : antExpr;
antExpr : '{' T* '}' ;
T : 'bar';
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都需要知道如何迭代antExp +和T*,因为我需要为它们的每个元素生成一个ArrayList.当然我的语法更复杂,但我认为这个例子应该解释我需要什么.谢谢!
我的问题很长......所以,请耐心等待:)
我正在使用ExtJS 4中的模型,但是我在关联方面遇到了一些问题,因此我创建了一个函数来为我执行自动模型创建.让我们假设我需要解析以下JSON:
{
"success": true,
"total": 28,
"itens": [{
"id":1,
"nome":"ACRE",
"sigla":"AC",
"pais":{
"id":31,
"nome":"BRASIL",
"sigla":"BR"
}
},{
"id":2,
"nome":"ALAGOAS",
"sigla":"AL",
"pais":{
"id":31,
"nome":"BRASIL",
"sigla":"BR"
}
}, ...]
}
Run Code Online (Sandbox Code Playgroud)
itens代表省份(巴西葡萄牙语的Estados),其中有一个国家(巴西葡萄牙语País).我试图使用ExtJS关联,但我认为它就像Java关系一样,我错了.好吧,对于这个JSON,我有这些Java类和这些Ext模型(模型也是使用提供的函数创建的).
Pais.java
@Entity
// named queries here...
public class Pais implements Serializable {
@Id
@GeneratedValue
private Long id;
@NotNull
@NotEmpty
@Length( max = 100 )
private String nome;
@NotNull
@NotEmpty
@Column( unique = true )
@Length( min = 2, max = 4 )
private String sigla;
// getters, setters, equals, …Run Code Online (Sandbox Code Playgroud) 例如,我有一个Object"假装" String:
Object o = new String("dsadsa");
Run Code Online (Sandbox Code Playgroud)
如果我想使用该对象的String函数,首先我必须将它转换为如下字符串:
((String)o).indexOf("sad");
Run Code Online (Sandbox Code Playgroud)
当有这么多括号时,这变得非常烦人且难以理解!特别是当它必须进入IF语句或函数时!
if (((String)o).equals("dsadsa")) {}
Run Code Online (Sandbox Code Playgroud)
避免这种情况的最佳方法是什么?
我习惯于以这种方式使用EL检索上下文参数
${applicationScope.configs.parameterName}
Run Code Online (Sandbox Code Playgroud)
而且效果很好.
现在,我正在使用Tomcat 7和Java EE 6(servlet和jsp规范)的新项目,上面的例子不起作用.我创建了web.xml只是为了设置一些参数.在servlet中,我只是使用
getServletContext().getInitParameter( "parameterName" );
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,但是当我尝试在我的JSP中使用第一个示例时,它不起作用,没有任何反应,就像"configs"映射不存在一样.我已经搜索了一些解决方案,但我没有找到任何东西.我尝试了几件事:
${applicationScope.initParameter.parameterName}
${applicationScope.initParameters.parameterName}
Run Code Online (Sandbox Code Playgroud)
它也不起作用.我想知道如何使用Tomcat 7(Java EE 6)在我的JSP中检索上下文参数.
当我尝试在DEV C++中再次编译C代码时,该工具会给出以下错误.如果我尝试在新文件中复制相同的代码它工作正常,但我再次无法编译新代码,需要再次复制到另一个文件.
Permission denied ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)