Beispiel #1
0
 public override void ExitTableDef([NotNull] RuleTableParser.TableDefContext context)
 {
     if (Symmetry == RuleSymmetry.permute)
     {
         CreateCountingDictionary();
     }
     else
     {
         ExpandSymmetry();
         CreateTransitionDictionary();
     }
 }
Beispiel #2
0
        public static ICARule GetRuleFromFile(string name, string filename)
        {
            AntlrFileStream fileStream     = new AntlrFileStream(filename, Encoding.UTF8);
            RuleTableLexer  ruleTableLexer = new RuleTableLexer(fileStream);

            Antlr4.Runtime.CommonTokenStream tokenStream = new CommonTokenStream(ruleTableLexer);
            RuleTableParser ruleTableParser = new RuleTableParser(tokenStream);

            ruleTableParser.RemoveErrorListeners();
            ruleTableParser.AddErrorListener(new ThrowingErrorListener());
            RuleTableParser.TableDefContext context = ruleTableParser.tableDef();
            RuleTableListener listener = new RuleTableListener();

            Antlr4.Runtime.Tree.ParseTreeWalker.Default.Walk(listener, context);

            if (listener.Symmetry == RuleSymmetry.permute)
            {
                return(new RuleTableCountStatesRule(name, listener.Neighborhood, listener.Symmetry, listener.NumStates, listener.TransitionDictionary));
            }
            else
            {
                return(new RuleTableRule(name, listener.Neighborhood, listener.Symmetry, listener.NumStates, listener.TransitionDictionary));
            }
        }