示例#1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 internal BaseMachineVisitor(PSharpProject project, List <Tuple <SyntaxToken, string> > errorLog)
     : base(project, errorLog)
 {
     this.Actions          = new Dictionary <ClassDeclarationSyntax, List <MethodDeclarationSyntax> >();
     this.ActionsThatRaise = new Dictionary <ClassDeclarationSyntax, List <MethodDeclarationSyntax> >();
     this.ActionsThaPop    = new Dictionary <ClassDeclarationSyntax, List <MethodDeclarationSyntax> >();
 }
示例#2
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 /// <param name="warningLog">Warning log</param>
 protected BaseVisitor(PSharpProject project, List<Tuple<SyntaxToken, string>> errorLog,
     List<Tuple<SyntaxToken, string>> warningLog)
 {
     this.Project = project;
     this.ErrorLog = errorLog;
     this.WarningLog = warningLog;
 }
示例#3
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 internal BaseMachineVisitor(PSharpProject project, List<Tuple<SyntaxToken, string>> errorLog)
     : base(project, errorLog)
 {
     this.Actions = new Dictionary<ClassDeclarationSyntax, List<MethodDeclarationSyntax>>();
     this.ActionsThatRaise = new Dictionary<ClassDeclarationSyntax, List<MethodDeclarationSyntax>>();
     this.ActionsThaPop = new Dictionary<ClassDeclarationSyntax, List<MethodDeclarationSyntax>>();
 }
示例#4
0
        /// <summary>
        /// Runs the P# parsing engine.
        /// </summary>
        public void Run()
        {
            // Parse the projects.
            if (this.CompilationContext.Configuration.ProjectName.Equals(""))
            {
                foreach (var project in this.CompilationContext.GetSolution().Projects)
                {
                    var psharpProject = new PSharpProject(this.CompilationContext, project.Name);
                    psharpProject.Parse();
                    this.CompilationContext.GetProjects().Add(psharpProject);
                }
            }
            else
            {
                // Find the project specified by the user.
                var targetProject = this.CompilationContext.GetSolution().Projects.Where(
                    p => p.Name.Equals(this.CompilationContext.Configuration.ProjectName)).FirstOrDefault();

                var projectDependencyGraph = this.CompilationContext.GetSolution().GetProjectDependencyGraph();
                var projectDependencies = projectDependencyGraph.GetProjectsThatThisProjectTransitivelyDependsOn(targetProject.Id);

                foreach (var project in this.CompilationContext.GetSolution().Projects)
                {
                    if (!projectDependencies.Contains(project.Id) && !project.Id.Equals(targetProject.Id))
                    {
                        continue;
                    }

                    var psharpProject = new PSharpProject(this.CompilationContext, project.Name);
                    psharpProject.Parse();
                    this.CompilationContext.GetProjects().Add(psharpProject);
                }
            }
        }
示例#5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 /// <param name="warningLog">Warning log</param>
 protected BaseVisitor(PSharpProject project, List <Tuple <SyntaxToken, string> > errorLog,
                       List <Tuple <SyntaxToken, string> > warningLog)
 {
     this.Project    = project;
     this.ErrorLog   = errorLog;
     this.WarningLog = warningLog;
 }
示例#6
0
        /// <summary>
        /// Runs the P# parsing engine.
        /// </summary>
        public void Run()
        {
            // Parse the projects.
            if (this.CompilationContext.Configuration.ProjectName.Equals(""))
            {
                foreach (var project in this.CompilationContext.GetSolution().Projects)
                {
                    var psharpProject = new PSharpProject(this.CompilationContext, project.Name);
                    psharpProject.Parse();
                    this.CompilationContext.GetProjects().Add(psharpProject);
                }
            }
            else
            {
                // Find the project specified by the user.
                var targetProject = this.CompilationContext.GetSolution().Projects.Where(
                    p => p.Name.Equals(this.CompilationContext.Configuration.ProjectName)).FirstOrDefault();

                var projectDependencyGraph = this.CompilationContext.GetSolution().GetProjectDependencyGraph();
                var projectDependencies    = projectDependencyGraph.GetProjectsThatThisProjectTransitivelyDependsOn(targetProject.Id);

                foreach (var project in this.CompilationContext.GetSolution().Projects)
                {
                    if (!projectDependencies.Contains(project.Id) && !project.Id.Equals(targetProject.Id))
                    {
                        continue;
                    }

                    var psharpProject = new PSharpProject(this.CompilationContext, project.Name);
                    psharpProject.Parse();
                    this.CompilationContext.GetProjects().Add(psharpProject);
                }
            }
        }
示例#7
0
        /// <summary>
        /// Runs the P# parsing engine.
        /// </summary>
        public static void Run()
        {
            ParsingEngine.PSharpProjects = new List<PSharpProject>();

            // Parse the projects.
            if (Configuration.ProjectName.Equals(""))
            {
                foreach (var project in ProgramInfo.Solution.Projects)
                {
                    var psharpProject = new PSharpProject(project.Name);
                    psharpProject.Parse();
                    ParsingEngine.PSharpProjects.Add(psharpProject);
                }
            }
            else
            {
                // Find the project specified by the user.
                var targetProject = ProgramInfo.Solution.Projects.Where(
                    p => p.Name.Equals(Configuration.ProjectName)).FirstOrDefault();

                var projectDependencyGraph = ProgramInfo.Solution.GetProjectDependencyGraph();
                var projectDependencies = projectDependencyGraph.GetProjectsThatThisProjectTransitivelyDependsOn(targetProject.Id);

                foreach (var project in ProgramInfo.Solution.Projects)
                {
                    if (!projectDependencies.Contains(project.Id) && !project.Id.Equals(targetProject.Id))
                    {
                        continue;
                    }

                    var psharpProject = new PSharpProject(project.Name);
                    psharpProject.Parse();
                    ParsingEngine.PSharpProjects.Add(psharpProject);
                }
            }

            // Rewrite the projects.
            for (int idx = 0; idx < ParsingEngine.PSharpProjects.Count; idx++)
            {
                ParsingEngine.PSharpProjects[idx].Rewrite();
            }
        }
示例#8
0
        /// <summary>
        /// Runs the P# parsing engine.
        /// </summary>
        public static void Run()
        {
            ParsingEngine.PSharpProjects = new List <PSharpProject>();

            // Parse the projects.
            if (Configuration.ProjectName.Equals(""))
            {
                foreach (var project in ProgramInfo.Solution.Projects)
                {
                    var psharpProject = new PSharpProject(project.Name);
                    psharpProject.Parse();
                    ParsingEngine.PSharpProjects.Add(psharpProject);
                }
            }
            else
            {
                // Find the project specified by the user.
                var targetProject = ProgramInfo.Solution.Projects.Where(
                    p => p.Name.Equals(Configuration.ProjectName)).FirstOrDefault();

                var projectDependencyGraph = ProgramInfo.Solution.GetProjectDependencyGraph();
                var projectDependencies    = projectDependencyGraph.GetProjectsThatThisProjectTransitivelyDependsOn(targetProject.Id);

                foreach (var project in ProgramInfo.Solution.Projects)
                {
                    if (!projectDependencies.Contains(project.Id) && !project.Id.Equals(targetProject.Id))
                    {
                        continue;
                    }

                    var psharpProject = new PSharpProject(project.Name);
                    psharpProject.Parse();
                    ParsingEngine.PSharpProjects.Add(psharpProject);
                }
            }

            // Rewrite the projects.
            for (int idx = 0; idx < ParsingEngine.PSharpProjects.Count; idx++)
            {
                ParsingEngine.PSharpProjects[idx].Rewrite();
            }
        }
示例#9
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal RaiseRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#10
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal PParser(PSharpProject project, SyntaxTree tree, bool exitAtError = true)
     : base(project, tree, exitAtError)
 {
 }
示例#11
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 public PSharpProgram(PSharpProject project, SyntaxTree tree)
     : base(project, tree)
 {
     this.UsingDeclarations     = new List <UsingDeclaration>();
     this.NamespaceDeclarations = new List <NamespaceDeclaration>();
 }
示例#12
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 protected CSharpRewriter(PSharpProject project)
 {
     this.Project = project;
 }
示例#13
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="project">PSharpProject</param>
        internal PopRewriter(PSharpProject project)
            : base(project)
        {

        }
示例#14
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal MonitorRewriter(PSharpProject project)
     : base(project)
 {
     this.ToRemove = new List <SyntaxNode>();
 }
示例#15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MachineDeclarationParser"/> class.
 /// </summary>
 internal MachineDeclarationParser(PSharpProject project, List <Tuple <SyntaxToken, string> > errorLog,
                                   List <Tuple <SyntaxToken, string> > warningLog)
     : base(project, errorLog, warningLog)
 {
 }
示例#16
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal NondeterministicChoiceRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#17
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal BaseParser(PSharpProject project, SyntaxTree tree, bool exitAtError)
 {
     this.Project             = project;
     this.SyntaxTree          = tree;
     this.IsRunningInternally = exitAtError;
 }
示例#18
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="project">PSharpProject</param>
        internal TriggerRewriter(PSharpProject project)
            : base(project)
        {

        }
示例#19
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="project">PSharpProject</param>
        internal AssertRewriter(PSharpProject project)
            : base(project)
        {

        }
示例#20
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="skipErrorChecking">Skips error checking</param>
 internal CSharpParser(PSharpProject project, SyntaxTree tree, bool skipErrorChecking)
     : base(project, tree, false)
 {
     this.ErrorLog          = new List <Tuple <SyntaxToken, string> >();
     this.SkipErrorChecking = skipErrorChecking;
 }
示例#21
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal HaltEventRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#22
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal SendRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#23
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal TriggerRewriter(PSharpProject project)
     : base(project)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 internal MonitorStateDeclarationParser(PSharpProject project, List <Tuple <SyntaxToken, string> > errorLog)
     : base(project, errorLog)
 {
 }
示例#25
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal FieldAccessRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#26
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 /// <param name="warningLog">Warning log</param>
 internal BaseStateVisitor(PSharpProject project, List<Tuple<SyntaxToken, string>> errorLog,
     List<Tuple<SyntaxToken, string>> warningLog)
     : base(project, errorLog, warningLog)
 {
 }
示例#27
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal PSharpParser(PSharpProject project, SyntaxTree tree, bool exitAtError = true)
     : base(project, tree, exitAtError)
 {
 }
示例#28
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="skipErrorChecking">Skips error checking</param>
 internal CSharpParser(PSharpProject project, SyntaxTree tree, bool skipErrorChecking)
     : base(project, tree, false)
 {
     this.ErrorLog = new List<Tuple<SyntaxToken, string>>();
     this.SkipErrorChecking = skipErrorChecking;
 }
示例#29
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal SendRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#30
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal PopRewriter(PSharpProject project)
     : base(project)
 {
     this.PopStmts = new List <StatementSyntax>();
 }
示例#31
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal HaltEventRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#32
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal MachineTypeRewriter(PSharpProject project)
     : base(project)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 /// <param name="warningLog">Warning log</param>
 internal MonitorDeclarationParser(PSharpProject project, List<Tuple<SyntaxToken, string>> errorLog,
     List<Tuple<SyntaxToken, string>> warningLog)
     : base(project, errorLog, warningLog)
 {
 }
示例#34
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal BaseParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
 {
     this.Project = project;
     this.SyntaxTree = tree;
     this.Options = options;
 }
示例#35
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="project">PSharpProject</param>
        internal RaiseRewriter(PSharpProject project)
            : base(project)
        {

        }
示例#36
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal PayloadRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#37
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal ThisRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#38
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal TokenParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
     : base(project, tree, options)
 {
     this.ErrorLog = new StringBuilder();
 }
示例#39
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal PopRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#40
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal PSharpParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
     : base(project, tree, options)
 {
 }
示例#41
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal TokenParser(PSharpProject project, SyntaxTree tree, bool exitAtError)
     : base(project, tree, exitAtError)
 {
     this.ErrorLog = "";
 }
示例#42
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 internal AbstractPSharpProgram(PSharpProject project, SyntaxTree tree)
 {
     this.Project    = project;
     this.SyntaxTree = tree;
 }
示例#43
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="filePath">SyntaxTree</param>
 public PProgram(PSharpProject project, SyntaxTree tree)
     : base(project, tree)
 {
     this.EventDeclarations   = new List <EventDeclaration>();
     this.MachineDeclarations = new List <MachineDeclaration>();
 }
示例#44
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal PayloadRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#45
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal MonitorRewriter(PSharpProject project)
     : base(project)
 {
     this.ToRemove = new List<SyntaxNode>();
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal CreateMachineRewriter(PSharpProject project)
     : base(project)
 {
     this.ToReplace = new List<SyntaxNode>();
     this.ToRemove = new List<SyntaxNode>();
 }
示例#47
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal BaseParser(PSharpProject project, SyntaxTree tree, bool exitAtError)
 {
     this.Project = project;
     this.SyntaxTree = tree;
     this.IsRunningInternally = exitAtError;
 }
示例#48
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal FairNondetRewriter(PSharpProject project)
     : base(project)
 {
     
 }
示例#49
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="filePath">SyntaxTree</param>
 public PProgram(PSharpProject project, SyntaxTree tree)
     : base(project, tree)
 {
     this.EventDeclarations = new List<EventDeclaration>();
     this.MachineDeclarations = new List<MachineDeclaration>();
 }
示例#50
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="project">PSharpProject</param>
        /// <param name="errorLog">Error log</param>
        internal MachineDeclarationParser(PSharpProject project, List<Tuple<SyntaxToken, string>> errorLog)
            : base(project, errorLog)
        {

        }
示例#51
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal BaseParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
 {
     this.Project    = project;
     this.SyntaxTree = tree;
     this.Options    = options;
 }
示例#52
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal FairNondetRewriter(PSharpProject project)
     : base(project)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal CreateMachineRewriter(PSharpProject project)
     : base(project)
 {
     this.ToReplace = new List <SyntaxNode>();
     this.ToRemove  = new List <SyntaxNode>();
 }
示例#54
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal PSharpParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
     : base(project, tree, options)
 {
 }
示例#55
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal RaiseRewriter(PSharpProject project)
     : base(project)
 {
     this.RaiseStmts = new List<ExpressionStatementSyntax>();
 }
示例#56
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="exitAtError">Exits at error</param>
 internal TokenParser(PSharpProject project, SyntaxTree tree, bool exitAtError)
     : base(project, tree, exitAtError)
 {
     this.ErrorLog = "";
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 internal NondeterministicChoiceRewriter(PSharpProject project)
     : base(project)
 {
 }
示例#58
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CSharpParser"/> class.
 /// </summary>
 internal CSharpParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
     : base(project, tree, options)
 {
     this.ErrorLog   = new List <Tuple <SyntaxToken, string> >();
     this.WarningLog = new List <Tuple <SyntaxToken, string> >();
 }
示例#59
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="tree">SyntaxTree</param>
 /// <param name="options">ParsingOptions</param>
 internal TokenParser(PSharpProject project, SyntaxTree tree, ParsingOptions options)
     : base(project, tree, options)
 {
     this.ErrorLog = new StringBuilder();
 }
示例#60
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">PSharpProject</param>
 /// <param name="errorLog">Error log</param>
 internal BaseStateVisitor(PSharpProject project, List <Tuple <SyntaxToken, string> > errorLog)
     : base(project, errorLog)
 {
 }