我试图了解 LR1 解析器的工作原理,但我想到了一个奇怪的问题:如果语法包含 Epsilons 怎么办?例如:如果我有语法:
S -> A
A -> a A | B
B -> a
Run Code Online (Sandbox Code Playgroud)
很清楚如何开始:
S -> .A
A -> .a A
A -> .B
Run Code Online (Sandbox Code Playgroud)
... 等等
但我不知道如何为这样的语法做到这一点:
S -> A
A -> a A a | \epsilon
Run Code Online (Sandbox Code Playgroud)
这样做是否正确:
S -> .A
A -> .a A a
( A -> .\epsilon )
Run Code Online (Sandbox Code Playgroud)
然后让 DFA 中的这个状态接受?
任何帮助将不胜感激!
我想在"@"处拆分包含emailaddresses的列.
d$domain<-strsplit( d$email, "@")[[1]]
Run Code Online (Sandbox Code Playgroud)
不行.这样做的正确方法是什么?
我想在同一行的不同列中添加一个包含字母数量az的列.
dataset$count <-length((gregexpr('[a-z]', as.character(dataset$text))[[1]]))
Run Code Online (Sandbox Code Playgroud)
不起作用.
结果我想实现:
text | count
a | 1
ao | 2
ao2 | 2
as2e | 3
as2eA | 3
Run Code Online (Sandbox Code Playgroud) 请看下面的伪代码:
boolean blocked[2];
int turn;
void P(int id) {
while(true) {
blocked[id] = true;
while(turn != id) {
while(blocked[1-id])
/* do nothing */;
turn = id;
}
/* critical section */
blocked[id] = false;
/* remainder */
}
}
void main() {
blocked[0] = false;
blocked[1] = false;
turn = 0;
parbegin(P(0), P(1)); //RUN P0 and P1 parallel
}
Run Code Online (Sandbox Code Playgroud)
我认为可以使用上面的代码实现一个简单的Mutual-Exclution解决方案.但它不起作用.有谁知道为什么?
真的很感激任何帮助!
有没有办法调整目录中的所有图像大小?
如果我将最大尺寸设置为800x600,则会使较大的尺寸变小,并将较小的尺寸设置为原始尺寸.
我真的厌倦了使用Google Web Toolkit使用Netbeans访问Java中的谷歌地图......有没有人知道提供简单(r)API的好方法?
真的很感激任何帮助!
我目前正在尝试重构一个看起来像这样的项目的一部分:
很多班
B extends A; C extends A; D extends C; E extends B; F extends A; ...
Run Code Online (Sandbox Code Playgroud)
在代码的某处:
if (x instanceof B){
B n = (B) x;
...
}else if (x instanceof C){
C n = (C) x;
...
}else if (x instanceof D){
D n = (D) x;
...
}else if (x instanceof E){
E n = (E) x;
...
}else if (x instanceof G){
G n = (G) x;
...
}...
Run Code Online (Sandbox Code Playgroud)
上面的if-construct目前位于一个CC为19的函数中.现在我的问题是:我可以将这个if-construct拆分为多个函数并让Java的OO做神奇吗?或者有什么捕获我需要注意的?
我的想法:
private void oopMagic(C obj){ …Run Code Online (Sandbox Code Playgroud) 我想在内存中存储一个字符串并稍后阅读:
$$->desc.constant->base.id = (char*)malloc(200);
sprintf($$->desc.constant->base.id, "%f", $1);
printf("->%s\n", $$->desc.constant->base.id); //LINE A
printf("->%i\n", $$->desc.constant); //LINE B
//SOME OTHER CODE
//Then, later on in a function call:
printf("%i", expr->desc.constant); // LINE D
printf("%s", expr->desc.constant->base.id); // LINE C
Run Code Online (Sandbox Code Playgroud)
尽管B行和D行显示相同的地址,但C行中的printf失败并出现Segmentation故障.我错过了什么?
真的很感激任何帮助!
是否可以在SQL中创建"树解析器"?
我有一张桌子:
ID Name Parent
1 a
2 b 1
3 c 1
4 d 3
Run Code Online (Sandbox Code Playgroud)
现在我想要一个返回的SQL查询:
ID PATH
1 /a
2 /a/b
3 /a/c
4 /a/c/d
Run Code Online (Sandbox Code Playgroud)
这可能与SQL有关吗?它会让我更容易.真的很感激任何帮助!
我有几个哈希映射,我需要生成以下组合:
A: [x->1, y->2,...]
B: [x->1, a->4,...]
C: [x->1, b->5,...]
...
Run Code Online (Sandbox Code Playgroud)
一些可能的组合:
A+B; A; A+C; A+B+C...
Run Code Online (Sandbox Code Playgroud)
对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作.
我能想到的就是使用二进制计数器并将数字映射到相应的哈希映射:
001 -> A
101 -> A,C
...
Run Code Online (Sandbox Code Playgroud)
虽然这个解决方案有效,但当我有超过100个哈希映射时,模运算很耗时.我是Scala的新手,但我相信必须有更好的方法来实现这一目标吗?