home *** CD-ROM | disk | FTP | other *** search
- package com.ms.xml.parser;
-
- import com.ms.xml.om.Element;
- import com.ms.xml.om.ElementImpl;
- import com.ms.xml.util.Atom;
- import com.ms.xml.util.Name;
- import com.ms.xml.util.XMLOutputStream;
- import java.io.IOException;
- import java.util.BitSet;
-
- class Terminal extends Node {
- int pos;
- Name name;
-
- Terminal(ContentModel var1, Name var2) {
- this.name = var2;
- this.pos = var1.terminalnodes.size();
- var1.terminalnodes.addElement(this);
- if (var2 != null && var1.symboltable.get(var2) == null) {
- var1.symboltable.put(var2, new Integer(var1.symbols.size()));
- var1.symbols.addElement(var2);
- }
-
- }
-
- BitSet firstpos(int var1) {
- if (super.first == null) {
- super.first = new BitSet(var1);
- super.first.set(this.pos);
- }
-
- return super.first;
- }
-
- BitSet lastpos(int var1) {
- if (super.last == null) {
- super.last = new BitSet(var1);
- super.last.set(this.pos);
- }
-
- return super.last;
- }
-
- Element toSchema(int var1, int var2, Element var3) {
- if (this.name.getName() != Node.namePCDATA.getName()) {
- ElementImpl var5 = new ElementImpl(Name.create("ELT", "XML"), 0);
- var5.setAttribute(Name.create("HREF", "XML"), "#" + this.name);
- if (var1 == 63) {
- var5.setAttribute(Name.create("OCCURS", "XML"), "OPTIONAL");
- } else if (var1 == 42) {
- var5.setAttribute(Name.create("OCCURS", "XML"), "STAR");
- } else if (var1 == 43) {
- var5.setAttribute(Name.create("OCCURS", "XML"), "PLUS");
- }
-
- var3.addChild(var5, (Element)null);
- return var3;
- } else if (var2 != 0 && (var2 != 1 || var1 != 42)) {
- ElementImpl var4 = new ElementImpl(Name.create("MIXED", "XML"), 0);
- var3.addChild(var4, (Element)null);
- return var4;
- } else {
- var3.addChild(new ElementImpl(Name.create("PCDATA", "XML"), 0), (Element)null);
- return var3;
- }
- }
-
- void save(XMLOutputStream var1, int var2, int var3, Atom var4) throws IOException {
- if (this.name.getName() == Node.namePCDATA.getName()) {
- if (var3 != 0 && (var3 != 1 || var2 != 42)) {
- var1.writeChars("#PCDATA");
- } else {
- var1.writeChars("(#PCDATA)");
- }
- } else if (var2 != 35 && (var3 != 1 || var2 != 63 && var2 != 42)) {
- var1.writeQualifiedName(this.name, var4);
- } else {
- var1.writeChars("(");
- var1.writeQualifiedName(this.name, var4);
- var1.writeChars(")");
- }
- }
-
- Node clone(ContentModel var1) {
- return new Terminal(var1, this.name);
- }
-
- void calcfollowpos(BitSet[] var1) {
- }
-
- boolean nullable() {
- return this.name == null;
- }
- }
-