小编jam*_*o00的帖子

ANTLR运算符优先级

如何在ANTLR中实现运算符优先级?

我目前正在使用XText/Antlr包.

编辑:

我做了sepp2k建议的,现在运算符优先级有效,但是3 +*这样的东西现在也可以工作了.操作员基本上"摔倒"树.

另外,我在ANTLR的网站上尝试了C语法,同样的事情发生在ANTLRworks中.

谁知道问题是什么?

BinaryExpression:
  'or'? AndOp; //or op

AndOp:
  'and'? ComparisonOp;

ComparisonOp:
  ('>'|'<'|'>='|'<='|'=='|'~=')? ConcatOp;

ConcatOp:
  '..'? AddSubOp;

AddSubOp:
  ('+' | '-')? MultDivOp;

MultDivOp:
  ('*' | '/')? ExpOp;

ExpOp:
  '^'? expr=Expression;
Run Code Online (Sandbox Code Playgroud)

compiler-construction antlr xtext

9
推荐指数
1
解决办法
7005
查看次数

Page.User.Identity与Request.LogonUserIdentity之间的差异

Page.User.Identity和Request.LogonUserIdentity之间有什么区别(幕后)?不是类型,名称等的差异,而是它们在幕后实现的差异(即一个调用windows xxx api,另一个调用asp.net xxx api ...).

c# asp.net asp.net-membership

9
推荐指数
1
解决办法
9686
查看次数

4元素矢量(3D数学)

为什么在很多3D API的Vector类中都有一个W术语(即Vector4(x,y,z,w))?是否存在绝对需要W项的数学运算?

opengl math directx 3d vector

9
推荐指数
1
解决办法
3520
查看次数

矢量化(SIMD)树操作

有关矢量化树操作的一般提示/指示是什么?内存布局明智,算法明智等

一些域特定的东西:

  • 每个父节点将具有相当多的(20-200个)子节点.
  • 每个节点具有子节点的概率很低.
  • 树上的操作主要是条件遍历.
  • 在树上行走的表现比插入/删除/搜索速度更重要.

c++ sse simd vectorization

9
推荐指数
1
解决办法
657
查看次数

C++静态运算符重载

是否可以在静态上下文中重载C++类操作符?例如

class Class_1{ ... }
int main()
{

    Class_1[val]...

}
Run Code Online (Sandbox Code Playgroud)

c++ indexing static operator-overloading

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

用函数式语言表示有状态的东西

我一直在玩函数式语言(特别是F#),我真的很喜欢整个不可变/概念.但是,我对你如何用函数式语言表示有状态的东西感到有些迷茫.

例如,如何在函数式语言中重写以下内容?(任何功能语言都很好......只需要绕过它)

class state
{
    int current_time;
    bool is_completed() { 
        return current_time() - start_time > 30 seconds
    }
    double get_progress() { 
        return (current_time() - start_time) / 30 seconds
    }
    void start() {
        start_time = current_time();
    }
}
void main() {
    state s;
    s.start();
    while(s.is_completed() == false) { 
          print s.get_progress();
    }
    print "finished";
}
Run Code Online (Sandbox Code Playgroud)

.net f# functional-programming

8
推荐指数
2
解决办法
379
查看次数

跳过C++模板参数

C++ hash_map具有以下模板参数:

template<typename Key, typename T, typename HashCompare, typename Allocator>
Run Code Online (Sandbox Code Playgroud)

如何在不指定HashCompare的情况下指定分配器?

这不会编译:(

hash_map<EntityId, Entity*, , tbb::scalable_allocator>
Run Code Online (Sandbox Code Playgroud)

c++ templates

7
推荐指数
2
解决办法
2290
查看次数

Mono是否支持64位Windows?

在此页面上,http://www.mono-project.com/Supported_Platforms,64位窗口未列为受支持的平台.但是,我一直觉得它是受支持的(x64代码生成器工作......).任何人都可以最终证实这一理论吗?

谢谢

.net c# mono 64-bit

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

SetJmp/LongJmp:为什么这会引发段错?

以下代码总结了我目前遇到的问题.我当前的执行流程如下,我在GCC 4.3中运行.

jmp_buf a_buf;
jmp_buf b_buf;

void b_helper()
{
    printf("entering b_helper");
    if(setjmp(b_buf) == 0)
    {
        printf("longjmping to a_buf");
        longjmp(a_buf, 1);
    }
    printf("returning from b_helper");
    return; //segfaults right here
}
void b()
{
    b_helper();
}
void a()
{
    printf("setjmping a_buf");
    if(setjmp(a_buf) == 0)
    {
        printf("calling b");
        b();
    }
    printf("longjmping to b_buf");
    longjmp(b_buf, 1);
}
int main()
{
    a();
}
Run Code Online (Sandbox Code Playgroud)

上述执行流程在b_helper返回后立即创建段错误.它几乎就像只有b_helper堆栈帧有效,并且它下面的堆栈被擦除.

任何人都可以解释为什么会这样吗?我猜这是一个GCC优化,它正在擦除未使用的堆栈帧或其他东西.

谢谢.

c++ gcc g++ segmentation-fault

7
推荐指数
2
解决办法
3870
查看次数

尾递归Levenshtein距离

我在F#中以非常标准的方式实施了Levenshtein Distance作为练习

let lastchar (s:string) = s.Substring(s.Length-1, 1)
let lastchar_substring (s:string) len = s.Substring(len-1, 1)

let rec levdist (sa:string) (sb:string) alen blen = match alen, blen with
    | -1, -1 -> levdist sa sb sa.Length sb.Length
    | 0, 0 -> 0
    | _ , 0 -> alen
    | 0, _  -> blen
    | _ -> List.min [ (* How do I make this tail recursive...? *)
            (levdist sa sb (alen-1) blen) + 1;
            (levdist sa sb alen (blen-1)) + 1; …
Run Code Online (Sandbox Code Playgroud)

algorithm f# ocaml functional-programming tail-recursion

7
推荐指数
2
解决办法
706
查看次数