first steps towards term rewriting macros
This commit is contained in:
parent
b4844a189d
commit
1786e30991
17 changed files with 264 additions and 58 deletions
|
|
@ -586,6 +586,16 @@ proc gwhile(g: var TSrcGen, n: PNode) =
|
|||
gcoms(g) # a good place for comments
|
||||
gstmts(g, n.sons[1], c)
|
||||
|
||||
proc gpattern(g: var TSrcGen, n: PNode) =
|
||||
var c: TContext
|
||||
put(g, tkAs, "as")
|
||||
putWithSpace(g, tkColon, ":")
|
||||
initContext(c)
|
||||
if longMode(n) or (lsub(n.sons[0]) + g.lineLen > maxLineLen):
|
||||
incl(c.flags, rfLongMode)
|
||||
gcoms(g) # a good place for comments
|
||||
gstmts(g, n.sons[0], c)
|
||||
|
||||
proc gpragmaBlock(g: var TSrcGen, n: PNode) =
|
||||
var c: TContext
|
||||
gsub(g, n.sons[0])
|
||||
|
|
@ -656,20 +666,20 @@ proc gproc(g: var TSrcGen, n: PNode) =
|
|||
put(g, tkSymbol, renderDefinitionName(n.sons[namePos].sym))
|
||||
else:
|
||||
gsub(g, n.sons[namePos])
|
||||
gsub(g, n.sons[1])
|
||||
gsub(g, n.sons[2])
|
||||
gsub(g, n.sons[3])
|
||||
gsub(g, n.sons[genericParamsPos])
|
||||
gsub(g, n.sons[paramsPos])
|
||||
gsub(g, n.sons[pragmasPos])
|
||||
if renderNoBody notin g.flags:
|
||||
if n.sons[4].kind != nkEmpty:
|
||||
if n.sons[bodyPos].kind != nkEmpty:
|
||||
put(g, tkSpaces, Space)
|
||||
putWithSpace(g, tkEquals, "=")
|
||||
indentNL(g)
|
||||
gcoms(g)
|
||||
dedent(g)
|
||||
initContext(c)
|
||||
gstmts(g, n.sons[4], c)
|
||||
gstmts(g, n.sons[bodyPos], c)
|
||||
putNL(g)
|
||||
else:
|
||||
else:
|
||||
indentNL(g)
|
||||
gcoms(g)
|
||||
dedent(g)
|
||||
|
|
@ -1035,6 +1045,7 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
|
|||
of nkCaseStmt, nkRecCase: gcase(g, n)
|
||||
of nkMacroStmt: gmacro(g, n)
|
||||
of nkTryStmt: gtry(g, n)
|
||||
of nkPatternStmt: gpattern(g, n)
|
||||
of nkForStmt, nkParForStmt: gfor(g, n)
|
||||
of nkBlockStmt, nkBlockExpr: gblock(g, n)
|
||||
of nkStaticStmt: gstaticStmt(g, n)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue