bugfix: no need for arrows to be new token kinds
This commit is contained in:
parent
4cf64238b6
commit
375c95d3ad
3 changed files with 10 additions and 8 deletions
|
|
@ -50,7 +50,7 @@ type
|
|||
tkCurlyDotLe, tkCurlyDotRi, # {. and .}
|
||||
tkParDotLe, tkParDotRi, # (. and .)
|
||||
tkComma, tkSemiColon,
|
||||
tkColon, tkColonColon, tkEquals, tkLeArrow, tkRiArrow, tkDot, tkDotDot,
|
||||
tkColon, tkColonColon, tkEquals, tkDot, tkDotDot,
|
||||
tkOpr, tkComment, tkAccent, tkInd, tkSad,
|
||||
tkDed, # pseudo token types used by the source renderers:
|
||||
tkSpaces, tkInfixOpr, tkPrefixOpr, tkPostfixOpr,
|
||||
|
|
@ -78,7 +78,7 @@ const
|
|||
"tkTripleStrLit", "tkGStrLit", "tkGTripleStrLit", "tkCharLit", "(",
|
||||
")", "[", "]", "{", "}", "[.", ".]", "{.", ".}", "(.", ".)",
|
||||
",", ";",
|
||||
":", "::", "=", "<-", "->", ".", "..",
|
||||
":", "::", "=", ".", "..",
|
||||
"tkOpr", "tkComment", "`", "[new indentation]",
|
||||
"[same indentation]", "[dedentation]", "tkSpaces", "tkInfixOpr",
|
||||
"tkPrefixOpr", "tkPostfixOpr"]
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ proc parseExpr(p: var TParser): PNode
|
|||
proc parseStmt(p: var TParser): PNode
|
||||
proc parseTypeDesc(p: var TParser): PNode
|
||||
proc parseDoBlocks(p: var TParser, call: PNode)
|
||||
proc parseParamList(p: var TParser, resTypeTok = tkColon): PNode
|
||||
proc parseParamList(p: var TParser, retColon = true): PNode
|
||||
|
||||
proc IsLeftAssociative(tok: TToken): bool {.inline.} =
|
||||
result = tok.tokType != tkOpr or tok.ident.s[0] != '^'
|
||||
|
|
@ -601,7 +601,7 @@ proc parseTuple(p: var TParser): PNode =
|
|||
optPar(p)
|
||||
eat(p, tkBracketRi)
|
||||
|
||||
proc parseParamList(p: var TParser, resTypeTok = tkColon): PNode =
|
||||
proc parseParamList(p: var TParser, retColon = true): PNode =
|
||||
var a: PNode
|
||||
result = newNodeP(nkFormalParams, p)
|
||||
addSon(result, ast.emptyNode) # return type
|
||||
|
|
@ -623,7 +623,9 @@ proc parseParamList(p: var TParser, resTypeTok = tkColon): PNode =
|
|||
optInd(p, a)
|
||||
optPar(p)
|
||||
eat(p, tkParRi)
|
||||
if p.tok.tokType == resTypeTok:
|
||||
let b = if retColon: p.tok.tokType == tkColon
|
||||
else: p.tok.tokType == tkOpr and IdentEq(p.tok.ident, "->")
|
||||
if b:
|
||||
getTok(p)
|
||||
optInd(p, result)
|
||||
result.sons[0] = parseTypeDesc(p)
|
||||
|
|
@ -635,7 +637,7 @@ proc optPragmas(p: var TParser): PNode =
|
|||
proc parseDoBlock(p: var TParser): PNode =
|
||||
var info = parLineInfo(p)
|
||||
getTok(p)
|
||||
var params = parseParamList(p, tkRiArrow)
|
||||
var params = parseParamList(p, retColon=false)
|
||||
var pragmas = optPragmas(p)
|
||||
eat(p, tkColon)
|
||||
result = newNodeI(nkDo, info)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ type
|
|||
wShl, wShr, wTemplate, wTry, wTuple, wType, wVar, wWhen, wWhile, wWith,
|
||||
wWithout, wXor, wYield,
|
||||
|
||||
wColon, wColonColon, wEquals, wLeArraw, wRiArrow, wDot, wDotDot,
|
||||
wColon, wColonColon, wEquals, wDot, wDotDot,
|
||||
wStar, wMinus,
|
||||
wMagic, wThread, wFinal, wProfiler, wObjChecks,
|
||||
wImportCpp, wImportObjC,
|
||||
|
|
@ -79,7 +79,7 @@ const
|
|||
"try", "tuple", "type", "var", "when", "while", "with", "without", "xor",
|
||||
"yield",
|
||||
|
||||
":", "::", "=", "<-", "->", ".", "..",
|
||||
":", "::", "=", ".", "..",
|
||||
"*", "-",
|
||||
"magic", "thread", "final", "profiler", "objchecks",
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue