summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/PatternNode.java
diff options
context:
space:
mode:
authorMatthias Zenger <mzenger@gmail.com>2003-02-20 10:45:48 +0000
committerMatthias Zenger <mzenger@gmail.com>2003-02-20 10:45:48 +0000
commitde0a87e4a03bdd902391c847a956cdc8558a73ec (patch)
tree08049a02352ae0da52fd2fbe430ce5d7779531e3 /sources/scalac/transformer/matching/PatternNode.java
parenteac21ad76df4442e7610cbc6c2433c55898ac05b (diff)
downloadscala-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.java58
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>";
+ }
+ }
+}