示例#1
0
        private OptimizedStateMachine ProduceStateMachine(string fsmSyntax)
        {
            var asmSyntax = new Parser(Tokenizer.Create()).Parse(fsmSyntax);
            var ast       = new Semantic.SemanticAnalyzer().Analize(asmSyntax);
            var optimizer = new Optimize.Optimizer();

            return(optimizer.Optimize(ast));
        }
        protected static SemanticStateMachine ProduceAst(string input)
        {
            var analizer  = new Semantic.SemanticAnalyzer();
            var fsmSyntax = new Parser(Tokenizer.Create()).Parse(input);
            var ast       = analizer.Analize(fsmSyntax);

            return(ast);
        }
示例#3
0
        private void AssertWithHeader(string full, string expected, EmptyVisitor visitor)
        {
            var syntax   = new Parser(Tokenizer.Create()).Parse(full);
            var semantic = new Semantic.SemanticAnalyzer().Analize(syntax);
            var machine  = new Optimize.Optimizer().Optimize(semantic);
            var node     = new NscGenerator().Generate(machine);

            node.Accept(visitor);
            visitor.Result.Should().Be(expected);
        }
示例#4
0
        private void AssertGenerated(string transitionSyntax, string expected, EmptyVisitor visitor)
        {
            var header   = "Initial: I FSM:f Actions:acts";
            var syntax   = new Parser(Tokenizer.Create()).Parse(header + transitionSyntax);
            var semantic = new Semantic.SemanticAnalyzer().Analize(syntax);
            var machine  = new Optimize.Optimizer().Optimize(semantic);
            var node     = new NscGenerator().Generate(machine);

            node.Accept(visitor);
            visitor.Result.Should().Be(expected);
        }
示例#5
0
        public string Generate(string input)
        {
            var syntax   = new Parser(Tokenizer.Create()).Parse(input);
            var semantic = new Semantic.SemanticAnalyzer().Analize(syntax);
            var machine  = new Optimize.Optimizer().Optimize(semantic);
            var node     = new NscGenerator().Generate(machine);
            var visitor  = new CsharpVisitor();

            node.Accept(visitor);
            return(visitor.Result);
        }