小编Var*_*yan的帖子

如何在vim中显示搜索的所有结果

使用记事本++搜索字符串时,会打开新窗口并显示查找结果。我想在vim中使用这个功能。经过谷歌搜索后,我发现了一些建议:

vimgrep /<pattern>/ %
copen
Run Code Online (Sandbox Code Playgroud)

可以创建执行这两个命令的映射。模式应该是当前单词:可能是 vim 中的 cword 关键字?

vim

5
推荐指数
2
解决办法
4961
查看次数

TCL如何调用项目处理程序

我从项目到项目处理程序创建了地图.

  array set handlers {
             handleItem1 handlerFunction1
             handleItem2 handlerFunction2
  }
Run Code Online (Sandbox Code Playgroud)

但是handlerFunctions可以接受参数.

所以下面的代码不会起作用.

 if { [info exists handlers($item) ] } {
       eval $this $handlers($item)
 }
Run Code Online (Sandbox Code Playgroud)

那么我可以使用这个代码来调用可以获取参数的处理程序吗?

tcl

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

Flex/bison 语法错误

我正在尝试编写一个能够使用以下输入的语法:

begin #this is a example
    x = 56;

    while x > 0 do
    begin
    point 15.6 78.96;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

这是 lexer.l 文件:

%option noyywrap

%{
#include "parser.h"
#include <stdlib.h>
#include <stdio.h>
const char * const unrecognizedToken = "Unrecognized token";

%}


NewLine                 \n
WhiteSpaces             [\r\t\f\v ]+
Semicolon                    ;

digit       [0-9]
number1     {digit}+\.?([eE][-+]?{digit}+)?
number2     {digit}*\.{digit}+([eE][-+]?{digit}+)?
double_number      {number1}|{number2}

BEGIN                   "begin"
END                     "end"
WHILE                   "while"
DO                      "do"
POINT                   "point"

%x POINT_DEFINITIONS

%%

{WhiteSpaces} {
    printf("WhiteSpaces");
    printf("\n");
} 

{NewLine}     {
    printf("NewLine");
    printf("\n");
} 


{WHILE} …
Run Code Online (Sandbox Code Playgroud)

yacc lex bison lexical-analysis flex-lexer

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

加入两个列表的最佳方式是什么?

我有两个包含一些数据(数字数据或/和字符串)的列表?

那么在假设列表不包含子列表的情况下,我应该如何加入这两个列表.

什么是首选,为什么?

  1. set first [concat $first $second]

  2. lappend first $second

  3. append first " $second"

tcl

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

如何从通用方法调用非通用方法

如何从通用方法调用非通用方法:

    class Test {
        ...
        public <T> int someFunction1(T someParam) {
            return someFunction2(someParam);
        }

        public int someFunction2(String someParam) {
           return 1;
        }

        public int someFunction2(Integer someParam) {
        return 1;
        }
    }

 Test t = new Test;
t.someFunction1(new String("1"));
t.someFunction1(new Integer(5));
Run Code Online (Sandbox Code Playgroud)

也可以在编译时而不是在运行时执行此操作吗?

java generics

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

Qt Creator标签文件

我使用vim进行C++代码编辑.但它的代码完成并不是那么好(虽然我尝试过很多插件,比如OmniCppComplete).Qt Creator代码完成非常棒,并且它还具有vim样式编辑功能,对我来说功能足够了.只有对我不利的事情是我不能在Qt Creator中使用ctags功能(尽管Qt Creator具有转到类定义的功能,但是解析源代码需要花费更多的时间).

是否可以在假vim模式下创建源代码标记文件并在Qt Creator中使用它?

vim qt ctags qt-creator

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

如何使proc更有效?

有一组顶点:[x1 y1 x2 y2 .. xn yn]

我想改变那些坐标的中心.所以我尝试:

proc changeCenter { vertices X Y } {
    set myList [list]
    foreach element $vertices {
        lappend myList [expr [lindex $element 0] + $X]
        lappend myList [expr [lindex $element 1] + $Y]
    }

 return $myList 
}
Run Code Online (Sandbox Code Playgroud)

但它的表现太慢了.

如何更改上面的代码以更有效或者可能需要更改顶点的表示?

tcl polygon

3
推荐指数
2
解决办法
135
查看次数

flex/bison中的半保留字处理

考虑一下这个lex.l文件:

%{
#include "y.tab.h"
%}

digit         [0-9]
letter        [a-zA-Z]

%%
"+"                  { return PLUS;       }
"-"                  { return MINUS;      }
"*"                  { return TIMES;      }
"/"                  { return SLASH;      }
"("                  { return LPAREN;     }
")"                  { return RPAREN;     }
";"                  { return SEMICOLON;  }
","                  { return COMMA;      }
"."                  { return PERIOD;     }
":="                 { return BECOMES;    }
"="                  { return EQL;        }
"<>"                 { return NEQ;        }
"<"                  { return LSS;        }
">"                  { return GTR;        } …
Run Code Online (Sandbox Code Playgroud)

yacc lex bison lexical-analysis flex-lexer

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

集装箱前后行为

以下是"Effective STL"的引用:

当您从容器中获取对象时(通过例如正面或背面),您设置的是所包含内容的副本.复制,复制出来.这是STL的方式.

我很难理解这一部分.据我所知,front返回第一个元素的引用(至少为std::vector).你能解释一下这句话吗?

c++ stl effective-c++

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

如何递归grep目录中的模式?

我想grep所有以:student_开头的字符串模式 ,然后是 任意数量的符号(字母和数字) ,以.tcl结尾

vim grep vimgrep

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

什么(值<< 32)>> 32是什么意思?

我面对的代码对我来说有一个非常类似的操作:

return std::pair<T1, T2>(value >> 32, ( (value << 32) >> 32) );
Run Code Online (Sandbox Code Playgroud)

这是什么意思:( (value << 32) >> 32).

这和刚刚一样value吗?(对我来说,当值类型的大小是64位时是合理的)

c++

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

lex&yacc获得当前位置

在lex&yacc中有一个名为YY_INPUT的宏,可以重新定义,例如以这种方式

#define YY_INPUT(buf,result,maxlen) do { \
 const int n = gzread(gz_yyin, buf, maxlen); \                                                                              
 if (n < 0) { \
       int errNumber = 0; \
       reportError( gzerror(gz_yyin, &errNumber)); } \
     \
     result = n > 0 ? n : YY_NULL; \
  } while (0)
Run Code Online (Sandbox Code Playgroud)

我有一些叫做YYACCEPT宏的语法规则.如果在YYACCEPT之后我调用了gztell(或ftell),那么我得到一个错误的数字,因为解析器已经读取了一些不必要的数据.

那么如果我有一些叫做YYACCEPT的规则,我怎么能得到当前的位置(一个坏的解决方案是逐个字符地阅读)

(我已经做过这样的事情:

#define YY_USER_ACTION do { \
        current_position += yyleng; \
} while (0)   
Run Code Online (Sandbox Code Playgroud)

但似乎不起作用)

compiler-construction parsing lex lexical-analysis

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

使用sscanf阅读文本

我对sscanf函数的使用有疑问.

#include  <iostream>
#include  <stdio.h>

int main()
{
    char a[3];
    char b[4];
    const char* p = "aaaaaaaaaaaaaaaaaa bbbbbb";
    sscanf(p, "%2s %3s", a, b);
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

期望的输出是:aa bbb

实际输出是:aa aaa

c c++ scanf

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