func writeTerminals(gSymbols *symbols.Symbols, cfg config.Config) { buf := new(bytes.Buffer) for _, t := range gSymbols.ListTerminals() { fmt.Fprintf(buf, "%s\n", t) } io.WriteFile(path.Join(cfg.OutDir(), "terminals.txt"), buf.Bytes()) }
func handleConflicts(conflicts map[int]lr1Items.RowConflicts, numSets int, cfg config.Config, prods ast.SyntaxProdList) { if len(conflicts) <= 0 { return } switch { case !cfg.AutoResolveLRConf(): fmt.Printf("Error: %d LR-1 conflicts\n", len(conflicts)) io.WriteFileString(path.Join(cfg.OutDir(), "LR1_conflicts.txt"), conflictString(conflicts, numSets, prods)) os.Exit(1) case cfg.Verbose(): fmt.Printf("%d LR-1 conflicts \n", len(conflicts)) io.WriteFileString(path.Join(cfg.OutDir(), "LR1_conflicts.txt"), conflictString(conflicts, numSets, prods)) } }