问题列表 - 第16997页

Scala Parser Token Delimiter问题

我正在尝试为下面的命令定义语法.

object ParserWorkshop {
    def main(args: Array[String]) = {
        ChoiceParser("todo link todo to database")
        ChoiceParser("todo link todo to database deadline: next tuesday context: app.model")
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个命令应该标记为:

action = todo
message = link todo to database
properties = [deadline: next tuesday, context: app.model]
Run Code Online (Sandbox Code Playgroud)

当我在下面定义的语法上运行此输入时,我收到以下错误消息:

[1.27] parsed: Command(todo,link todo to database,List())
[1.36] failure: string matching regex `\z' expected but `:' found

todo link todo to database deadline: next tuesday context: app.model
                                   ^
Run Code Online (Sandbox Code Playgroud)

据我所知,它失败了,因为匹配消息的单词的模式几乎与属性键的键的模式相同:值对,因此解析器无法分辨消息的结束位置和属性的开始.我可以通过坚持为每个属性使用开始令牌来解决这个问题,如下所示:

todo link todo to database :deadline: next tuesday …
Run Code Online (Sandbox Code Playgroud)

parsing scala bnf ebnf parser-combinators

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

Subversion命令行提交不执行任何操作

当我跑:

svn commit -m "some message" myFile.txt
Run Code Online (Sandbox Code Playgroud)

在DOS shell中,它给我一个空行作为结果.没有错误消息等.并且文件未提交.

可能是什么导致了这个?

svn

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

Linq,扩展方法,Lambda表达式和Bool's

问候,我在使用Linq to Entities获得的IQueryable对象的Where子句扩展方法中使用bool操作时遇到了一些问题.第一个例子显示了使用Bool1作为我需要移动到where子句扩展方法的操作.第二个例子是改变后不起作用的.Bool1完全被忽略,不会影响结果.

例1:

var results =
     from a in context.aTable1
     where a.Bool1 == false && a.Bool2  == false
     select new
     {
           Column1 = a.Column1
           Bool1 = a.Bool1
           Bool2 = a.Bool2
     };

results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)

例2:

var results =
     from a in context.aTable1
     where a.Bool2  == false
     select new
     {
           Column1 = a.Column1
           Bool1 = a.Bool1
           Bool2 = a.Bool2
     };

results.Where(l => l.Bool1 == false);
results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)

这些都是简化的例子,但我希望它们能说明我想要做的事情.where扩展方法在不同的方法中,并且是我在创建原始查询时无法完成的原因.

我尝试了以下其他方式与where子句做同样的事情:

results.Where(l => !l.Bool1);
results.Where(l => l.Bool1.Equals(false));
Run Code Online (Sandbox Code Playgroud)

它们具有相同的效果,但没有任何效果.

c# linq linq-to-entities iqueryable .net-3.5

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

我在哪里可以下载Java SE的源代码(java.lang,java.util,&c.)?

我在查找核心Java SE包的JRE,JDK和文档方面没有问题,但我不确定从哪里获取源(.java)文件.我正在寻找最新的稳定版本,而不是尖端的开发代码.哪些可用?

java open-source

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

在Windows上将CTRL + C发送到子进程树

我想运行任意基于控制台的子流程,并从单个主流程管理它们.基于控制台的子进程通过stdin,stdout和stderr进行通信,如果在真正的控制台中运行它们,则在按CTRL + C时它们会完全终止.其中一些实际上可能是一个进程树,例如运行可执行文件的批处理脚本,该可执行文件又可以运行另一个可执行文件来完成某些工作.我想重定向他们的标准I/O(例如,以便我可以在GUI窗口中显示他们的输出)并且在某些情况下向他们发送CTRL + C事件,以便他们放弃并彻底终止.

以下两个图首先显示了正常结构 - 一个主进程有四个工作子进程,其中一些有自己的子进程; 然后当其中一个工作人员需要被停止时应该发生什么 - 它和它的所有孩子应该得到CTRL + C事件,但没有其他进程应该收到CTRL + C事件.

流程图http://pics.livejournal.com/clockworksaint/pic/0007z5yr/s640x480.png

此外,我更希望用户看不到额外的窗口.

这是我尝试过的(注意我在使用Python,但C的解决方案仍然有用):

  • 产生一个额外的中间过程CREATE_NEW_CONSOLE,然后让它产生工作进程.然后在我们要杀死worker时调用GenerateConsoleCtrlEvent(CTRL_C_EVENT,0).不幸的是,CREATE_NEW_CONSOLE似乎阻止我重定向标准I/O通道,所以我没有简单的方法将输出返回到主程序.
  • 产生一个额外的中间过程CREATE_NEW_PROCESS_GROUP,然后让它产生工作进程.然后在我们要杀死worker时调用GenerateConsoleCtrlEvent(CTRL_C_EVENT,0).不知何故,此管理对CTRL + C发送到主过程,这是完全无用的.仔细观察,GenerateConsoleCtrlEvent表示无法将CTRL + C发送到进程组.
  • 用子程序生成子进程CREATE_NEW_PROCESS_GROUP.然后调用GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT,pid)来杀死worker.这并不理想,因为CTRL + BREAK不如CTRL + C友好,可能会导致终止混乱.(例如,如果它是一个Python进程,则不能捕获KeyboardInterrupt并且不会运行finally块.)

有什么好方法可以做我想要的吗?我可以看到理论上我可以在第一次尝试的基础上建立并找到其他方法在进程之间进行通信,但我担心它会变得非常尴尬.是否有其他程序可以达到同样效果的好例子?它似乎很简单,不能满足所有这一要求.

windows

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

PHP计算

我正在尝试从xml输出一个值,这就是我所做的 -

<?php
    echo $responseTemp->Items->Item->CustomerReviews->AverageRating;
?>
Run Code Online (Sandbox Code Playgroud)

这输出4.5,但当我将其更改为下面的代码时,它显示为8.为什么它不显示为9?谢谢.

<?php
echo $responseTemp->Items->Item->CustomerReviews->AverageRating*2;
?>
Run Code Online (Sandbox Code Playgroud)

html php math

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

Windows中的Mercurial没有看到.hgignore - 为什么?

Windows无法获取我的.hgignore文件.我从命令行运行Mercurial,"hg status"显示被忽略目录中的大量文件.

.hgignore文件看起来像这样(文件的开头或每行的开头都没有空格).我把它放在存储库的根目录中.

\.pyc$
\.pyo$
\.DS_Store
\.Python
\.installed.cfg
^bin$
^build$
^develop-eggs$
^eggs$
^include$
^lib$
^parts$
^pip-log.txt$
^web/localsettings.py$
Run Code Online (Sandbox Code Playgroud)

我试过用ANSI和UTF-8保存文件,但它似乎没有什么区别.

我知道该文件在Linux上运行正常,Windows中的路径有什么不同吗?

windows mercurial

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

python:列表索引超出范围错误

我写了一个简单的python程序

l=[1,2,3,0,0,1]
for i in range(0,len(l)):
       if l[i]==0:
           l.pop(i)
Run Code Online (Sandbox Code Playgroud)

这给了我错误'列表索引超出范围'在线 if l[i]==0:

经过调试后,我可以发现i它正在增加并且列表正在减少.
但是,我有循环终止条件i < len(l).那我为什么会收到这样的错误呢?

python list

33
推荐指数
4
解决办法
64万
查看次数

下载后无法删除文件

为什么我下载后无法删除文件?

我收到此错误:

文件'exfile.jpgg'因为它正由另一个进程使用.

这是我的代码,

string file_name = "pic.jpg"
WebClient client = new WebClient();
client.DownloadFile("http://picture.com/pic.jpg", file_name);
client.Dispose();
client = null;

pictureBox1.Image = Image.FromFile(File_Name);
pictureBox1.Image = null;

FileInfo MyFile = new FileInfo(File_Name);
MyFile.Delete();
Run Code Online (Sandbox Code Playgroud)

c# file download

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

为什么HTML中不推荐使用<center>标记?

我很好奇为什么<center>HTML中的标记已被弃用.

<center>是一种通过将容器封装在<center>标签中来快速居中对齐文本和图像块的简单方法,我现在找不到任何更简单的方法来实现它.

任何人都知道如何集中"东西"(不是margin-left:auto; margin-right:auto;和宽度的东西)的任何简单方法,取代的东西<center>?而且,为什么它被弃用了?

html tags center deprecated

197
推荐指数
11
解决办法
10万
查看次数