diff options
author | Araq <rumpf_a@web.de> | 2012-04-15 10:02:15 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-04-15 10:02:15 +0200 |
commit | 959e370ae9f5c1e91b735f0633895780bb832235 (patch) | |
tree | e9d65e4e118c4285b9ca376ce69d8ad69fdc5f98 /tests/run | |
parent | 36287310644b31ed3b65922075d49e58940cdd7e (diff) | |
download | Nim-959e370ae9f5c1e91b735f0633895780bb832235.tar.gz |
@ is a sigil-like operator
Diffstat (limited to 'tests/run')
-rwxr-xr-x | tests/run/toprprec.nim | 21 | ||||
-rwxr-xr-x | tests/run/tpegs.nim | 14 |
2 files changed, 28 insertions, 7 deletions
diff --git a/tests/run/toprprec.nim b/tests/run/toprprec.nim index 17ec91fda..ce33934b5 100755 --- a/tests/run/toprprec.nim +++ b/tests/run/toprprec.nim @@ -4,6 +4,22 @@ discard """ """ # Test operator precedence: +template `@` (x: expr): expr {.immediate.} = self.x +template `@!` (x: expr): expr {.immediate.} = x +template `===` (x: expr): expr {.immediate.} = x + +type + TO = object + x: int + TA = tuple[a, b: int, obj: TO] + +proc init(self: var TA): string = + @a = 3 + === @b = 4 + @obj.x = 4 + @! === result = "abc" + result = @b.`$` + assert 3+5*5-2 == 28- -26-28 proc `^-` (x, y: int): int = @@ -12,6 +28,11 @@ proc `^-` (x, y: int): int = assert 34 ^- 6 ^- 2 == 30 assert 34 - 6 - 2 == 26 + + +var s: TA +assert init(s) == "4" + echo "done" diff --git a/tests/run/tpegs.nim b/tests/run/tpegs.nim index 8fe302073..4473f90bb 100755 --- a/tests/run/tpegs.nim +++ b/tests/run/tpegs.nim @@ -57,8 +57,8 @@ type pkBackRef, ## $i --> Internal DSL: backref(i) pkBackRefIgnoreCase, pkBackRefIgnoreStyle, - pkSearch, ## @a --> Internal DSL: @a - pkCapturedSearch, ## {@} a --> Internal DSL: @@a + pkSearch, ## @a --> Internal DSL: !*a + pkCapturedSearch, ## {@} a --> Internal DSL: !*\a pkRule, ## a <- b pkList, ## a, b pkStartAnchor ## ^ --> Internal DSL: startAnchor() @@ -212,13 +212,13 @@ proc `*`*(a: TPeg): TPeg {.rtl, extern: "npegsGreedyRep".} = result.kind = pkGreedyRep result.sons = @[a] -proc `@`*(a: TPeg): TPeg {.rtl, extern: "npegsSearch".} = +proc `!*`*(a: TPeg): TPeg {.rtl, extern: "npegsSearch".} = ## constructs a "search" for the PEG `a` result.kind = pkSearch result.sons = @[a] -proc `@@`*(a: TPeg): TPeg {.rtl, - extern: "npgegsCapturedSearch".} = +proc `!*\`*(a: TPeg): TPeg {.rtl, + extern: "npgegsCapturedSearch".} = ## constructs a "captured search" for the PEG `a` result.kind = pkCapturedSearch result.sons = @[a] @@ -1484,10 +1484,10 @@ proc primary(p: var TPegParser): TPeg = return !primary(p) of tkAt: getTok(p) - return @primary(p) + return !*primary(p) of tkCurlyAt: getTok(p) - return @@primary(p).token(p) + return !*\primary(p).token(p) else: nil case p.tok.kind of tkIdentifier: |