parser got rid of cruft

This commit is contained in:
Araq 2011-04-22 12:41:03 +02:00
commit 05fee773ec

View file

@ -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 = parseExpr(p)
result = dotdotExpr(p, ast.emptyNode) if p.tok.tokType == tkEquals:
else: var a = result
result = parseExpr(p) result = newNodeP(nkExprEqExpr, p)
if p.tok.tokType == tkEquals: addSon(result, a)
var a = result getTok(p)
result = newNodeP(nkExprEqExpr, p) addSon(result, parseExpr(p))
addSon(result, a)
getTok(p)
if p.tok.tokType == tkDotDot:
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))