小编chr*_*ris的帖子

如何使用T4从一个模板同时生成两个文件?

我有一个案例,我需要生成两个CSharp代码文件具有相同的代码但不同的方法的输入和输出类型的命名空间.实际上,每个文件都针对特定国家/地区,而且类型来自特定国家/地区的WSDL.

我正在围绕服务编写一些包装器,逻辑完全相同,但是从WSDL自动生成的类型是不同的.我怎样才能减少编码工作量并在一个地方编写逻辑并为两组不同类型生成逻辑?

.net c# t4 code-generation webservice-client

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

Makefile中缺少分隔符?

以下Makefile不起作用,我不确定发生了什么.

CC = gcc
CFLAGS = -Wall -g

demo:
    ${CC} ${CFLAGS} demo.c -o demo
lib:
    ${CC} ${CFLAGS} lib.c -o lib
clean:
    rm -f lib demo
Run Code Online (Sandbox Code Playgroud)

Demo具有main函数,lib具有一组演示中使用的方法.

我在-cg中添加了-c标志.但是,当我运行make时,我得到:

Makefile:5: *** missing separator.  Stop.
Run Code Online (Sandbox Code Playgroud)

c makefile

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

在插入模式下创建新行

我想用Shift+之类的东西EnterVim中创建一个新行.

所以如果|是光标,这就是我想做的事情:

<%= some.code("in here") | %>
Run Code Online (Sandbox Code Playgroud)

现在,按Shift+ Enter(或类似的东西)并将其作为输出:

<%= some.code("in here") %>
and my new line here |
Run Code Online (Sandbox Code Playgroud)

这可能吗?

vim

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

Python解析器,用于类似Python的语言

我正在寻找为源文件编写Python导入过滤器或预处理器,这些源文件本质上是带有额外语言元素的Python.目标是读取源文件,将其解析为抽象语法树,应用一些转换以实现语言的新部分,并编写有效的Python源,然后CPython可以使用它.我想用Python编写这个东西,我正在为这个任务寻找最好的解析器.

内置于Python的解析器是不合适的,因为它要求源文件是实际的Python,而这些不是.有大量的解析器(或解析器生成器)可以与Python一起使用,但如果没有大量的研究,很难说哪个是最适合我的需求.

总之,我的要求是:

  1. Parser是用Python编写的,或者是Python绑定.
  2. 附带一个我可以调整的Python语法,或者可以轻松地使用其他地方可用的可调整的Python语法(例如http://docs.python.org/reference/grammar.html).
  3. 转换后可以重新序列化AST.
  4. 用API方式工作不应该太可怕.

有什么建议?

python parsing code-generation

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

伊莎贝尔:大锤发现了一个证据,但它失败了

通常我有问题sledgehammer找到证据,但是当我插入它时,它不会终止.我猜sledgehammer是Isabelle最重要的部分之一,但如果证据失败则会变得很烦人.

Sledgehammer教程中,有一个小章节"为什么Metis无法重建证明?".

它列出:

  1. 尝试isar_proofs选项以获得逐步的Isar证明,其中每个步骤都是正确的metis.由于步骤相当小, metis因此更有可能重播它们.
  2. 尝试使用smt证明方法而不是metis.它通常更强大,但您需要使用Z3重放证明,信任SMT求解器或使用证书.
  3. 尝试blast或者auto证明方法,通过传递必要的事实unfolding,using,intro:,elim:,dest:,或simp:适当.

问题是第一个选项使证明更加冗长,并且还涉及手动干预.第二种选择很少有效.

那么第三种选择呢?我可以使用任何易于遵循的启发式方法吗?

unfolding和之间有什么区别using?也有关于如何使用的最佳做法intro:,elim:以及dest:从失败的metis证明吗?

部分例子

proof- 
  have "(det (?lm)) = (det (transpose ?lm))" by (smt det_transpose) 
  then have "(det (?lm)) = [...][not shown]"
    unfolding det_transpose transpose_mat_factor_col by auto
  then show ?thesis [...][not …
Run Code Online (Sandbox Code Playgroud)

theorem-proving isabelle

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

Isabelle中矛盾的惯用语证明?

到目前为止,我在Isabelle的以下风格中使用矛盾来编写证据(使用Jeremy Siek的模式):

lemma "<expression>"
proof -
  {
    assume "¬ <expression>"
    then have False sorry
  }
  then show ?thesis by blast
qed
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在没有嵌套的原始校样块的情况下工作{ ... }

proof isabelle isar

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

OCaml中的弱多态性

我对OCaml中的弱多态性有点困惑.

请参阅以下代码片段,我在其中定义一个函数remember:

let remember x =
   let cache = ref None in
      match !cache with
       | Some y -> y
       | None -> cache := Some x; x
;;
Run Code Online (Sandbox Code Playgroud)

编译器可以推断出多态类型'a -> 'a,并cache在本地使用.

但是当我修改上面的代码时

let remember =
   let cache = ref None in
    (fun x ->  match !cache with
         | Some y -> y
         | None -> cache := Some x; x)
;;
Run Code Online (Sandbox Code Playgroud)

编译器推断出弱多态类型'_a -> '_a,似乎cache在调用之间共享remember.

为什么编译器在这里推断出弱多态类型以及为什么要 …

ocaml functional-programming ml value-restriction

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

有可能不在伊莎贝尔进口任何理论吗?

我想在一个名为理论的理论中定义我自己的列表类型List,但是已经存在一个具有该名称的理论.是否有比它更轻量级的理论Main

isabelle

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

C#反射,改变方法的主体

是否可以在运行时更改方法体?

class Person
{
    public void DoSth()
    { Console.WriteLine("Hello!"); }
}
Run Code Online (Sandbox Code Playgroud)

我想有一个简单的输入字段(如文本框),我可以在运行时编写方法体源代码.

文本框可能包含以下数据:

for (int i = 0; i < 5; i++)
     Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

应该在什么时候进行

new Person().DoSth()
Run Code Online (Sandbox Code Playgroud)

叫做.

在C#(使用Reflection)中是否可以(或如何)?
感谢您的帮助.

编辑:
如果上述情况不可能,是否可以在运行时创建一个新方法并调用它?

c# code-generation

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

parsec使用它来解析parens

例如,如果我想将具有多个带括号的组的字符串解析为包含每个组的字符串列表

"((a b c) a b c)"
Run Code Online (Sandbox Code Playgroud)

["((a b c) a b c)","( a b c)"]
Run Code Online (Sandbox Code Playgroud)

我怎么用parsec做到这一点?使用between看起来不错,但似乎不可能用开始和结束值分开.

parsing haskell parsec

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