Files
2024-05-09 17:40:24 +02:00

179 lines
6.2 KiB
Plaintext

@start rule: main
package @package_name;
import @package_name.@element_class_name;
import java.io.*;
import java.net.*;
import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
import org.w3c.dom.*;
import org.xml.sax.*;
import org.xml.sax.helpers.ParserFactory;
import weblogic.xml.dtdc.Handler;
import weblogic.xml.dtdc.NullHandler;
public class @parser_class_name extends weblogic.xml.dtdc.BaseParser {
// ============================================================
// Parse
public static void main(String[] args) throws Exception {
try {
Parser parser = ParserFactory.makeParser("@package_name.@parser_class_name");
Handler handler = new Handler("@package_name", true);
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
parser.setDocumentHandler(handler);
parser.parse(args[0]);
} catch(SAXParseException saxpe) {
System.out.println("Line: " + saxpe.getLineNumber() + " Column: " + saxpe.getColumnNumber());
throw saxpe;
}
}
// ============================================================
// Generated Code
public void parse(char[] chars) throws SAXException {
boolean done = false;
int startLine = currentLine;
if(dh == null) dh = new NullHandler();
dh.setDocumentLocator(this);
dh.startDocument();
while(current != chars.length && !done) {
@parser
}
if(done) throw new SAXParseException("Could not parse (bad close tag): starting at line " + startLine, this);
dh.endDocument();
}
@read_element_declarations
// ============================================================
// Factory methods
public static @package_name.@element_class_name make@element_class_name(String filename, Map map, boolean verbose) throws IOException, SAXException {
Handler handler = new Handler(map,"@package_name",verbose);
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
makeParser(handler).parse(filename);
return (@package_name.@element_class_name)handler.getTopLevel();
}
public static @package_name.@element_class_name make@element_class_name(File file, Map map, boolean verbose) throws IOException, SAXException {
Handler handler = new Handler(map,"@package_name",verbose);
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
makeParser(handler).parse(file);
return (@package_name.@element_class_name)handler.getTopLevel();
}
public static @package_name.@element_class_name make@element_class_name(InputSource is, Map map, boolean verbose) throws IOException, SAXException {
Handler handler = new Handler(map,"@package_name",verbose);
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
makeParser(handler).parse(is);
return (@package_name.@element_class_name)handler.getTopLevel();
}
public static @package_name.@element_class_name make@element_class_name(InputStream in, Map map, boolean verbose) throws IOException, SAXException {
Handler handler = new Handler(map,"@package_name",verbose);
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
makeParser(handler).parse(in);
return (@package_name.@element_class_name)handler.getTopLevel();
}
public static @package_name.@element_class_name make@element_class_name(InputStream in, String encodingType, Map map, boolean verbose) throws IOException, SAXException {
Handler handler = new Handler(map,"@package_name",verbose);
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
makeParser(handler).parse(in,encodingType);
return (@package_name.@element_class_name)handler.getTopLevel();
}
private static @parser_class_name makeParser(Handler handler) throws IOException, SAXException {
@parser_class_name parser = new @parser_class_name();
try {
handler.setClassLoader(Class.forName("@package_name.@parser_class_name").getClassLoader());
} catch(ClassNotFoundException cnfe) {
cnfe.printStackTrace(); // really shouldn't happen
}
parser.setDocumentHandler(handler);
return parser;
}
// ============================================================
// Constructor
public @parser_class_name() {
@set_attribute_types
names = new String[@max_attributes];
types = new String[@max_attributes];
values = new String[@max_attributes];
}
}
@end rule: main
@start rule: readAttribute
{String value = _readAttribute(chars);
@set_attribute_found
@ensure_unique
if(true@valid_attribute) throw new SAXParseException("Not a valid attribute value: [" + value + "]", this);
putAttribute("@attribute_realname", "@attribute_type", value);}
@end rule: readAttribute
@start rule: read_element_declaration
public void @read_element_method_name(char[] chars) throws SAXException {
int startLine = currentLine;
try {
reset();
boolean emptyTag = @read_element_attributes_method_name(chars);
dh.startElement("@element_name", this);
boolean done = false;
while(!done && !emptyTag) {
@read_element
}
dh.endElement("@element_name");
} catch(ArrayIndexOutOfBoundsException aioobe) {
throw new SAXParseException("@element_name not closed, starts at line " + startLine, this);
}
}
public boolean @read_element_attributes_method_name(char[] chars) throws SAXException {
int startLine = currentLine;
boolean done = false;
boolean emptyTag = false;
@declare_required_attributes
while(!done) {
@read_attributes
}
@ensure_required_attributes
return emptyTag;
}
@end rule: read_element_declaration