Package org.apache.xalan.xsltc.compiler
Class Parser
- java.lang.Object
-
- org.apache.xalan.xsltc.compiler.Parser
-
- All Implemented Interfaces:
org.apache.bcel.generic.InstructionConstants,Constants,org.xml.sax.ContentHandler
public class Parser extends java.lang.Object implements Constants, org.xml.sax.ContentHandler
- Author:
- Jacek Ambroziak, Santiago Pericas-Geertsen, G. Todd Miller, Morten Jorgensen, Erwin Bolwidt
-
-
Field Summary
-
Fields inherited from interface org.apache.xalan.xsltc.compiler.Constants
ABSOLUTE_ITERATOR, ACC_FINAL, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ADD_ATTRIBUTE, ADD_ATTRIBUTE_SIG, ADD_ITERATOR, ADD_ITERATOR_SIG, ADD_PARAMETER, ADD_PARAMETER_SIG, APPLY_TEMPLATES, ATTR_SET_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTRIBUTES_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CHARACTERS, CHARACTERS_SIG, CHARACTERSW, CHARACTERSW_SIG, CLEAR_ATTRIBUTES, CLEAR_ATTRIBUTES_SIG, COLLATOR_CLASS, COLLATOR_SIG, COMPILER_PACKAGE, CURRENT_NODE_LIST_FILTER, CURRENT_NODE_LIST_FILTER_SIG, CURRENT_NODE_LIST_ITERATOR, CURRENT_NODE_LIST_ITERATOR_SIG, DEFAULT_NODE_COUNTER, DEFAULT_NODE_COUNTER_SIG, DOCUMENT_PNAME, DOM_ADAPTER_CLASS, DOM_ADAPTER_SIG, DOM_FIELD, DOM_IMPL, DOM_IMPL_CLASS, DOM_IMPL_SIG, DOM_INTF, DOM_INTF_SIG, DOM_PNAME, DOUBLE_CLASS, DOUBLE_SIG, DOUBLE_VALUE, DOUBLE_VALUE_SIG, DUP_FILTERED_ITERATOR, EMPTYATTR_FIELD, EMPTYSTRING, ERROR, EXPAND_STYLESHEET_QNAME_REF, EXPAND_STYLESHEET_QNAME_SIG, FALLBACK_CLASS, FATAL, FILTER_INTERFACE, FILTER_INTERFACE_SIG, FILTER_ITERATOR, FILTER_STEP_ITERATOR, FORMAT_SYMBOLS_FIELD, GET_ATTRIBUTE_VALUE, GET_ATTRIBUTE_VALUE_SIG, GET_CHILDREN, GET_CHILDREN_SIG, GET_ELEMENT_VALUE, GET_ELEMENT_VALUE_SIG, GET_ITERATOR_SIG, GET_NODE_NAME, GET_NODE_NAME_SIG, GET_NODE_TYPE, GET_NODE_TYPE_SIG, GET_NODE_VALUE, GET_NODE_VALUE_ITERATOR, GET_NODE_VALUE_ITERATOR_SIG, GET_NODE_VALUE_SIG, GET_PARAMETER, GET_PARAMETER_SIG, GET_PARENT, GET_PARENT_SIG, GET_TYPED_CHILDREN, GET_TYPED_CHILDREN_SIG, GET_UNPARSED_ENTITY_URI, GET_UNPARSED_ENTITY_URI_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, INT_VALUE, INT_VALUE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_ITERATOR_SIG, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, LOOKUP_STYLESHEET_QNAME_NS_REF, LOOKUP_STYLESHEET_QNAME_NS_SIG, MAKE_NODE, MAKE_NODE_LIST, MAKE_NODE_LIST_SIG, MAKE_NODE_LIST_SIG2, MAKE_NODE_SIG, MAKE_NODE_SIG2, MATCHING_ITERATOR, MATH_CLASS, MULTI_DOM_CLASS, MULTI_DOM_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NEXT, NEXT_SIG, NEXTID, NODE, NODE_COUNTER, NODE_COUNTER_SIG, NODE_FIELD, NODE_FIELD_SIG, NODE_ITERATOR, NODE_ITERATOR_BASE, NODE_ITERATOR_SIG, NODE_PNAME, NODE_SIG, NODE_SORT_FACTORY, NODE_SORT_FACTORY_SIG, NODE_SORT_RECORD, NODE_SORT_RECORD_SIG, NS_ANCESTORS_INDEX_SIG, NTH_ITERATOR_CLASS, OBJECT_CLASS, OBJECT_SIG, ORDER_ITERATOR, ORDER_ITERATOR_SIG, OUTPUT_BASE, OUTPUT_HANDLER, OUTPUT_HANDLER_SIG, POP_PARAM_FRAME, POP_PARAM_FRAME_SIG, POSITION_INDEX, PREFIX_URIS_ARRAY_SIG, PREFIX_URIS_IDX_SIG, PUSH_PARAM_FRAME, PUSH_PARAM_FRAME_SIG, REDIRECT_URI, RESET, RESET_SIG, RTF_INITIAL_SIZE, RUNTIME_NODE_CLASS, RUNTIME_PACKAGE, SAX_IMPL, SAX_IMPL_CLASS, SAX_IMPL_SIG, SET_START_NODE, SET_START_NODE_SIG, SINGLETON_ITERATOR, SORT_ITERATOR, SORT_ITERATOR_SIG, STATIC_CHAR_DATA_FIELD, STATIC_CHAR_DATA_FIELD_SIG, STATIC_NAMES_ARRAY_FIELD, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NS_ANCESTORS_ARRAY_FIELD, STATIC_PREFIX_URIS_ARRAY_FIELD, STATIC_PREFIX_URIS_IDX_ARRAY_FIELD, STATIC_TYPES_ARRAY_FIELD, STATIC_URIS_ARRAY_FIELD, STEP_ITERATOR_CLASS, STREAM_XML_OUTPUT, STRING, STRING_BUFFER_CLASS, STRING_BUFFER_SIG, STRING_CLASS, STRING_SIG, STRING_TO_INT, STRING_TO_INT_SIG, STRING_TO_REAL, STRING_TO_REAL_SIG, STRING_VALUE_HANDLER, STRING_VALUE_HANDLER_SIG, STRING_WRITER, STRIP_SPACE, STRIP_SPACE_INTF, STRIP_SPACE_PARAMS, STRIP_SPACE_SIG, TRANSLET_CLASS, TRANSLET_FIELD, TRANSLET_FIELD_SIG, TRANSLET_INTF, TRANSLET_INTF_SIG, TRANSLET_OUTPUT_BASE, TRANSLET_OUTPUT_INTERFACE, TRANSLET_OUTPUT_PNAME, TRANSLET_OUTPUT_SIG, TRANSLET_PNAME, TRANSLET_SIG, TRANSLET_URI, TRANSLET_VERSION_INDEX, TRANSLET_VERSION_INDEX_SIG, TYPES_INDEX, TYPES_INDEX_SIG, UNION_ITERATOR_CLASS, UNION_ITERATOR_SIG, UNSUPPORTED, URIS_INDEX, URIS_INDEX_SIG, WARNING, WRITER_SIG, XHTML_URI, XMLNS_PREFIX, XMLNS_STRING, XMLNS_URI, XSLT_PACKAGE, XSLT_URI
-
Fields inherited from interface org.apache.bcel.generic.InstructionConstants
AALOAD, AASTORE, ACONST_NULL, ALOAD_0, ALOAD_1, ALOAD_2, ARETURN, ARRAYLENGTH, ASTORE_0, ASTORE_1, ASTORE_2, ATHROW, BALOAD, BASTORE, bla, CALOAD, CASTORE, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DMUL, DNEG, DREM, DRETURN, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FMUL, FNEG, FREM, FRETURN, FSUB, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, ILOAD_0, ILOAD_1, ILOAD_2, IMUL, INEG, INSTRUCTIONS, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE_0, ISTORE_1, ISTORE_2, ISUB, IUSHR, IXOR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDIV, LMUL, LNEG, LOR, LREM, LRETURN, LSHL, LSHR, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, NOP, POP, POP2, RETURN, SALOAD, SASTORE, SWAP, THIS
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddParameter(org.apache.xalan.xsltc.compiler.Param param)voidaddVariable(org.apache.xalan.xsltc.compiler.Variable var)voidcharacters(char[] ch, int start, int length)SAX2: Receive notification of character data.voidcreateAST(Stylesheet stylesheet)Instanciates a SAX2 parser and generate the AST from the input.booleanelementSupported(java.lang.String namespace, java.lang.String localName)voidendDocument()SAX2: Receive notification of the end of a document.voidendElement(java.lang.String uri, java.lang.String localname, java.lang.String qname)SAX2: Receive notification of the end of an element.voidendPrefixMapping(java.lang.String prefix)SAX2: End the scope of a prefix-URI Namespace mapping.booleanerrorsFound()Returns true if there were any errors during compilationbooleanfunctionSupported(java.lang.String fname)intgetCurrentImportPrecedence()StylesheetgetCurrentStylesheet()SyntaxTreeNodegetDocumentRoot()java.util.VectorgetErrors()org.apache.xalan.xsltc.compiler.QNamegetExcludeResultPrefixes()org.apache.xalan.xsltc.compiler.QNamegetExtensionElementPrefixes()intgetNextImportPrecedence()org.apache.xalan.xsltc.compiler.OutputgetOutput()java.util.PropertiesgetOutputProperties()org.apache.xalan.xsltc.compiler.QNamegetQName(java.lang.String stringRep)org.apache.xalan.xsltc.compiler.QNamegetQName(java.lang.String stringRep, boolean reportError)org.apache.xalan.xsltc.compiler.QNamegetQName(java.lang.String scope, java.lang.String name)org.apache.xalan.xsltc.compiler.QNamegetQName(java.lang.String namespace, java.lang.String prefix, java.lang.String localname)org.apache.xalan.xsltc.compiler.QNamegetQName(org.apache.xalan.xsltc.compiler.QName scope, org.apache.xalan.xsltc.compiler.QName name)org.apache.xalan.xsltc.compiler.QNamegetQNameIgnoreDefaultNs(java.lang.String stringRep)org.apache.xalan.xsltc.compiler.QNamegetQNameSafe(java.lang.String stringRep)org.apache.xalan.xsltc.compiler.SymbolTablegetSymbolTable()TemplategetTemplate()intgetTemplateIndex()StylesheetgetTopLevelStylesheet()org.apache.xalan.xsltc.compiler.QNamegetUseAttributeSets()java.util.VectorgetWarnings()XSLTCgetXSLTC()voidignorableWhitespace(char[] ch, int start, int length)IGNORED - all ignorable whitespace is ignoredvoidinit()org.apache.xalan.xsltc.compiler.VariableBaselookupVariable(org.apache.xalan.xsltc.compiler.QName name)SyntaxTreeNodemakeInstance(java.lang.String uri, java.lang.String prefix, java.lang.String local, org.xml.sax.Attributes attributes)StylesheetmakeStylesheet(SyntaxTreeNode element)Create an instance of theStylesheetclass, and then parse, typecheck and compile the instance.SyntaxTreeNodeparse(org.xml.sax.InputSource input)Parses a stylesheet and builds the internal abstract syntax treeSyntaxTreeNodeparse(org.xml.sax.XMLReader reader, org.xml.sax.InputSource input)Parses a stylesheet and builds the internal abstract syntax treeorg.apache.xalan.xsltc.compiler.ExpressionparseExpression(SyntaxTreeNode parent, java.lang.String exp)Parse an XPath expression:org.apache.xalan.xsltc.compiler.ExpressionparseExpression(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)Parse an XPath expression:PatternparsePattern(SyntaxTreeNode parent, java.lang.String pattern)Parse an XPath pattern:PatternparsePattern(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)Parse an XPath pattern:voidprintErrors()Prints all compile-time errorsvoidprintWarnings()Prints all compile-time warningsvoidprocessingInstruction(java.lang.String name, java.lang.String value)SAX2: Receive notification of a processing instruction.voidremoveVariable(org.apache.xalan.xsltc.compiler.QName name)voidreportError(int category, ErrorMsg error)Common error/warning message handlervoidsetCurrentStylesheet(Stylesheet stylesheet)voidsetDocumentLocator(org.xml.sax.Locator locator)Store the document locator to later retrieve line numbers of all elements from the stylesheetvoidsetOutput(org.apache.xalan.xsltc.compiler.Output output)voidsetTemplate(Template template)voidsetXSLTC(XSLTC xsltc)voidskippedEntity(java.lang.String name)IGNORED - we do not have to do anything with skipped entitiesvoidstartDocument()SAX2: Receive notification of the beginning of a document.voidstartElement(java.lang.String uri, java.lang.String localname, java.lang.String qname, org.xml.sax.Attributes attributes)SAX2: Receive notification of the beginning of an element.voidstartPrefixMapping(java.lang.String prefix, java.lang.String uri)SAX2: Begin the scope of a prefix-URI Namespace mapping.
-
-
-
Constructor Detail
-
Parser
public Parser(XSLTC xsltc)
-
-
Method Detail
-
init
public void init()
-
setOutput
public void setOutput(org.apache.xalan.xsltc.compiler.Output output)
-
getOutput
public org.apache.xalan.xsltc.compiler.Output getOutput()
-
getOutputProperties
public java.util.Properties getOutputProperties()
-
addVariable
public void addVariable(org.apache.xalan.xsltc.compiler.Variable var)
-
addParameter
public void addParameter(org.apache.xalan.xsltc.compiler.Param param)
-
removeVariable
public void removeVariable(org.apache.xalan.xsltc.compiler.QName name)
-
lookupVariable
public org.apache.xalan.xsltc.compiler.VariableBase lookupVariable(org.apache.xalan.xsltc.compiler.QName name)
-
setXSLTC
public void setXSLTC(XSLTC xsltc)
-
getXSLTC
public XSLTC getXSLTC()
-
getCurrentImportPrecedence
public int getCurrentImportPrecedence()
-
getNextImportPrecedence
public int getNextImportPrecedence()
-
setCurrentStylesheet
public void setCurrentStylesheet(Stylesheet stylesheet)
-
getCurrentStylesheet
public Stylesheet getCurrentStylesheet()
-
getTopLevelStylesheet
public Stylesheet getTopLevelStylesheet()
-
getQNameSafe
public org.apache.xalan.xsltc.compiler.QName getQNameSafe(java.lang.String stringRep)
-
getQName
public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String stringRep)
-
getQNameIgnoreDefaultNs
public org.apache.xalan.xsltc.compiler.QName getQNameIgnoreDefaultNs(java.lang.String stringRep)
-
getQName
public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String stringRep, boolean reportError)
-
getQName
public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String namespace, java.lang.String prefix, java.lang.String localname)
-
getQName
public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String scope, java.lang.String name)
-
getQName
public org.apache.xalan.xsltc.compiler.QName getQName(org.apache.xalan.xsltc.compiler.QName scope, org.apache.xalan.xsltc.compiler.QName name)
-
getUseAttributeSets
public org.apache.xalan.xsltc.compiler.QName getUseAttributeSets()
-
getExtensionElementPrefixes
public org.apache.xalan.xsltc.compiler.QName getExtensionElementPrefixes()
-
getExcludeResultPrefixes
public org.apache.xalan.xsltc.compiler.QName getExcludeResultPrefixes()
-
makeStylesheet
public Stylesheet makeStylesheet(SyntaxTreeNode element) throws CompilerException
Create an instance of theStylesheetclass, and then parse, typecheck and compile the instance. Must be called afterparse().- Throws:
CompilerException
-
createAST
public void createAST(Stylesheet stylesheet)
Instanciates a SAX2 parser and generate the AST from the input.
-
parse
public SyntaxTreeNode parse(org.xml.sax.XMLReader reader, org.xml.sax.InputSource input)
Parses a stylesheet and builds the internal abstract syntax tree- Parameters:
reader- A SAX2 SAXReader (parser)input- A SAX2 InputSource can be passed to a SAX reader- Returns:
- The root of the abstract syntax tree
-
parse
public SyntaxTreeNode parse(org.xml.sax.InputSource input)
Parses a stylesheet and builds the internal abstract syntax tree- Parameters:
input- A SAX2 InputSource can be passed to a SAX reader- Returns:
- The root of the abstract syntax tree
-
getDocumentRoot
public SyntaxTreeNode getDocumentRoot()
-
elementSupported
public boolean elementSupported(java.lang.String namespace, java.lang.String localName)
-
functionSupported
public boolean functionSupported(java.lang.String fname)
-
getSymbolTable
public org.apache.xalan.xsltc.compiler.SymbolTable getSymbolTable()
-
getTemplate
public Template getTemplate()
-
setTemplate
public void setTemplate(Template template)
-
getTemplateIndex
public int getTemplateIndex()
-
makeInstance
public SyntaxTreeNode makeInstance(java.lang.String uri, java.lang.String prefix, java.lang.String local, org.xml.sax.Attributes attributes)
-
parseExpression
public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent, java.lang.String exp)
Parse an XPath expression:- Parameters:
parent- - XSL element where the expression occuredexp- - textual representation of the expression
-
parseExpression
public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)
Parse an XPath expression:- Parameters:
parent- - XSL element where the expression occuredattr- - name of this element's attribute to get expression fromdef- - default expression (if the attribute was not found)
-
parsePattern
public Pattern parsePattern(SyntaxTreeNode parent, java.lang.String pattern)
Parse an XPath pattern:- Parameters:
parent- - XSL element where the pattern occuredpattern- - textual representation of the pattern
-
parsePattern
public Pattern parsePattern(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)
Parse an XPath pattern:- Parameters:
parent- - XSL element where the pattern occuredattr- - name of this element's attribute to get pattern fromdef- - default pattern (if the attribute was not found)
-
errorsFound
public boolean errorsFound()
Returns true if there were any errors during compilation
-
printErrors
public void printErrors()
Prints all compile-time errors
-
printWarnings
public void printWarnings()
Prints all compile-time warnings
-
reportError
public void reportError(int category, ErrorMsg error)Common error/warning message handler
-
getErrors
public java.util.Vector getErrors()
-
getWarnings
public java.util.Vector getWarnings()
-
startDocument
public void startDocument()
SAX2: Receive notification of the beginning of a document.- Specified by:
startDocumentin interfaceorg.xml.sax.ContentHandler
-
endDocument
public void endDocument()
SAX2: Receive notification of the end of a document.- Specified by:
endDocumentin interfaceorg.xml.sax.ContentHandler
-
startPrefixMapping
public void startPrefixMapping(java.lang.String prefix, java.lang.String uri)SAX2: Begin the scope of a prefix-URI Namespace mapping. This has to be passed on to the symbol table!- Specified by:
startPrefixMappingin interfaceorg.xml.sax.ContentHandler
-
endPrefixMapping
public void endPrefixMapping(java.lang.String prefix)
SAX2: End the scope of a prefix-URI Namespace mapping. This has to be passed on to the symbol table!- Specified by:
endPrefixMappingin interfaceorg.xml.sax.ContentHandler
-
startElement
public void startElement(java.lang.String uri, java.lang.String localname, java.lang.String qname, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXExceptionSAX2: Receive notification of the beginning of an element. The parser may re-use the attribute list that we're passed so we clone the attributes in our own Attributes implementation- Specified by:
startElementin interfaceorg.xml.sax.ContentHandler- Throws:
org.xml.sax.SAXException
-
endElement
public void endElement(java.lang.String uri, java.lang.String localname, java.lang.String qname)SAX2: Receive notification of the end of an element.- Specified by:
endElementin interfaceorg.xml.sax.ContentHandler
-
characters
public void characters(char[] ch, int start, int length)SAX2: Receive notification of character data.- Specified by:
charactersin interfaceorg.xml.sax.ContentHandler
-
processingInstruction
public void processingInstruction(java.lang.String name, java.lang.String value)SAX2: Receive notification of a processing instruction. These require special handling for stylesheet PIs.- Specified by:
processingInstructionin interfaceorg.xml.sax.ContentHandler
-
ignorableWhitespace
public void ignorableWhitespace(char[] ch, int start, int length)IGNORED - all ignorable whitespace is ignored- Specified by:
ignorableWhitespacein interfaceorg.xml.sax.ContentHandler
-
skippedEntity
public void skippedEntity(java.lang.String name)
IGNORED - we do not have to do anything with skipped entities- Specified by:
skippedEntityin interfaceorg.xml.sax.ContentHandler
-
setDocumentLocator
public void setDocumentLocator(org.xml.sax.Locator locator)
Store the document locator to later retrieve line numbers of all elements from the stylesheet- Specified by:
setDocumentLocatorin interfaceorg.xml.sax.ContentHandler
-
-