我最近使用Ply在Python中编写了一个解析器(它是yacc的python重新实现).当我差不多完成解析器时,我发现我需要解析的语法要求我在解析过程中进行一些查找以通知词法分析器.在没有查看通知词法分析器的情况下,我无法正确解析语言中的字符串.
鉴于我可以从语法规则控制词法分析器的状态,我想我将使用解析器模块中的查找表来解决我的用例,但是维护/测试可能变得太难了.所以我想了解一些其他选择.
在Haskell中,我会使用Parsec,一个解析函数库(称为组合器).是否有Parsec的Python实现?或者也许其他一些生产质量库充满了解析功能,所以我可以在Python中构建一个上下文敏感的解析器?
编辑:我在上下文免费解析的所有尝试都失败了.出于这个原因,我不认为ANTLR在这里有用.
我在桌子上有几个触发器,我想保持分离,并希望对它们进行优化.
我可以只有一个触发器并在那里执行逻辑,但我想知道是否有一种更简单/逻辑的方法来实现以预定义的顺序进行此操作?
我在我的一本AI书中读过,用于模拟或游戏中寻路的流行算法(A-Star,Dijkstra)也用于解决众所周知的"15-puzzle".
任何人都可以给我一些关于如何将15-puzzle减少到节点和边缘图的指针,以便我可以应用其中一种算法?
如果我将图中的每个节点视为游戏状态,那么该树不会变得非常大吗?或者只是这样做的方式?
在C#和Java(以及可能的其他语言)中,在"try"块中声明的变量不在相应的"catch"或"finally"块的范围内.例如,以下代码无法编译:
try {
String s = "test";
// (more code...)
}
catch {
Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,catch块中对s的引用发生编译时错误,因为s仅在try块的范围内.(在Java中,编译错误是"s无法解决";在C#中,它是"当前上下文中不存在名称".)
这个问题的一般解决方案似乎是在try块之前而不是try块中声明变量:
String s;
try {
s = "test";
// (more code...)
}
catch {
Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead
}
Run Code Online (Sandbox Code Playgroud)
然而,至少在我看来,(1)这感觉就像一个笨重的解决方案,并且(2)它导致变量具有比程序员预期更大的范围(方法的整个剩余部分,而不仅仅是在的try-catch-最后).
我的问题是,这种语言设计决策背后的原理是什么(在Java中,在C#中,和/或在任何其他适用的语言中)?
假设您有一个从套接字读取的程序.如何将下载速率保持在某个给定阈值以下?
我整天被R分位数函数迷惑了.
我有一个关于分位数如何工作的直观概念,以及统计数据中的MS,但男孩哦,男孩,它的文档让我很困惑.
来自文档:
Q [i](p)=(1 - gamma)x [j] + gamma x [j + 1],
我到目前为止还在用它.对于类型i分位数,它是x [j]和x [j + 1]之间的插值,基于一些神秘的常数伽玛
其中1 <= i <= 9,(jm)/ n <= p <(j-m + 1)/ n,x [j]是第j阶统计量,n是样本大小,m是常数确定的通过样本分位数类型.这里γ取决于g = np + mj的小数部分.
那么,如何计算j?M&
对于连续样本分位数类型(4到9),样本分位数可以通过第k阶统计量和p(k)之间的线性插值获得:
p(k)=(k-alpha)/(n-alpha-beta + 1),其中α和β是由类型确定的常数.此外,m =α+ p(1-α-β),γ= g.
现在我真的迷路了.p,之前是一个常数,现在显然是一个函数.
所以对于Type 7分位数,默认...
输入7
p(k)=(k-1)/(n-1).在这种情况下,p(k)=模式[F(x [k])].这是由S.使用的.
有人想帮帮我吗?特别是我对P的是一个功能和常数,究竟发生了什么符号糊涂米是,现在来计算j表示一些特殊的p.
我希望根据这里的答案,我们可以提交一些修改后的文档,更好地解释这里发生了什么.
quantile.R源代码 或类型:quantile.default
我正在尝试用Java编写一个简单的网络聊天程序.我几乎没有网络经验.我想知道我应该开始考虑哪些资源(当然在这旁边).
坚持使用核心Java API现在是最好的.
将InfoPath 2007 Forms从设计器部署到我们的开发环境的SharePoint服务器中真的很痛苦.我们所有的表单都需要"完全信任",因为它们包含用C#编写的业务逻辑.以下是手动步骤:
1)在InfoPath中运行"发布表单"向导,指定要发布到的目标站点以及保存xsn文件的位置.
2)从网站集功能中取消激活表单的现有版本(如果存在旧版本).
3)在开发服务器上登录Central Admin.导航到"应用程序管理" - >"管理表单模板"并上载xsn文件.
4)激活表单作为网站集功能.
有谁知道如何自动化?也许通过stsadm?
除非明确要求,否则如何告诉Activerecord不加载blob列?我的旧数据库中有一些非常大的blob必须被排除在"普通"对象之外.
在我尝试为OS X编写游戏手柄代码之前,我认为我是一个不错的程序员.现在我感到无用.
有谁知道我可以在我的(非免费)游戏中合法使用的任何代码?
在OS X上与游戏手柄交谈真的很难吗?我错过了什么?
java ×2
a-star ×1
activerecord ×1
algorithm ×1
blob ×1
c# ×1
combinators ×1
deployment ×1
dijkstra ×1
exception ×1
graph-theory ×1
infopath ×1
io ×1
iokit ×1
lazy-loading ×1
macos ×1
math ×1
networking ×1
parsec ×1
parsing ×1
python ×1
r ×1
scope ×1
sharepoint ×1
sql ×1
statistics ×1
stsadm ×1
t-sql ×1
triggers ×1