- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
using System;
using System.Collections.Generic;
using Microsoft.Boogie;
public class Trace
{
public static void Main(string[] args)
{
if (args.Length != 2){
return;
}
Program program = new Program();
List<string> defines = new List<string>();
Parser.Parse(args[0], defines, out program);
string[] lines = System.IO.File.ReadAllLines(args[1]);
Dictionary< Block, List<Block> > adj = new Dictionary< Block, List<Block> >();
foreach (Declaration D in program.TopLevelDeclarations){
Implementation I = D as Implementation;
if(I != null){
foreach (Block B in I.Blocks){
object cmd = B.TransferCmd;
if(cmd is GotoCmd){
List<Block> target = cmd.labelTargets;
adj.insert(B, target);
}
else if(cmd is ReturnCmd){
adj.insert(B, null);
}
}
}
}
}
}
我是 C# 的新手,我对如何迭代 program.TopLevelDeclarations
很困惑.
尝试遍历一个简单的列表是可行的,但是当我尝试包含 Microsoft Boogie 时库,编译器会抛出一些错误。
我正在使用 gmcs
编译我的程序在 Ubuntu 13.04 上使用命令:
gmcs -r:../../boogie/Binaries/Boogie.exe -r:../../boogie/Binaries/Core.dll Trace.cs
它给出了以下错误:
Missing method .ctor in assembly /home/boogie/Binaries/Core.dll, type System.Diagnostics.Contracts.ContractClassAttribute
Can`t find custom attr constructor image: /home/boogie/Binaries/Core.dll mtoken: 0x0a000463
Trace.cs(19,52): error CS0584: Internal compiler error: Could not load type
System.Diagnostics.Contracts.ContractClassAttribute
from assemblyCore
.Trace.cs(19,36): error CS0266: Cannot implicitly convert type
object
toSystem.Collections.Generic.List<Microsoft.Boogie.Declaration>
. An explicit conversion exists (are you missing a cast?)Trace.cs(22,30): error CS0584: Internal compiler error: Could not import type
Microsoft.Boogie.Implementation
fromCore, Version=2.2.30705.1126, Culture=neutral, PublicKeyToken=736440c9b414ea16
Trace.cs(22,30): error CS0266: Cannot implicitly convert type
object
tobool
. An explicit conversion exists (are you missing a cast?)Trace.cs(23,55): error CS0584: Internal compiler error: Could not import type
Microsoft.Boogie.Implementation
fromCore, Version=2.2.30705.1126, Culture=neutral, PublicKeyToken=736440c9b414ea16
Trace.cs(23,33): error CS1579: foreach statement cannot operate on variables of type
object
because it does not contain a definition forGetEnumerator
or is inaccessibleCompilation failed: 6 error(s), 0 warnings
有人知道怎么解决吗?我是否错误地包含了库?
最佳答案
我似乎找不到 Microsoft.Boogie.Declaration
的来源, 但鉴于错误消息它有一个 [ContractClass]
编译器找不到的属性:
Trace.cs(19,52): error CS0584: Internal compiler error: Could not load type 'System.Diagnostics.Contracts.ContractClassAttribute' from assembly 'Core'.
因为这个类型 Microsoft.Boogie.Declaration
无法加载,导致 List<Declaration>
的 program.TopLevelDeclarations
显然被某种形式的“ stub ”作为object
.这反过来会导致您的代码失败,因为您无法迭代一个对象。
ContractClassAttribute
已添加到 mscorlib
在 .NET 4 中。您正在使用 gmcs
, 根据mono's CSharp Compiler manual page针对 .NET 2.0 进行编译。
我认为您最好使用 mcs
进行编译,那里推荐。
关于c# - 用Mono编译时如何引用Microsoft.Boogie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453284/
我正在尝试运行 VCC 以验证 C 程序。我对 VCC 生成的中间 Boogie 程序很感兴趣(因为我想在那里插入东西)。为此,VCC 提供了选项 /t。但是,当我尝试在生成的 Boogie 程序上运
using System; using System.Collections.Generic; using Microsoft.Boogie; public class Trace { pub
我一直在达夫尼一瘸一拐地走着,不了解触发器。也许正因为如此,我写的程序似乎让验证者很为难。有时我会花大量时间摆弄我的证明,试图说服 Dafny/Boogie 它是有效的;当我开始工作时,有时验证速度很
我一直在达夫尼一瘸一拐地走着,不了解触发器。也许正因为如此,我写的程序似乎让验证者很为难。有时我会花大量时间摆弄我的证明,试图说服 Dafny/Boogie 它是有效的;当我开始工作时,有时验证速度很
我是一名优秀的程序员,十分优秀!