fixes #27
This commit is contained in:
parent
7e62c39f8e
commit
ffd05510bd
2 changed files with 19 additions and 2 deletions
|
|
@ -765,8 +765,8 @@ proc parseExprStmt(p: var TParser): PNode =
|
||||||
addSon(result, a)
|
addSon(result, a)
|
||||||
getTok(p)
|
getTok(p)
|
||||||
skipComment(p, result)
|
skipComment(p, result)
|
||||||
if (p.tok.tokType == tkInd) or
|
if p.tok.tokType == tkSad: getTok(p)
|
||||||
not (p.tok.TokType in {tkOf, tkElif, tkElse, tkExcept}):
|
if not (p.tok.TokType in {tkOf, tkElif, tkElse, tkExcept}):
|
||||||
addSon(result, parseStmt(p))
|
addSon(result, parseStmt(p))
|
||||||
while true:
|
while true:
|
||||||
if p.tok.tokType == tkSad: getTok(p)
|
if p.tok.tokType == tkSad: getTok(p)
|
||||||
|
|
|
||||||
17
tests/accept/compile/tmacrostmt.nim
Normal file
17
tests/accept/compile/tmacrostmt.nim
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
import macros
|
||||||
|
macro case_token(n: stmt): stmt =
|
||||||
|
# creates a lexical analyzer from regular expressions
|
||||||
|
# ... (implementation is an exercise for the reader :-)
|
||||||
|
nil
|
||||||
|
|
||||||
|
case_token: # this colon tells the parser it is a macro statement
|
||||||
|
of r"[A-Za-z_]+[A-Za-z_0-9]*":
|
||||||
|
return tkIdentifier
|
||||||
|
of r"0-9+":
|
||||||
|
return tkInteger
|
||||||
|
of r"[\+\-\*\?]+":
|
||||||
|
return tkOperator
|
||||||
|
else:
|
||||||
|
return tkUnknown
|
||||||
|
|
||||||
|
case_token: inc i
|
||||||
Loading…
Add table
Add a link
Reference in a new issue