コード例 #1
0
ファイル: IterInfo.cs プロジェクト: AutomataDotNet/Automata
 public static IEnumerable<iterassgn> Initializers(iterexpr e, Symtab stab)
 {
     foreach (iterassgn ia in assign_filter.Apply(e.initializer))
     {
         yield return ia;
     }
 }
コード例 #2
0
ファイル: IterInfo.cs プロジェクト: AutomataDotNet/Automata
 public static IEnumerable<iterassgn> AllUpdates(itercase ic, Symtab stab=null)
 {
     foreach (iterassgn ia in assign_filter.Apply(ic))
     {
         yield return ia;
     }
 }
コード例 #3
0
ファイル: BekParser.cs プロジェクト: AutomataDotNet/Automata
 public static BekProgram BekFromString(string program)
 {
     var tree = ParseFromString(program);
     var stab = new Symtab(tree);
     //TypeChecker.TypeCheck(tree, stab);
     var res = new BekProgram(tree, stab);
     return res;
 }
コード例 #4
0
ファイル: IterInfo.cs プロジェクト: AutomataDotNet/Automata
 public static IEnumerable<iterassgn> InitialChars(iterexpr e, Symtab stab)
 {
     foreach (iterassgn ia in assign_filter.Apply(e.initializer))
     {
         if (stab.Get(ia.lhs).type == BekTypes.CHAR)
             yield return ia;
     }
 }
コード例 #5
0
ファイル: IterInfo.cs プロジェクト: AutomataDotNet/Automata
 public static IEnumerable<iterassgn> CharUpdates(itercase ic, Symtab stab)
 {
     foreach (iterassgn ia in assign_filter.Apply(ic))
     {
         if (stab.Get(ia.lhs).type == BekTypes.CHAR)
             yield return ia;
     }
 }
コード例 #6
0
ファイル: BekParser.cs プロジェクト: teodorov/Automata-1
        public static List <BekProgram> DefsFromString(string programs)
        {
            var res = new List <BekProgram>();

            try
            {
                var input  = new Antlr.Runtime.ANTLRStringStream(programs);
                var lexer  = new bekLexer(input);
                var tokens = new Antlr.Runtime.CommonTokenStream(lexer);
                var parser = new bekParser(tokens);

                var resp = parser.BekPgms();
                foreach (BekPgm cur in resp)
                {
                    var stab = new Symtab(cur);
                    //TypeChecker.TypeCheck(cur, stab);
                    var p = new BekProgram(cur, stab);
                    //Library.PerformExpansions(p);
                    res.Add(p);
                }
            }
            catch (Antlr.Runtime.MismatchedTokenException e)
            {
                string tok = (e.Token != null ? "'" + e.Token.Text + "'" : (e.Character >= 0 ? Microsoft.Automata.StringUtility.Escape((char)e.Character) : ""));
                string msg = "unexpected token " + tok;
                if (tok != "" && 0 <= e.Expecting && e.Expecting < ParserImpl.bekParser.tokenNames.Length)
                {
                    msg += string.Format(" expecting {0}", ParserImpl.bekParser.tokenNames[e.Expecting]);
                }
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.FailedPredicateException e)
            {
                string msg = string.Format("unexpected '{0}' failed {1}", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()), e.PredicateText);
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.NoViableAltException e)
            {
                string msg = string.Format("unexpected '{0}' no alternatives", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.RecognitionException e)
            {
                string msg = string.Format("unexpected '{0}'", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (BekParseException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new BekParseException(1, 1, e.Message);
            }
            return(res);
        }
コード例 #7
0
ファイル: BekParser.cs プロジェクト: AutomataDotNet/Automata
        public static List<BekProgram> DefsFromString(string programs)
        {
            var res = new List<BekProgram>();
            try
            {
                var input = new Antlr.Runtime.ANTLRStringStream(programs);
                var lexer = new bekLexer(input);
                var tokens = new Antlr.Runtime.CommonTokenStream(lexer);
                var parser = new bekParser(tokens);

                var resp = parser.BekPgms();
                foreach (BekPgm cur in resp)
                {
                    var stab = new Symtab(cur);
                    //TypeChecker.TypeCheck(cur, stab);
                    var p = new BekProgram(cur, stab);
                    //Library.PerformExpansions(p);
                    res.Add(p);
                }
            }
            catch (Antlr.Runtime.MismatchedTokenException e)
            {
                string tok = (e.Token != null ? "'" + e.Token.Text + "'" : (e.Character >= 0 ? Microsoft.Automata.StringUtility.Escape((char)e.Character) : ""));
                string msg = "unexpected token " + tok;
                if (tok != "" && 0 <= e.Expecting && e.Expecting < ParserImpl.bekParser.tokenNames.Length)
                    msg += string.Format(" expecting {0}", ParserImpl.bekParser.tokenNames[e.Expecting]);
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.FailedPredicateException e)
            {
                string msg = string.Format("unexpected '{0}' failed {1}", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()), e.PredicateText);
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.NoViableAltException e)
            {
                string msg = string.Format("unexpected '{0}' no alternatives", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (Antlr.Runtime.RecognitionException e)
            {
                string msg = string.Format("unexpected '{0}'", (e.Token != null ? e.Token.Text : ((char)e.Character).ToString()));
                throw new BekParseException(e.Line, e.CharPositionInLine, msg);
            }
            catch (BekParseException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new BekParseException(1, 1, e.Message);
            }
            return res;
        }
コード例 #8
0
ファイル: BekParser.cs プロジェクト: AutomataDotNet/Automata
 public BekProgram(BekPgm ast, Symtab tab)
 {
     this.ast = ast;
     this.stab = tab;
 }
コード例 #9
0
ファイル: BekParser.cs プロジェクト: teodorov/Automata-1
 public BekProgram(BekPgm ast, Symtab tab)
 {
     this.ast  = ast;
     this.stab = tab;
 }