diff options
author | Arne Döring <arne.doering@gmx.net> | 2019-02-28 22:57:57 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-02-28 22:57:57 +0100 |
commit | 1102b8ac6e643c8f8428dd7db0994d26b0c65ea6 (patch) | |
tree | b08388f89e7867f03e5d59be00db70a6535752dc /nimsuggest | |
parent | 728ff1004a60835c18c44b64830ea08dc805485e (diff) | |
download | Nim-1102b8ac6e643c8f8428dd7db0994d26b0c65ea6.tar.gz |
StringStream and parseJson, parseCfg, parseSql et al for the vm (#10746)
Diffstat (limited to 'nimsuggest')
-rw-r--r-- | nimsuggest/sexp.nim | 55 |
1 files changed, 25 insertions, 30 deletions
diff --git a/nimsuggest/sexp.nim b/nimsuggest/sexp.nim index 8f92e9098..910ecb9e9 100644 --- a/nimsuggest/sexp.nim +++ b/nimsuggest/sexp.nim @@ -124,9 +124,8 @@ proc handleHexChar(c: char, x: var int): bool = proc parseString(my: var SexpParser): TTokKind = result = tkString var pos = my.bufpos + 1 - var buf = my.buf while true: - case buf[pos] + case my.buf[pos] of '\0': my.err = errQuoteExpected result = tkError @@ -135,9 +134,9 @@ proc parseString(my: var SexpParser): TTokKind = inc(pos) break of '\\': - case buf[pos+1] + case my.buf[pos+1] of '\\', '"', '\'', '/': - add(my.a, buf[pos+1]) + add(my.a, my.buf[pos+1]) inc(pos, 2) of 'b': add(my.a, '\b') @@ -157,65 +156,61 @@ proc parseString(my: var SexpParser): TTokKind = of 'u': inc(pos, 2) var r: int - if handleHexChar(buf[pos], r): inc(pos) - if handleHexChar(buf[pos], r): inc(pos) - if handleHexChar(buf[pos], r): inc(pos) - if handleHexChar(buf[pos], r): inc(pos) + if handleHexChar(my.buf[pos], r): inc(pos) + if handleHexChar(my.buf[pos], r): inc(pos) + if handleHexChar(my.buf[pos], r): inc(pos) + if handleHexChar(my.buf[pos], r): inc(pos) add(my.a, toUTF8(Rune(r))) else: # don't bother with the error - add(my.a, buf[pos]) + add(my.a, my.buf[pos]) inc(pos) of '\c': pos = lexbase.handleCR(my, pos) - buf = my.buf add(my.a, '\c') of '\L': pos = lexbase.handleLF(my, pos) - buf = my.buf add(my.a, '\L') else: - add(my.a, buf[pos]) + add(my.a, my.buf[pos]) inc(pos) my.bufpos = pos # store back proc parseNumber(my: var SexpParser) = var pos = my.bufpos - var buf = my.buf - if buf[pos] == '-': + if my.buf[pos] == '-': add(my.a, '-') inc(pos) - if buf[pos] == '.': + if my.buf[pos] == '.': add(my.a, "0.") inc(pos) else: - while buf[pos] in Digits: - add(my.a, buf[pos]) + while my.buf[pos] in Digits: + add(my.a, my.buf[pos]) inc(pos) - if buf[pos] == '.': + if my.buf[pos] == '.': add(my.a, '.') inc(pos) # digits after the dot: - while buf[pos] in Digits: - add(my.a, buf[pos]) + while my.buf[pos] in Digits: + add(my.a, my.buf[pos]) inc(pos) - if buf[pos] in {'E', 'e'}: - add(my.a, buf[pos]) + if my.buf[pos] in {'E', 'e'}: + add(my.a, my.buf[pos]) inc(pos) - if buf[pos] in {'+', '-'}: - add(my.a, buf[pos]) + if my.buf[pos] in {'+', '-'}: + add(my.a, my.buf[pos]) inc(pos) - while buf[pos] in Digits: - add(my.a, buf[pos]) + while my.buf[pos] in Digits: + add(my.a, my.buf[pos]) inc(pos) my.bufpos = pos proc parseSymbol(my: var SexpParser) = var pos = my.bufpos - var buf = my.buf - if buf[pos] in IdentStartChars: - while buf[pos] in IdentChars: - add(my.a, buf[pos]) + if my.buf[pos] in IdentStartChars: + while my.buf[pos] in IdentChars: + add(my.a, my.buf[pos]) inc(pos) my.bufpos = pos |