小编Pau*_*han的帖子

Parse :: RecDescent - 从中​​获取信息

我正在使用Perl中的Parse :: RecDescent解析器,我似乎有最糟糕的时间从它获取信息.在线提供的信息似乎没有非平凡的例子.

这是代码:

event_function: object_list ':' event_list ';'
        <defer:
        {       #item is a special character with Parse::Recdescent.
            print Dumper($item{object_list});
            $return = $item[1];
        }
        >
        | object_list ':' ';'
        <defer:
        { 
            print Dumper($item{object_list});
            $return = $item[1];
        }
        >
Run Code Online (Sandbox Code Playgroud)

这是输出

PS W:\developers\paulnathan\rd_dir> perl parser.pl testfile
$VAR1 = 4;
$VAR1 = 8;
PS W:\developers\paulnathan\rd_dir>
Run Code Online (Sandbox Code Playgroud)

输入文件正确解析.

stuff, stuff2: pre-operation event = {foo1, foo2};
Run Code Online (Sandbox Code Playgroud)

应该输出一个由"stuff","stuff2"键入的哈希值.

思考?

编辑:

object_list : 
        object ',' object_list
        <defer:
        {

            my $retval = ();
            $retval = …
Run Code Online (Sandbox Code Playgroud)

perl parse-recdescent

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

如何使用Perl去除块注释?

我正在研究一种分析DSL的预处理器.我的目标是删除评论.块注释工具%%在之前和之后划分.通过语言的定义,我不必担心%%在字符串中.

我正在使用这个s///正则表达式.不幸的是,它似乎匹配所有内容并将其消除:

#Remove multiline comments.
$text_string =~ s/%%.*%%//msg;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

regex perl stripping

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

如何在Perl中干净地处理错误检查?

我有一个Perl例程来管理错误检查.基于先前的成功,大约有10种不同的检查,有些是嵌套的.这些通常不是特殊情况,我需要croak/ die.此外,一旦发生错误,执行其余检查就没有意义了.

但是,我似乎无法想出一个简洁的方法来解决这个问题,除非使用类似于以下可怕的黑客的东西:

sub lots_of_checks
{

 if(failcond)
 {
  goto failstate:
 }
 elsif(failcond2)
 {
  goto failstate;
 }

 #This continues on and on until...

 return 1; #O happy day!

 failstate:

 return 0; #Dead...
}
Run Code Online (Sandbox Code Playgroud)

我希望能做的事情是这样的:

do
{
 if(failcond)
 {
  last;
 }
 #...
};
Run Code Online (Sandbox Code Playgroud)

perl

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

当您的脚下网络路径发生变化时:svn不起作用

我在一台机器上没有管理[tm]的SVN存储库和签出版本.系统管理员在路径/装配上做了一些后台工作,我的工作目前被有效劫持.这是在Red Hat Linux中.我知道在Windows上,SmartSVN有一个选项,你可以重新定位源存储库来处理这样的情况.

如何在签出版本中设置新的存储库路径?

svn

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

将分层Perl模块导入本地名称空间

情况:

我有一个模块Foo::Quux::Bar,住在里面./Bar.pm.我需要能够单独测试Bar.但是,由于我无法控制的情况设置Foo/Quux目录结构,这是不利的.

所以我想做的是有一些unit_test_use例程,让我抓住Bar.pm并将其函数移动/复制到本地命名空间(注意Bar有一个package Foo::Quux::Bar说明符),以便我测试愉快.

在Perl文档中喋喋不休并没有帮助我.

perl unit-testing

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

让:在Common Lisp中创建一个临时变量

给定一个功能:

(defun foo (bar)
 (let ((baz bar))
    (setf baz (+ baz 1)))
Run Code Online (Sandbox Code Playgroud)

我被赋予了理解(也许是错误的?)baz成为某种对bar的引用,而不是bar的真正副本.

我想要做的是创建一个真正的临时变量,以便我可以确保我可以使用我想要的传入变量,而不会产生任何副作用.

lisp common-lisp

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

lisp defclass宏问题

一点点背景,我是一个完全没法比赛的人,几周前才开始,但我已经在其他领域开发了多年.逻辑没问题,口齿不清,问题.

我正在尝试编写一个宏,它将为我定义两个clsql类来解决库的问题.我想要命名的类x和`x-insert``,所以在宏中我想要宏来计算x-insert的符号名,但是我很难做到这一点.我的尝试在下面,但我对两件事感到难过.

如何创建类名称.如果我删除了空间,class -insert,它就不会评估,我理解,所以我认为我错过了一些直截了当的方式来告诉它忽略空间,并将名称创建为单个单词,第二个问题是将其转换为创建两个类,而不是一个,因为它只使用宏展开来扩展宏的最后一部分.

也许我完全以错误的方式解决这个问题,所以请随意向我推进正确的方向.

(defmacro gen-pair (class base-slots pkey-slot base-table)
  `(clsql:def-view-class ,class -insert()
     (
      ,base-slots
     )
     (:base-table ,base-table)
   )

  `(clsql:def-view-class ,class (,class -insert)
     (
      ,pkey-slot
     )
     (:base-table ,base-table)
   )
)
Run Code Online (Sandbox Code Playgroud)

lisp macros common-lisp

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

绑定jQuery点击事件通过循环哈希抓取哈希中的最后一个元素?

我有很多div,我正在打开和关闭.我最初是手动绑定处理程序(根据下面的代码),但决定做一些重构.但是,出现了绑定问题,其中散列中的最后一个键/值是始终选择的那个.在示例代码中,这将是contact_data div.我认为问题是数据没有被关闭,但我不确定如何在JS中强制执行此操作.

var link_div = {
    "#about_toggle" : "#about_stuff",
    //more pairs
    "#contact_toggle" : "#contact_data"

 };
/*
 * Before refactoring:
  $("#about_toggle").click( function()
                          {
                              $("#about_stuff").toggle();
                          });
*/
//After
    for(var key in link_div)
    {
        $(key).click(function()
             {
                 alert(link_div[key]);
                 toggle_on_element(link_div[key]);
             });
    }
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

返回模板模板

此代码不会自动正确推断返回类型(C++的设计方面):

template < typename Container,
           typename UnaryOp>
Container
mymap(Container c, UnaryOp op)
{
    typedef typename Container::value_type ResultType
    Container<ResultType> result;
    for(Container::iterator i = c.begin();
        i != c.end();
        i++)
    {
        result.push_back(op(*i));
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我想做的是发生这样的事情:

vector<string> bar;
bar.push_back("1");
bar.push_back("2");
bar.push_back("3");    
vector<int> foomatic;
foomatic = mymap(bar, [] (string s)->int {return atoi(s.c_str());});
//foomatic now is equal to {1,2,3}
Run Code Online (Sandbox Code Playgroud)

我认为这Container将被推断为vector,并且ResultType将被推断为int.

c++ templates c++11

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

Python 服务安装-“找不到 PythonClass 条目”

我正在构建 Python 服务。我正在引发此错误,但我不确定是什么引发了它。

PS C:\...> python .\file.py debug
Debugging service MYSERVICE - press Ctrl+C to stop.
Error 0xC00000F4 - Could not find the service's PythonClass entry in the registry
Error 1814 - The specified resource name cannot be found in the image file.
Error 0xC0000080 - Could not locate the module name in the Python class string (ie, no '.')
Run Code Online (Sandbox Code Playgroud)

此错误来自 PythonWin32 中的 PythonServiceMessages.mc。

python windows interop pywin32

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