16 lines
385 B
Nim
16 lines
385 B
Nim
|
|
import macros
|
|
|
|
macro match*(s: cstring|string; pos: int; sections: untyped): untyped =
|
|
for sec in sections.children:
|
|
expectKind sec, nnkOfBranch
|
|
expectLen sec, 2
|
|
result = newStmtList()
|
|
|
|
when isMainModule:
|
|
var input = "the input"
|
|
var pos = 0
|
|
match input, pos:
|
|
of r"[a-zA-Z_]\w+": echo "an identifier"
|
|
of r"\d+": echo "an integer"
|
|
of r".": echo "something else"
|