![]() |
|
Navigation |
Synopsis Typed, labelled, abstract pattern.
Syntax
Type Var : Pat
Description A typed, labelled, pattern matches when the subject value has type
Type and Pat matches.
The matched value is assigned to Var .
This construct is used for:
Examples
rascal>import IO; ok rascal>data Lang = add(Lang l, Lang r) | number(int i); ok rascal>data Exp = id(str n) | add(Exp l, Exp r) | subtract(Exp l, Exp r) | otherLang(Lang a); ok rascal>ex = add(id("x"), add(id("y"), otherLang(add(number(1),number(2))))); Exp: add( id("x"), add( id("y"), otherLang(add( number(1), number(2))))) rascal>visit (ex) { >>>>>>> case Lang l:add(_,_) : println("I found a Lang <l>"); >>>>>>> case Exp e:add(_,_) : println("And I found an Exp <e>"); >>>>>>>} I found a Lang add(number(1),number(2)) And I found an Exp add(id("y"),otherLang(add(number(1),number(2)))) And I found an Exp add(id("x"),add(id("y"),otherLang(add(number(1),number(2))))) Exp: add( id("x"), add( id("y"), otherLang(add( number(1), number(2))))) ![]() |