小编San*_*jiv的帖子

ANTLR:回溯与前瞻之间的区别?

我是ANTLR的新手.我有一个非常简单的语法:

start   :
('A' 'B' 'C' '1'
|'A' 'B' 'C' '2' 
|'A' 'B' 'C' '3'
)
;
Run Code Online (Sandbox Code Playgroud)

我认为我已经理解了前瞻和后退概念的基础知识(它与句法谓词一起使用).所以这个语法适用于k = 4或backtrack = true.但究竟是什么区别,主要问题是我何时使用什么?我试图在互联网上找到答案,但没有成功.

grammar antlr backtracking lookahead ll-grammar

6
推荐指数
2
解决办法
2788
查看次数

如果 CQL 中不存在则创建键空间

仅当键空间不存在时,我才使用以下 CQL 语法创建键空间:

CREATE KEYSPACE IF NOT EXISTS Test WITH replication 
                = {'class':'SimpleStrategy', 'replication_factor':1};
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

Exception in thread "main" com.datastax.driver.core.exceptions.SyntaxError: line 1:23 extraneous input 'EXISTS' expecting '='
at com.datastax.driver.core.exceptions.SyntaxError.copy(SyntaxError.java:35)
at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:256)
at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:172)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:91)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:83)
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题?语法有什么问题吗?

cql3 cassandra-jdbc

5
推荐指数
1
解决办法
8193
查看次数

但是,不应过度使用创建静态实用程序方法?怎么避免呢?


随着时间的推移,在java项目中引入了大量的实用方法,以实现更复杂,更简单的任务.

当使用静态方法时,我们在代码中引入紧耦合,这使得我们的代码更难以测试,特别是如果实用方法非常复杂.

我只是认为现在很难管理和测试这些实用程序.请指导我避免使用这些实用程序方法,以及如何组织现有项目以删除所有STATIC实用程序.

你能帮我避免静态方法吗?

java oop static

4
推荐指数
2
解决办法
4354
查看次数

ANTLR:带参数的规则?

我是ANTLR的新手.我开始探索ANTLR教程.我已经看到了为特定规则定义了返回类型的示例(参见下面的示例).

我也可以将争论传递给统治吗?我只是想到了,我想根据提供给它的论点改变一个微观状态的规则行为.

如果它在ANTLR中可以通过,请帮帮我,还是这样做是个好主意?

atom returns [int value]
 :
  INT 
     {
      $value = Integer.parseInt($INT.text);
     }
  | ID // variable reference
     {
      Integer v = (Integer) memory.get($ID.text);
      if (v != null)
        $value = v.intValue();
     }
;
Run Code Online (Sandbox Code Playgroud)

java antlr antlr3

2
推荐指数
1
解决办法
2924
查看次数

在Generic中遇到有界通配符问题

我是Java Generics的新手,我目前正在尝试使用Generic Coding ....最终目标是将旧的非通用遗留代码转换为通用代码...

我已经用IS-A定义了两个类,即一个是其他的子类.

public class Parent {
    private String name;
    public Parent(String name) {
        super();
        this.name = name;
    }
}

public class Child extends Parent{
    private String address;
    public Child(String name, String address) {
        super(name);
        this.address = address;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试使用有界通配符创建一个列表.并得到编译器错误.

List<? extends Parent> myList = new ArrayList<Child>(); 
myList.add(new Parent("name")); // compiler-error
myList.add(new Child("name", "address")); // compiler-error
myList.add(new Child("name", "address")); // compiler-error
Run Code Online (Sandbox Code Playgroud)

有点困惑.请帮我解决这个错误吗?

java generics collections

-1
推荐指数
1
解决办法
68
查看次数