小编Dan*_*ker的帖子

如何让ANTLR 3.2在第一次出错时退出?

在10.4节中,如果要在第一个解析错误时退出,则最终ANTLR引用会指示您覆盖mismatch()和recoverFromMismatchedSet().但是,至少在ANTLR 3.2中,似乎没有mismatch()方法,并且recoverFromMismatchedSet()文档说它是"当前未使用".因此,自该书出版以来,情况似乎发生了变化.

我应该做什么而不是退出ANTLR 3.2中的第一个解析错误?

error-handling antlr

8
推荐指数
1
解决办法
3865
查看次数

如何使用常见的lisp确定操作系统和主机名?

为了让我的.sbclrc文件在我使用的两台计算机上运行,​​我想要一种从sbcl中获取主机名和/或操作系统的方法.我知道我可以设置然后查找环境变量,但有更直接的方法吗?

更新

我将问题改为引用普通的lisp,因为Ken的答案并不是特定于sbcl.

sbcl common-lisp

7
推荐指数
1
解决办法
1946
查看次数

是否有用于创建Excel电子表格的通用lisp库?

是否有用于创建Excel电子表格的通用lisp库?我更喜欢它输出一种XML格式.

更新:

要添加更多上下文,从常见的lisp创建一个csv文件非常简单,这就是我现在正在做的事情.

XML电子表格格式非常简单,并且有可以很容易地输出任意XML的Common Lisp库,所以我自己的滚动是很容易的,但如果事情已经存在缓和的过程中,我宁愿.

excel common-lisp

6
推荐指数
1
解决办法
2574
查看次数

如何强制ANTLR生成NoViableAltException?

我正在使用antlr 3.2.我有一个由原子(字符"0"或"1")组成的简单语法,以及一个将逗号分隔的列表汇总到列表中的规则.

当我输入"00"作为输入时,我没有收到错误,这让我感到惊讶,因为这不应该是有效的输入:

C:\Users\dan\workspace\antlrtest\test>java -cp antlr-3.2.jar org.antlr.Tool Test.g
C:\Users\dan\workspace\antlrtest\test>javac -cp antlr-3.2.jar *.java
C:\Users\dan\workspace\antlrtest\test>java -cp .;antlr-3.2.jar TestParser
[0]
Run Code Online (Sandbox Code Playgroud)

在这种情况下如何强制生成错误?这特别令人费解,因为当我在ANTLRWorks中使用此输入的解释器时,它确实显示NoViableAltException.

我发现,如果我将语法更改为要求,例如,结尾处有分号,则会生成错误,但我正在处理的实际语法中无法使用该解决方案.

这是语法,它是自包含且可运行的:

grammar Test;

@parser::members {
  public static void main(String[] args) throws Exception {
    String text = "00";
    ANTLRStringStream in = new ANTLRStringStream(text);
    TestLexer lexer = new TestLexer(in);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    System.out.println(new TestParser(tokens).mainRule());
  }
}

mainRule returns [List<String> words]
@init{$words = new ArrayList<String>();}
  :  w=atom {$words.add($w.text);} (',' w=atom {$words.add($w.text);} )*
  ;


atom: '0' | '1';

WS …
Run Code Online (Sandbox Code Playgroud)

error-handling antlr

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

有没有一种简单的方法可以将带符号的char转换为没有符号扩展名的int?

在C,我想一个转换signed charint,没有符号扩展.因此,如果signed char是0xFF,int那么也将是0xFF.简单地转换为int是行不通的; 结果将是0xFFFFFFFF(在32位机器上).

这似乎有效(并且已经非常简单):

int convert(signed char sc) {
    return 0xFF & (int) sc; 
}
Run Code Online (Sandbox Code Playgroud)

但是有更简单或更惯用的方式吗?

编辑:固定功能

c

0
推荐指数
1
解决办法
5134
查看次数

如何在matlab中绘制这个方程

好吧,我有以下功能

y=sin(x)^2 + [(10+2x+x^2) / (5+2x^2)]
Run Code Online (Sandbox Code Playgroud)

我需要在y = -2到y = 2的区间绘制它,那我该如何设置呢?

我在matlab中做到了这一点

   >>  y = sin(x).^2 + (10 + 2*x + x.^2)/(5+2*x.^2)
   >>  x = -2:0.01:2;
Run Code Online (Sandbox Code Playgroud)

这是正确的设置吗?或者我做错了什么

matlab plot equation graph

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

标签 统计

antlr ×2

common-lisp ×2

error-handling ×2

c ×1

equation ×1

excel ×1

graph ×1

matlab ×1

plot ×1

sbcl ×1