转到-如何创建解析器

我想构建一个解析器,但在理解如何执行此操作时遇到了一些问题。


我想解析的样本字符串


{key1 = value1 | key2 = {key3 = value3} | key4 = {key5 = { key6 = value6 }}}

最好我想得到类似于嵌套地图的输出


map[key1] = value1

map[key2] = (map[key3] = value3)

map[key4] = (map[key5] = (map[key6] = value6))

怎么办呢?我的目标指向错误吗?


慕沐林林
浏览 221回答 3
3回答

梵蒂冈之花

该特定格式与json非常相似。您可以使用以下代码来利用这种相似性:    var txt = `{key1 = "\"value1\"\n" | key2 = { key3 = 10 } | key4 = {key5 = { key6 = value6}}}`    var s scanner.Scanner    s.Init(strings.NewReader(txt))    var b []byteloop:    for {        switch tok := s.Scan(); tok {        case scanner.EOF:            break loop        case '|':            b = append(b, ',')        case '=':            b = append(b, ':')        case scanner.Ident:            b = append(b, strconv.Quote(s.TokenText())...)        default:            b = append(b, s.TokenText()...)        }    }    var m map[string]interface{}    err := json.Unmarshal(b, &m)    if err != nil {        // handle error    }    fmt.Printf("%#v\n",m)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go