samples/visitor/21-clientprovider/src-api1.0/org/apidesign/visitor/Language.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
parent 177 67d6dceb1002
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
     1 package org.apidesign.visitor;
     2 
     3 public final class Language {
     4     private Language() { }
     5     
     6     // BEGIN: visitor.clientprovider.v1
     7     public interface Expression {
     8         public abstract void visit(Visitor v);
     9     }
    10     public interface Plus extends Expression {
    11         public Expression getFirst();
    12         public Expression getSecond();
    13     }
    14     public interface Number extends Expression {
    15         public int getValue();
    16     }
    17 
    18     public static abstract class Visitor {
    19         Visitor() {}
    20 
    21         public static Visitor create(Version10 v) {
    22             return create10(v);
    23         }
    24 
    25         public interface Version10 {
    26             public boolean visitUnknown(Expression e);
    27             public void visitPlus(Plus s);
    28             public void visitNumber(Number n);
    29         }
    30 
    31         public abstract void dispatchPlus(Plus p);
    32         public abstract void dispatchNumber(Number n);
    33     }
    34     // END: visitor.clientprovider.v1
    35     
    36     static Visitor create10(final Visitor.Version10 v) {
    37         return new Visitor() {
    38             @Override
    39             public void dispatchPlus(Plus p) {
    40                 v.visitPlus(p);
    41             }
    42 
    43             @Override
    44             public void dispatchNumber(Number n) {
    45                 v.visitNumber(n);
    46             }
    47         };
    48     }
    49 }