小编Han*_*ans的帖子

有没有办法让parsec报告"shift-reduce"冲突?

我正在玩parsec并意识到我有一个含糊不清的语法.显然这是我的错误,但我有点习惯yacc风格的解析器生成器让我知道我是愚蠢的.Parsec只按你给解析器的顺序吃字符(是的,我知道try).

有什么办法让parsec告诉我什么时候我的语法没有留下来?对我有用的程序很棒.

谢谢!

(我知道shift-reduce与不同类型的解析器技术有关.我只是想描述模糊的语法.)

haskell parsec

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

scala光滑有多成熟?

我一直在寻找使用Scala访问数据库的一些语言集成方法,我遇到了光滑的问题.看起来很漂亮,呃,光滑,但我很好奇它的成熟度.我看到它有各种各样的数据库后端实现,这非常酷,但抽象有多快可能泄漏(每个数据库抽象都有)?

换句话说,您是否会将此作为向老板进行数据库访问的首选方式?如果是这样,那么投球会是什么,否则为什么不呢?

理由:我认为.NET的LINQ很酷,Scala也是如此.一个人可以有效地兼得吗?

linq scala

5
推荐指数
0
解决办法
2645
查看次数

在WiX安装程序中安装32位文件和64位注册表设置

我是否可以使用WiX设置64位注册表项以引用32位程序文件路径?

我正在为另一个软件编写插件.我想我的插件DLL进去C:\Program Files (x86)\MyPlugin\MyPlugin.dll C:\Program Files\MyPlugin\MyPlugin.dll,因为DLL是32位,而不是64位.

不过,我需要的注册表项,在去HKLM/Software/Company/Product/Etc.... HKLM/Wow6432Node/Software/Company/Product/Etc....,因为实际读取注册表项的过程是64位的.该64位进程读取注册表并启动一个32位进程来沙箱dll.

有没有办法做到这一点?我尝试使用具有不同Win64属性值的不同组件,甚至将它们放在单独的组件组中.但是,我不断收到这些构建错误(不是警告):

ICE80: This 64BitComponent RegistryComponent uses 32BitDirectory INSTALLFOLDER
Run Code Online (Sandbox Code Playgroud)

windows dll windows-installer wix

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

FParsec标识符与关键字

对于具有关键字的语言,需要一些特殊的技巧来防止例如"if"被解释为标识符,并且"ifSomeVariableName"变为关键字"if",后跟标识符流中的标识符"SomeVariableName".

对于递归下降和Lex/Yacc,我简单地采用了在词法分析器和解析器之间转换令牌流的方法(根据有用的指令).

然而,FParsec似乎并没有真正做一个单独的词法分析步骤,所以我想知道处理这个问题的最佳方法是什么.说到,似乎Haskell的Parsec支持lexer层,但FParsec不支持?

f# parser-combinators fparsec

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

具有许多文件的 golang 包的内部组织

我有一个想要分发的 Go 库。它有 62 个源文件,但我想将 API 保存在一个包中。有没有办法可以在单个包中使用多个目录来存储代码?这不是大量的源代码,因为源文件本身很小,如果可能的话,我想保持这种状态以使其可导航。

由于它模仿了其他语言的类似库,因此它目前有两个包:/project 和 /project/models。在了解了有关 Go 打包的更多信息后,我现在意识到这对于分发和使用来说很笨拙。用户更喜欢单个包。

有没有一种“gopheric”的方式来做到这一点?

package go

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