parser got rid of cruft
This commit is contained in:
parent
8dda362fa6
commit
05fee773ec
1 changed files with 9 additions and 32 deletions
|
|
@ -246,38 +246,15 @@ proc accExpr(p: var TParser): PNode =
|
||||||
addSon(result, x)
|
addSon(result, x)
|
||||||
eat(p, tkAccent)
|
eat(p, tkAccent)
|
||||||
|
|
||||||
proc optExpr(p: var TParser): PNode =
|
|
||||||
# [expr]
|
|
||||||
if (p.tok.tokType != tkComma) and (p.tok.tokType != tkBracketRi) and
|
|
||||||
(p.tok.tokType != tkDotDot):
|
|
||||||
result = parseExpr(p)
|
|
||||||
else:
|
|
||||||
result = ast.emptyNode
|
|
||||||
|
|
||||||
proc dotdotExpr(p: var TParser, first: PNode): PNode =
|
|
||||||
result = newNodeP(nkRange, p)
|
|
||||||
addSon(result, first)
|
|
||||||
getTok(p)
|
|
||||||
optInd(p, result)
|
|
||||||
addSon(result, optExpr(p))
|
|
||||||
|
|
||||||
proc indexExpr(p: var TParser): PNode =
|
proc indexExpr(p: var TParser): PNode =
|
||||||
# indexExpr ::= '..' [expr] | expr ['=' expr]
|
# indexExpr ::= expr ['=' expr]
|
||||||
if p.tok.tokType == tkDotDot:
|
|
||||||
result = dotdotExpr(p, ast.emptyNode)
|
|
||||||
else:
|
|
||||||
result = parseExpr(p)
|
result = parseExpr(p)
|
||||||
if p.tok.tokType == tkEquals:
|
if p.tok.tokType == tkEquals:
|
||||||
var a = result
|
var a = result
|
||||||
result = newNodeP(nkExprEqExpr, p)
|
result = newNodeP(nkExprEqExpr, p)
|
||||||
addSon(result, a)
|
addSon(result, a)
|
||||||
getTok(p)
|
getTok(p)
|
||||||
if p.tok.tokType == tkDotDot:
|
addSon(result, parseExpr(p))
|
||||||
addSon(result, dotdotExpr(p, ast.emptyNode))
|
|
||||||
else:
|
|
||||||
var b = parseExpr(p)
|
|
||||||
if p.tok.tokType == tkDotDot: b = dotdotExpr(p, b)
|
|
||||||
addSon(result, b)
|
|
||||||
|
|
||||||
proc indexExprList(p: var TParser, first: PNode): PNode =
|
proc indexExprList(p: var TParser, first: PNode): PNode =
|
||||||
result = newNodeP(nkBracketExpr, p)
|
result = newNodeP(nkBracketExpr, p)
|
||||||
|
|
@ -994,7 +971,7 @@ proc parseFor(p: var TParser): PNode =
|
||||||
a = parseSymbol(p)
|
a = parseSymbol(p)
|
||||||
addSon(result, a)
|
addSon(result, a)
|
||||||
eat(p, tkIn)
|
eat(p, tkIn)
|
||||||
addSon(result, exprColonEqExpr(p, nkRange, tkDotDot))
|
addSon(result, parseExpr(p))
|
||||||
eat(p, tkColon)
|
eat(p, tkColon)
|
||||||
skipComment(p, result)
|
skipComment(p, result)
|
||||||
addSon(result, parseStmt(p))
|
addSon(result, parseStmt(p))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue