github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/schema/ridl/parser_util.go (about) 1 package ridl 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 func expectWord(tok *token, value string) error { 9 if tok.tt != tokenWord || tok.val != value { 10 return errUnexpectedToken 11 } 12 return nil 13 } 14 15 func unescapeString(in string) (string, error) { 16 size := len(in) 17 out := "" 18 19 for i := 0; i < size; i++ { 20 c := in[i] 21 22 if c == '\\' { 23 i++ 24 if i < size { 25 switch n := in[i]; n { 26 case 'n': 27 out = out + "\n" 28 case 't': 29 out = out + "\t" 30 case '"': 31 out = out + string(n) 32 default: 33 return "", fmt.Errorf("unexpected character %q after backslash", c) 34 } 35 } else { 36 return "", errors.New("unexpected end after backslash") 37 } 38 } else { 39 out = out + string(c) 40 } 41 } 42 43 return out, nil 44 }