小编Kyl*_*ndt的帖子

如何使用Bison/Yacc和递归规则构建数组

有了Bison,我想出了如何将所有内容整合成一个长字符串,如下所示:

arg_list:
    WORD arg_list { strcat( $1, "IFS" ); $$ = strcat($1, $2); }  |
    WORD
    ;
Run Code Online (Sandbox Code Playgroud)

和:

WORD arg_list { printf("%s, %s\n", $1, $2); }
Run Code Online (Sandbox Code Playgroud)

但问题是,我将不得不再次在第二条规则中拆分$ 2来解析它.有没有办法填充数组而不只是使用连接?我是以错误的方式来做这件事的吗?

如果我需要构建像链接列表那样有意义的东西,只是不确定绑定到arg_list的正确方法是什么,然后清理内存.

c yacc bison

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

使用Flex(lex)和Bison(yacc)处理错误

来自"野牛手册":

在一个简单的交互式命令解析器中,每个输入都是一行,允许yyparse在出错时返回1并让调用者在发生这种情况时忽略输入行的其余部分(然后再次调用yyparse)就足够了.

这几乎是我想要的,但我无法上班.基本上,我想在flex中检测和出错,如果检测到错误,让Bison丢弃整行.我现在所拥有的,是不是很正常,因为我的命令仍然执行:

kbsh: ls '/home
Error: Unterminated Single Quote
admin  kbrandt  tempuser
syntax error
kbsh: 
Run Code Online (Sandbox Code Playgroud)

在我的Bison文件中:

commands:
     /*Empty*/ { prompt(); } |
     command { prompt(); }
    ;

command:
    error {return 1; } |
    chdir_command |
    pwd_command |
    exit_command |
    WORD arg_list {
        execute_command($1, $2);
        //printf("%s, %s\n", $1, $2); 
    } |
    WORD { execute_command($1, NULL); }
    ;
Run Code Online (Sandbox Code Playgroud)

在我的Flex中:

'   {BEGIN inQuote; }

<inQuote>\n {printf("Error: Unterminated Single Quote\n"); BEGIN(0); return(ERROR);}
Run Code Online (Sandbox Code Playgroud)

c yacc lex bison flex-lexer

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

声明与GCC和Flex/Bison无效警告

使用gcc和-Wall选项编译我的项目时,我收到一条警告,说明在我的flex文件的不存在的最后一行中没有效果的语句:

警告:

gcc -Wall -O0 -ggdb3 -DNOSUDO -DJOBC -DDEBUG -c lex.yy.c
tokenizer.l: In function ‘yylex’:
tokenizer.l:179: warning: statement with no effect
Run Code Online (Sandbox Code Playgroud)

Shell命令:

$ wc -l tokenizer.l
178 tokenizer.l
Run Code Online (Sandbox Code Playgroud)

lex文件的最后一部分:

; {
    return SEMI;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我会收到这个警告?

如果我压制所有#line指令,则错误为:

lex.yy.c: In function ‘yylex’:
lex.yy.c:1021: warning: statement with no effect
Run Code Online (Sandbox Code Playgroud)

其中指的是ECHO线:

case 30:
YY_RULE_SETUP
ECHO;
    YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(inQuote):
case YY_STATE_EOF(inWord):
    yyterminate();
Run Code Online (Sandbox Code Playgroud)

c yacc lex bison flex-lexer

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

使用Pandas重塑长格式多值数据帧

我想转:

DateTime                     ColumnName        Min      Avg      Max                                                                                      
2012-10-14 11:29:23.810000   Percent_Used       24       24       24
2012-10-14 11:29:23.810000   Current_Count  254503   254503   254503
2012-10-14 11:29:23.810000   Max           1048576  1048576  1048576
2012-10-14 11:34:23.813000   Percent_Used       24       24       24
2012-10-14 11:34:23.813000   Current_Count  254116   254116   254116
2012-10-14 11:34:23.813000   Max           1048576  1048576  1048576
Run Code Online (Sandbox Code Playgroud)

进入DateTimes唯一(索引)的数据框,列为:

DataTime,Percent_Used_Min,Percent_Used_Avg,Percent_Used_Max,Current_Count_Min,Current_Count_Avg,Current_Count_Max,Max_Min,Max_Avg,Max_Max

基本上,我想模仿R的融合/演员而不进入分层索引或堆叠数据帧.我似乎无法准确地使用stack/unstack,melt或pivot/pivot_table来完成上述操作 - 是否有一个好方法可以做到这一点?

举个例子,在R中它会是这样的:

dynamic_melt = melt(dynamic, id = c("DateTime", "ColumnName"))
recast = data.frame(cast(dynamic_melt, DateTime ~ ...))
Run Code Online (Sandbox Code Playgroud)

以上数据将是可变的(即ColumnName的值并不总是相同的,可能会有更多或更少的名称,以及不同的名称).

python pivot reshape pandas

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

C中父母的儿童任意数量?

我找到了如何通过这样的方式来分叉多个孩子的例子:

if ( fork() = 0 ) {
    //In child
} else {
    if ( fork() = 0 ) {
       //in second child
Run Code Online (Sandbox Code Playgroud)

但如果我不知道我需要多少个孩子,我该怎么办呢?

例如,如果我有一个链接的命令列表,我想为每个命令分叉和执行...所以我想我需要知道它是哪个孩子......

c fork

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

D3 Y比例,y对比身高?

我正在学习D3,我可以看到我用这两件事得到了相同的可视化:

var w = 600;
var h = 100;

var dataset = [1, 6, 3, 4, 10, 4, 9]

var svg = d3.select("body").append("svg")
    .attr("height", h)
    .attr("width", w)

var xScale = d3.scale.linear()
    .domain([0, dataset.length])
    .range([0, w]);

使用height属性:

 
var yScale = d3.scale.linear()
    .domain([0, d3.max(dataset)])
    .range([h, 0]);

svg.selectAll("rect")
    .data(dataset)
    .enter()
    .append("rect")
    .attr({
        x: function(d, i) { return xScale(i); },
        y: function(d) { return yScale(d); },
        width: w / dataset.length,
        height: function(d) { return h - yScale(d); },
        fill: "teal"
    });

在此输入图像描述

或设置y:

var yScale …

javascript svg d3.js

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

如何以编程方式生成/获取资源的 Azure 门户链接?

通过Resources - List 提供来自 Azure 的 Rest API 的资源列表。有没有一种方法可以可靠地生成或获取指向该资源的 Azure 门户 (portal.azure.com) 概述的链接?

azure

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

标签 统计

c ×4

bison ×3

yacc ×3

flex-lexer ×2

lex ×2

azure ×1

d3.js ×1

fork ×1

javascript ×1

pandas ×1

pivot ×1

python ×1

reshape ×1

svg ×1