diff options
author | Matthias Zenger <mzenger@gmail.com> | 2003-02-20 10:45:48 +0000 |
---|---|---|
committer | Matthias Zenger <mzenger@gmail.com> | 2003-02-20 10:45:48 +0000 |
commit | de0a87e4a03bdd902391c847a956cdc8558a73ec (patch) | |
tree | 08049a02352ae0da52fd2fbe430ce5d7779531e3 /sources/scalac/transformer/matching/PatternNode.java | |
parent | eac21ad76df4442e7610cbc6c2433c55898ac05b (diff) | |
download | scala-de0a87e4a03bdd902391c847a956cdc8558a73ec.tar.gz scala-de0a87e4a03bdd902391c847a956cdc8558a73ec.tar.bz2 scala-de0a87e4a03bdd902391c847a956cdc8558a73ec.zip |
Initial version of the pattern matcher component.
Diffstat (limited to 'sources/scalac/transformer/matching/PatternNode.java')
-rw-r--r-- | sources/scalac/transformer/matching/PatternNode.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sources/scalac/transformer/matching/PatternNode.java b/sources/scalac/transformer/matching/PatternNode.java new file mode 100644 index 0000000000..24404d0242 --- /dev/null +++ b/sources/scalac/transformer/matching/PatternNode.java @@ -0,0 +1,58 @@ +/* ____ ____ ____ ____ ______ *\ +** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala ** +** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL ** +** /_____/\____/\___/\____/____/ ** +** ** +** $Id$ +\* */ + +package scalac.transformer; + +import scalac.*; +import scalac.ast.*; +import scalac.symtab.*; +import scalac.typechecker.*; + + +public class PatternNode { + public int pos = scalac.util.Position.NOPOS; + public Type type; + public PatternNode or; + public PatternNode and; + + public case Header(Tree selector, Header next); + public case Body(Tree.ValDef[][] bound, Tree[] guard, Tree[] body); + public case DefaultPat(); + public case ConstrPat(Symbol casted); + public case ConstantPat(Object value); + public case VariablePat(Tree tree); + + + public Symbol symbol() { + switch (this) { + case ConstrPat(Symbol casted): + return casted; + default: + return Symbol.NONE; + } + } + + public String toString() { + switch (this) { + case Header(Tree selector, Header next): + return "Header(" + selector + ")"; + case Body(_, _, _): + return "Body"; + case DefaultPat(): + return "DefaultPat"; + case ConstrPat(Symbol casted): + return "ConstrPat(" + casted + ")"; + case ConstantPat(Object value): + return "ConstantPat(" + value + ")"; + case VariablePat(Tree tree): + return "VariablePat"; + default: + return "<unknown pat>"; + } + } +} |