changed handling of generalized string literals
This commit is contained in:
parent
77d045b3ac
commit
134f24f579
10 changed files with 76 additions and 39 deletions
|
|
@ -163,12 +163,28 @@ proc parseAddr(p: var TParser): PNode =
|
|||
addSon(result, parseExpr(p))
|
||||
optPar(p)
|
||||
eat(p, tkParRi)
|
||||
|
||||
proc parseGStrLit(p: var TParser, a: PNode): PNode =
|
||||
case p.tok.tokType
|
||||
of tkGStrLit:
|
||||
result = newNodeP(nkCallStrLit, p)
|
||||
addSon(result, a)
|
||||
addSon(result, newStrNodeP(nkRStrLit, p.tok.literal, p))
|
||||
getTok(p)
|
||||
of tkGTripleStrLit:
|
||||
result = newNodeP(nkCallStrLit, p)
|
||||
addSon(result, a)
|
||||
addSon(result, newStrNodeP(nkTripleStrLit, p.tok.literal, p))
|
||||
getTok(p)
|
||||
else:
|
||||
result = a
|
||||
|
||||
proc identOrLiteral(p: var TParser): PNode =
|
||||
case p.tok.tokType
|
||||
of tkSymbol:
|
||||
result = newIdentNodeP(p.tok.ident, p)
|
||||
getTok(p)
|
||||
result = parseGStrLit(p, result)
|
||||
of tkAccent:
|
||||
result = accExpr(p) # literals
|
||||
of tkIntLit:
|
||||
|
|
@ -212,16 +228,6 @@ proc identOrLiteral(p: var TParser): PNode =
|
|||
of tkTripleStrLit:
|
||||
result = newStrNodeP(nkTripleStrLit, p.tok.literal, p)
|
||||
getTok(p)
|
||||
of tkCallRStrLit:
|
||||
result = newNodeP(nkCallStrLit, p)
|
||||
addSon(result, newIdentNodeP(p.tok.ident, p))
|
||||
addSon(result, newStrNodeP(nkRStrLit, p.tok.literal, p))
|
||||
getTok(p)
|
||||
of tkCallTripleStrLit:
|
||||
result = newNodeP(nkCallStrLit, p)
|
||||
addSon(result, newIdentNodeP(p.tok.ident, p))
|
||||
addSon(result, newStrNodeP(nkTripleStrLit, p.tok.literal, p))
|
||||
getTok(p)
|
||||
of tkCharLit:
|
||||
result = newIntNodeP(nkCharLit, ord(p.tok.literal[0]), p)
|
||||
getTok(p)
|
||||
|
|
@ -279,6 +285,7 @@ proc primary(p: var TParser): PNode =
|
|||
getTok(p) # skip '.'
|
||||
optInd(p, result)
|
||||
addSon(result, parseSymbol(p))
|
||||
result = parseGStrLit(p, result)
|
||||
of tkHat:
|
||||
a = result
|
||||
result = newNodeP(nkDerefExpr, p)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue