func loadPatterns(reader io.Reader) (*Trie, os.Error) { trie := NewTrie() var s scanner.Scanner s.Init(reader) s.Mode = scanner.ScanIdents | scanner.ScanRawStrings | scanner.SkipComments var which string tok := s.Scan() for tok != scanner.EOF { switch tok { case scanner.Ident: // we handle two identifiers: 'patterns' and 'exceptions' switch ident := s.TokenText(); ident { case `patterns`, `exceptions`: which = ident default: return nil, os.ErrorString(fmt.Sprintf("Unrecognized identifier '%s' at position %v", ident, s.Pos())) } case scanner.String, scanner.RawString: // trim the quotes from around the string tokstr := s.TokenText() str := tokstr[1 : len(tokstr)-1] switch which { case `patterns`: trie.AddPatternString(str) } } tok = s.Scan() } return trie, nil }
func scanAndReadUint(s *scanner.Scanner) uint { s.Scan() tok, err := strconv.Atoui(s.TokenText()) if err != nil { log.Panic(err) } return tok }
func main() { var scanInput scanner.Scanner scanInput.Init(os.Stdin) // main loop, reads scanner input and parses, EOF is strictly not used at this time. for scanInput.Scan() != scanner.EOF { switch scanInput.TokenText() { case "load", "l": scanInput.Scan() fmt.Printf("Loading file \"%s\" from database\n", scanInput.TokenText()) go readHandler.LoadFile(scanInput.TokenText()) case "save", "store", "s": scanInput.Scan() fmt.Printf("Storing file \"%s\" to database\n", scanInput.TokenText()) go storeFile(scanInput.TokenText()) case "hora": fmt.Printf("kingkong IS ONE!") os.Exit(0) } } }
func (h *Hyphenator) Hyphenate(s, hyphen string) (string, bool) { var sc scanner.Scanner sc.Init(strings.NewReader(s)) sc.Mode = scanner.ScanIdents sc.Whitespace = 0 var outstr string tok := sc.Scan() for tok != scanner.EOF { switch tok { case scanner.Ident: // a word (or part thereof) to hyphenate t := sc.TokenText() // try the exceptions first exc := h.exceptions[t] if len(exc) != 0 { if hyphen != `-` { strings.Replace(exc, `-`, hyphen, -1) } return exc, true } // not an exception, hyphenate normally outstr += h.hyphenateWord(sc.TokenText(), hyphen) default: // A Unicode rune to append to the output p := make([]byte, utf8.UTFMax) l := utf8.EncodeRune(tok, p) outstr += string(p[0:l]) } tok = sc.Scan() } return outstr, true }
func (h *Hyphenator) loadPatterns(reader io.Reader) os.Error { var s scanner.Scanner s.Init(reader) s.Mode = scanner.ScanIdents | scanner.ScanRawStrings | scanner.SkipComments var which string tok := s.Scan() for tok != scanner.EOF { switch tok { case scanner.Ident: // we handle two identifiers: 'patterns' and 'exceptions' switch ident := s.TokenText(); ident { case `patterns`, `exceptions`: which = ident default: return os.ErrorString(fmt.Sprintf("Unrecognized identifier '%s' at position %v", ident, s.Pos())) } case scanner.String, scanner.RawString: // trim the quotes from around the string tokstr := s.TokenText() str := tokstr[1 : len(tokstr)-1] switch which { case `patterns`: h.patterns.AddPatternString(str) case `exceptions`: key := strings.Replace(str, `-`, ``, -1) h.exceptions[key] = str } } tok = s.Scan() } return nil }
func main() { var s scanner.Scanner s.Init(os.Stdin) s.Scan() total, _ := strconv.Atoi(s.TokenText()) for i := 1; i <= total; i++ { s.Scan() _ = s.TokenText() s.Scan() b, _ := strconv.Atoi(s.TokenText()) var out string if b%2 == 0 { out = "WHITE" } else { out = "BLACK" } fmt.Printf("Case #%d: %s\n", i, out) } }