first version of .partial objects
This commit is contained in:
parent
38dee2095c
commit
0baa1d9955
6 changed files with 49 additions and 18 deletions
|
|
@ -804,20 +804,24 @@ proc parsePragma(p: var TParser): PNode =
|
|||
else: parMessage(p, errTokenExpected, ".}")
|
||||
dec p.inPragma
|
||||
|
||||
proc identVis(p: var TParser): PNode =
|
||||
proc identVis(p: var TParser; allowDot=false): PNode =
|
||||
#| identVis = symbol opr? # postfix position
|
||||
#| identVisDot = symbol '.' optInd symbol opr?
|
||||
var a = parseSymbol(p)
|
||||
if p.tok.tokType == tkOpr:
|
||||
result = newNodeP(nkPostfix, p)
|
||||
addSon(result, newIdentNodeP(p.tok.ident, p))
|
||||
addSon(result, a)
|
||||
getTok(p)
|
||||
elif p.tok.tokType == tkDot and allowDot:
|
||||
result = dotExpr(p, a)
|
||||
else:
|
||||
result = a
|
||||
|
||||
proc identWithPragma(p: var TParser): PNode =
|
||||
proc identWithPragma(p: var TParser; allowDot=false): PNode =
|
||||
#| identWithPragma = identVis pragma?
|
||||
var a = identVis(p)
|
||||
#| identWithPragmaDot = identVisDot pragma?
|
||||
var a = identVis(p, allowDot)
|
||||
if p.tok.tokType == tkCurlyDotLe:
|
||||
result = newNodeP(nkPragmaExpr, p)
|
||||
addSon(result, a)
|
||||
|
|
@ -1803,10 +1807,11 @@ proc parseTypeClass(p: var TParser): PNode =
|
|||
addSon(result, parseStmt(p))
|
||||
|
||||
proc parseTypeDef(p: var TParser): PNode =
|
||||
#| typeDef = identWithPragma genericParamList? '=' optInd typeDefAux
|
||||
#|
|
||||
#| typeDef = identWithPragmaDot genericParamList? '=' optInd typeDefAux
|
||||
#| indAndComment?
|
||||
result = newNodeP(nkTypeDef, p)
|
||||
addSon(result, identWithPragma(p))
|
||||
addSon(result, identWithPragma(p, allowDot=true))
|
||||
if p.tok.tokType == tkBracketLe and p.validInd:
|
||||
addSon(result, parseGenericParamList(p))
|
||||
else:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue