本文整理汇总了C#中Microsoft.PSharp.LanguageServices.Parsing.PSharpParser类的典型用法代码示例。如果您正苦于以下问题:C# PSharpParser类的具体用法?C# PSharpParser怎么用?C# PSharpParser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PSharpParser类属于Microsoft.PSharp.LanguageServices.Parsing命名空间,在下文中一共展示了PSharpParser类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestVoidMethodDeclaration
public void TestVoidMethodDeclaration()
{
var test = @"
namespace Foo {
machine M {
start state S { }
void Bar() { }
}
}";
var tokens = new PSharpLexer().Tokenize(test);
var program = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), false).ParseTokens(tokens);
program.Rewrite();
var expected = @"
using System;
using Microsoft.PSharp;
namespace Foo
{
class M : Machine
{
[Microsoft.PSharp.Start]
class S : MachineState
{
}
private void Bar(){ }
}
}";
Assert.AreEqual(expected.Replace(Environment.NewLine, string.Empty),
program.GetSyntaxTree().ToString().Replace("\n", string.Empty));
}
示例2: TestMachineDeferEventDeclarationWithExtraComma
public void TestMachineDeferEventDeclarationWithExtraComma()
{
var test = @"
namespace Foo {
machine M {
group G {
start state S
{
defer e1,e2,;
}
}
}
}";
ParsingOptions options = ParsingOptions.CreateDefault()
.DisableThrowParsingException();
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), options);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Expected event identifier.",
parser.GetParsingErrorLog());
}
示例3: TestUnexpectedTokenWithoutNamespace
public void TestUnexpectedTokenWithoutNamespace()
{
var test = "private";
var parser = new PSharpParser(new PSharpProject(), SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Unexpected token.",
parser.GetParsingErrorLog());
}
示例4: TestIncorrectUsingDeclaration
public void TestIncorrectUsingDeclaration()
{
var test = "using System.Text";
var parser = new PSharpParser(new PSharpProject(), SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Expected \";\".",
parser.GetParsingErrorLog());
}
示例5: TestNamespaceDeclarationWithoutIdentifier
public void TestNamespaceDeclarationWithoutIdentifier()
{
var test = "namespace { }";
var parser = new PSharpParser(new PSharpProject(), SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Expected namespace identifier.",
parser.GetParsingErrorLog());
}
示例6: TestEventDeclarationWithoutNamespace
public void TestEventDeclarationWithoutNamespace()
{
var test = "event e;";
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Must be declared inside a namespace.",
parser.GetParsingErrorLog());
}
示例7: TestUnexpectedTokenWithoutNamespace
public void TestUnexpectedTokenWithoutNamespace()
{
var test = "private";
ParsingOptions options = ParsingOptions.CreateDefault()
.DisableThrowParsingException();
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), options);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Unexpected token.",
parser.GetParsingErrorLog());
}
示例8: TestUsingDeclarationWithoutIdentifier
public void TestUsingDeclarationWithoutIdentifier()
{
var test = "using;";
ParsingOptions options = ParsingOptions.CreateDefault()
.DisableThrowParsingException();
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), options);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Expected identifier.",
parser.GetParsingErrorLog());
}
示例9: TestEventDeclarationWithoutNamespace
public void TestEventDeclarationWithoutNamespace()
{
var test = "event e;";
ParsingOptions options = ParsingOptions.CreateDefault()
.DisableThrowParsingException();
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), options);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Must be declared inside a namespace.",
parser.GetParsingErrorLog());
}
示例10: TestPrivateEventDeclaration
public void TestPrivateEventDeclaration()
{
var test = @"
namespace Foo {
private event e;
}";
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual(parser.GetParsingErrorLog(),
"Event and machine declarations must be internal or public.");
}
示例11: TestUsingDeclaration
public void TestUsingDeclaration()
{
var test = "using System.Text;";
var tokens = new PSharpLexer().Tokenize(test);
var program = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), false).ParseTokens(tokens);
program.Rewrite();
var expected = @"
using System;
using Microsoft.PSharp;
using System.Text;";
Assert.AreEqual(expected.Replace(Environment.NewLine, string.Empty),
program.GetSyntaxTree().ToString().Replace("\n", string.Empty));
}
示例12: TestMachineDeclarationWithoutState
public void TestMachineDeclarationWithoutState()
{
var test = @"
namespace Foo {
machine M {
}
}";
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("A machine must declare at least one state.",
parser.GetParsingErrorLog());
}
示例13: TestMachineFieldDeclarationWithoutSemicolon
public void TestMachineFieldDeclarationWithoutSemicolon()
{
var test = @"
namespace Foo {
machine M {
machine N
start state S { }
}
}";
var parser = new PSharpParser(new PSharpProject(), SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Expected \"(\" or \";\".",
parser.GetParsingErrorLog());
}
示例14: TestInternalFieldDeclaration
public void TestInternalFieldDeclaration()
{
var test = @"
namespace Foo {
machine M {
internal int k;
start state S { }
}
}";
var parser = new PSharpParser(new PSharpProject(), SyntaxFactory.ParseSyntaxTree(test), false);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("A field or method cannot be internal.",
parser.GetParsingErrorLog());
}
示例15: TestEventDeclarationWithGenericError2
public void TestEventDeclarationWithGenericError2()
{
var test = @"
namespace Foo {
event e<;
}";
ParsingOptions options = ParsingOptions.CreateDefault()
.DisableThrowParsingException();
var parser = new PSharpParser(new PSharpProject(),
SyntaxFactory.ParseSyntaxTree(test), options);
var tokens = new PSharpLexer().Tokenize(test);
var program = parser.ParseTokens(tokens);
Assert.AreEqual("Invalid generic expression.",
parser.GetParsingErrorLog());
}