public override void ExitTableDef([NotNull] RuleTableParser.TableDefContext context) { if (Symmetry == RuleSymmetry.permute) { CreateCountingDictionary(); } else { ExpandSymmetry(); CreateTransitionDictionary(); } }
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)); } }