diff options
author | Araq <rumpf_a@web.de> | 2013-06-04 08:02:53 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-06-04 08:02:53 +0200 |
commit | f7c0cc976ddb4e86e2341352b0674b9787005a4a (patch) | |
tree | 5ef5ab1096a77a1a8e0de7a797ec7598bc592ba7 /lib/pure | |
parent | 2f5d5e3ba73f8fcb11341b88bb6f9d855fe42fed (diff) | |
download | Nim-f7c0cc976ddb4e86e2341352b0674b9787005a4a.tar.gz |
fixes #456
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/parsecfg.nim | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/pure/parsecfg.nim b/lib/pure/parsecfg.nim index 6a0f2ed49..e8014cece 100644 --- a/lib/pure/parsecfg.nim +++ b/lib/pure/parsecfg.nim @@ -67,7 +67,8 @@ type # implementation const - SymChars: TCharSet = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\x80'..'\xFF', '.'} + SymChars: TCharSet = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\x80'..'\xFF', '.', + '/', '\\'} proc rawGetTok(c: var TCfgParser, tok: var TToken) @@ -149,7 +150,7 @@ proc getEscapedChar(c: var TCfgParser, tok: var TToken) = of 't', 'T': add(tok.literal, '\t') Inc(c.bufpos) - of '\'', '\"': + of '\'', '"': add(tok.literal, c.buf[c.bufpos]) Inc(c.bufpos) of '\\': @@ -178,7 +179,7 @@ proc getString(c: var TCfgParser, tok: var TToken, rawMode: bool) = var pos = c.bufPos + 1 # skip " var buf = c.buf # put `buf` in a register tok.kind = tkSymbol - if (buf[pos] == '\"') and (buf[pos + 1] == '\"'): + if (buf[pos] == '"') and (buf[pos + 1] == '"'): # long string literal: inc(pos, 2) # skip "" # skip leading newline: @@ -186,9 +187,9 @@ proc getString(c: var TCfgParser, tok: var TToken, rawMode: bool) = buf = c.buf while true: case buf[pos] - of '\"': - if (buf[pos + 1] == '\"') and (buf[pos + 2] == '\"'): break - add(tok.literal, '\"') + of '"': + if (buf[pos + 1] == '"') and (buf[pos + 2] == '"'): break + add(tok.literal, '"') Inc(pos) of '\c', '\L': pos = HandleCRLF(c, pos) @@ -205,7 +206,7 @@ proc getString(c: var TCfgParser, tok: var TToken, rawMode: bool) = # ordinary string literal while true: var ch = buf[pos] - if ch == '\"': + if ch == '"': inc(pos) # skip '"' break if ch in {'\c', '\L', lexbase.EndOfFile}: @@ -278,7 +279,7 @@ proc rawGetTok(c: var TCfgParser, tok: var TToken) = tok.kind = tkBracketRi Inc(c.bufpos) tok.literal = "]" - of '\"': + of '"': getString(c, tok, false) of lexbase.EndOfFile: tok.kind = tkEof @@ -351,7 +352,7 @@ proc next*(c: var TCfgParser): TCfgEvent {.rtl, extern: "npc$1".} = rawGetTok(c, c.tok) else: result.kind = cfgError - result.msg = errorStr(c, "\']\' expected, but found: " & c.tok.literal) + result.msg = errorStr(c, "']' expected, but found: " & c.tok.literal) of tkInvalid, tkEquals, tkColon, tkBracketRi: result.kind = cfgError result.msg = errorStr(c, "invalid token: " & c.tok.literal) |