18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.tools.internal.xjc.reader.gbind; 27 28 import java.util.Set; 29 30 /** 31 * This builds content models. 32 * 33 * @author Kohsuke Kawaguchi 34 */ 35 public abstract class Expression { 36 37 /** 38 * Computes <tt>LAST(exp)</tt> 39 */ 40 abstract ElementSet lastSet(); 41 42 /** 43 * True of <tt>\epsilon \in L(exp)</tt> 44 */ 45 abstract boolean isNullable(); 46 47 /** 48 * Builds up a DAG among {@link Element}s in this expression. 49 */ 50 abstract void buildDAG(ElementSet incoming); 51 52 /** 53 * {@link Expression} that represents epsilon, the length-0 string. 54 */ 55 public static final Expression EPSILON = new Expression() { 56 ElementSet lastSet() { 57 return ElementSet.EMPTY_SET; 58 } 59 60 boolean isNullable() { 61 return true; 62 } 63 | 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.tools.internal.xjc.reader.gbind; 27 28 import java.util.Set; 29 30 /** 31 * This builds content models. 32 * 33 * @author Kohsuke Kawaguchi 34 */ 35 public abstract class Expression { 36 37 /** 38 * Computes {@code LAST(exp)} 39 */ 40 abstract ElementSet lastSet(); 41 42 /** 43 * True of {@code \epsilon \in L(exp)} 44 */ 45 abstract boolean isNullable(); 46 47 /** 48 * Builds up a DAG among {@link Element}s in this expression. 49 */ 50 abstract void buildDAG(ElementSet incoming); 51 52 /** 53 * {@link Expression} that represents epsilon, the length-0 string. 54 */ 55 public static final Expression EPSILON = new Expression() { 56 ElementSet lastSet() { 57 return ElementSet.EMPTY_SET; 58 } 59 60 boolean isNullable() { 61 return true; 62 } 63 |