/**
* The root of the AST of a JSP.
*/
|
CompilationUnit |
::= |
Prolog
Content
<EOF>
|
/**
* The optional prolog of a JSP, including (xml) declarations and DTD.
*/
|
Prolog |
::= |
( ( CommentTag
| JspComment
)*
Declaration
)?
( ( CommentTag
| JspComment
)*
DoctypeDeclaration
)?
|
/**
* Everything between a start-tag and the corresponding end-tag of an element.
*/
|
Content |
::= |
( Text
| ContentElementPossiblyWithText
) ( ContentElementPossiblyWithText
)*
|
/**
* A single (non-text) element that can occur between a start- and end-tag of an element.
* Possibly followed by text.
*/
|
ContentElementPossiblyWithText |
::= |
( CommentTag
| Element
| CData
| JspComment
| JspDeclaration
| JspExpression
| JspScriptlet
| JspDirective
) ( Text
)?
|
|
JspDirective |
::= |
<JSP_DIRECTIVE_START>
<JSP_DIRECTIVE_NAME>
( JspDirectiveAttribute
)*
<JSP_DIRECTIVE_END>
|
|
JspDirectiveAttribute |
::= |
<JSP_DIRECTIVE_ATTRIBUTE_NAME>
<JSP_DIRECTIVE_ATTRIBUTE_EQUALS>
<JSP_DIRECTIVE_ATTRIBUTE_VALUE>
|
|
JspScriptlet |
::= |
<JSP_SCRIPTLET_START>
<JSP_SCRIPTLET>
<JSP_SCRIPTLET_END>
|
|
JspExpression |
::= |
<JSP_EXPRESSION_START>
<JSP_EXPRESSION>
<JSP_EXPRESSION_END>
|
|
JspDeclaration |
::= |
<JSP_DECLARATION_START>
<JSP_DECLARATION>
<JSP_DECLARATION_END>
|
|
JspComment |
::= |
<JSP_COMMENT_START>
<JSP_COMMENT_CONTENT>
<JSP_COMMENT_END>
|
/**
* This production groups all characters between two tags, where
* tag is an xml-tag "<...>" or a jsp-page-tag "<%...%>" or CDATA "<![CDATA[...]]>".
* Text consists of unparsed text and/or Expression Language expressions.
*/
|
Text |
::= |
( UnparsedText
| ElExpression
)+
|
|
UnparsedText |
::= |
<UNPARSED_TEXT>
|
/**
* Text that contains no single quotes, and that does not contain the start
* of a EL expression or value binding.
*/
|
UnparsedTextNoSingleQuotes |
::= |
<UNPARSED_TEXT_NO_SINGLE_QUOTES>
|
/**
* Text that contains no double quotes, and that does not contain the start
* of a EL expression or value binding.
*/
|
UnparsedTextNoDoubleQuotes |
::= |
<UNPARSED_TEXT_NO_DOUBLE_QUOTES>
|
/**
* An EL expression, not within an attribute value.
*/
|
ElExpression |
::= |
<EL_EXPRESSION>
|
|
ValueBindingInAttribute |
::= |
<VALUE_BINDING_IN_ATTRIBUTE>
|
|
ElExpressionInAttribute |
::= |
<EL_EXPRESSION_IN_ATTRIBUTE>
|
|
CData |
::= |
<CDATA_START>
( <UNPARSED>
)*
<CDATA_END>
|
/**
* A XML element, either with a single empty tag, or with a starting and closing tag
* with optional contained content.
*/
|
Element |
::= |
<TAG_START>
<TAG_NAME>
( Attribute
)*
( ( <TAG_END>
( Content
)?
<ENDTAG_START>
<TAG_NAME>
<TAG_END>
)| ( <TAG_SLASHEND>
) ) |
|
Attribute |
::= |
<ATTR_NAME>
( <ATTR_EQ>
AttributeValue
) |
/**
* The value of an attribute of an element.
* EL expressions, JSF value bindings, and JSP expressions
* are parsed as sub-nodes of the AttributeValue node.
*/
|
AttributeValue |
::= |
( ( <DOUBLE_QUOTE>
( ( UnparsedTextNoDoubleQuotes
| QuoteIndependentAttributeValueContent
) )*
( <ENDING_DOUBLE_QUOTE>
| <DOLLAR_OR_HASH_DOUBLE_QUOTE>
) )| ( <SINGLE_QUOTE>
( ( UnparsedTextNoSingleQuotes
| QuoteIndependentAttributeValueContent
) )*
( <ENDING_SINGLE_QUOTE>
| <DOLLAR_OR_HASH_SINGLE_QUOTE>
) ) ) |
/**
* Partial content of an attribute value that can contain all quotes.
* This groups EL expressions, value bindings, and JSP expressions.
*/
|
QuoteIndependentAttributeValueContent |
::= |
( ElExpressionInAttribute
| ValueBindingInAttribute
| JspExpressionInAttribute
) |
|
JspExpressionInAttribute |
::= |
<JSP_EXPRESSION_IN_ATTRIBUTE>
|
|
CommentTag |
::= |
<COMMENT_START>
( <COMMENT_TEXT>
)*
<COMMENT_END>
|
|
Declaration |
::= |
<DECL_START>
<TAG_NAME>
( Attribute
)*
<DECL_END>
|
|
DoctypeDeclaration |
::= |
<DOCTYPE_DECL_START>
<WHITESPACES>
<NAME>
( <WHITESPACES>
)?
( DoctypeExternalId
( <WHITESPACES>
)?
)?
<DOCTYPE_DECL_END>
|
|
DoctypeExternalId |
::= |
( <SYSTEM>
<WHITESPACES>
<QUOTED_LITERAL>
)| ( <PUBLIC>
<WHITESPACES>
<QUOTED_LITERAL>
<WHITESPACES>
<QUOTED_LITERAL>
) |
<DEFAULT> TOKEN : {
}
|
<DEFAULT, JspDirectiveState, JspDirectiveAttributesState> SKIP : {
<(<WHITESPACE>)+>
}
|
<AttrValueState, AfterTagState, InTagState> SPECIAL_TOKEN : {
<(<WHITESPACE>)+>
}
|
<DEFAULT, AfterTagState> TOKEN : {
<TAG_START: "<">
|<ENDTAG_START: "</">
|<COMMENT_START: "<!--">
|<DECL_START: "<?">
|<DOCTYPE_DECL_START: "<!DOCTYPE">
|<CDATA_START: "<![CDATA[">
|<JSP_COMMENT_START: "<%--">
|<JSP_DECLARATION_START: "<%!">
|<JSP_EXPRESSION_START: "<%=">
|<JSP_SCRIPTLET_START: "<%">
|<JSP_DIRECTIVE_START: "<%@">
}
|
<AfterTagState> TOKEN : {
<EL_EXPRESSION: "${" (<QUOTED_STRING> | <TEXT_IN_EL>)* "}">
|<UNPARSED_TEXT: (<NO_LT_OR_DOLLAR> | <DOLLAR> <NO_OPENBRACE_OR_LT> | <EL_ESCAPE>)+>
}
|
<JspDirectiveState> TOKEN : {
<JSP_DIRECTIVE_NAME: <IDENTIFIER>>
}
|
<JspDirectiveAttributesState> TOKEN : {
<JSP_DIRECTIVE_ATTRIBUTE_NAME: <IDENTIFIER>>
|<JSP_DIRECTIVE_ATTRIBUTE_EQUALS: "=">
|<JSP_DIRECTIVE_ATTRIBUTE_VALUE: <QUOTED_STRING>>
|<JSP_DIRECTIVE_END: "%>">
}
|
<JspScriptletState> TOKEN : {
<JSP_SCRIPTLET_END: "%>">
|<JSP_SCRIPTLET: <NO_JSP_TAG_END>>
}
|
<JspExpressionState> TOKEN : {
<JSP_EXPRESSION_END: "%>">
|<JSP_EXPRESSION: <NO_JSP_TAG_END>>
}
|
<JspDeclarationState> TOKEN : {
<JSP_DECLARATION_END: "%>">
|<JSP_DECLARATION: <NO_JSP_TAG_END>>
}
|
<JspCommentState> TOKEN : {
<JSP_COMMENT_END: "--%>">
|<JSP_COMMENT_CONTENT: <NO_JSP_COMMENT_END>>
}
|
<DocTypeState, DocTypeExternalIdState> TOKEN : {
<WHITESPACES: (<WHITESPACE>)+>
}
|
<DocTypeState> TOKEN : {
<NAME: <XMLNAME>>
}
|
<DocTypeExternalIdState> TOKEN : {
<PUBLIC: "PUBLIC">
|<SYSTEM: "SYSTEM">
|<DOCTYPE_DECL_END: ">">
|<QUOTED_LITERAL: <QUOTED_STRING>>
}
|
<CDataState> TOKEN : {
<UNPARSED: ~[]>
|<CDATA_END: "]]>">
}
|
<StartTagState> TOKEN : {
<TAG_NAME: <IDENTIFIER>>
|<LST_ERROR: ~[]>
}
|
<InTagState> TOKEN : {
<ATTR_NAME: <IDENTIFIER>>
|<TAG_END: ">">
|<DECL_END: "?>" | "!>">
|<TAG_SLASHEND: "/>">
|<ATTR_EQ: "=">
|<IN_TAG_ERROR: ~[]>
}
|
<AttrValueState> TOKEN : {
<SINGLE_QUOTE: "\'">
|<DOUBLE_QUOTE: "\"">
}
|
<AttrValueBetweenSingleQuotesState, AttrValueBetweenDoubleQuotesState> TOKEN : {
<EL_EXPRESSION_IN_ATTRIBUTE: "${" (<QUOTED_STRING> | <TEXT_IN_EL>)* "}">
|<VALUE_BINDING_IN_ATTRIBUTE: "#{" (<QUOTED_STRING> | <TEXT_IN_EL>)* "}">
|<JSP_EXPRESSION_IN_ATTRIBUTE: "<%=" <NO_JSP_TAG_END> "%>">
}
|
<AttrValueBetweenSingleQuotesState> TOKEN : {
<ENDING_SINGLE_QUOTE: "\'">
|<UNPARSED_TEXT_NO_SINGLE_QUOTES: (~["$","#","\'"] | ["$","#"] ~["{","\'"] | <EL_ESCAPE>)+>
|<DOLLAR_OR_HASH_SINGLE_QUOTE: ["$","#"] "\'">
}
|
<AttrValueBetweenDoubleQuotesState> TOKEN : {
<ENDING_DOUBLE_QUOTE: "\"">
|<UNPARSED_TEXT_NO_DOUBLE_QUOTES: (~["$","#","\""] | ["$","#"] ~["{","\""] | <EL_ESCAPE>)+>
|<DOLLAR_OR_HASH_DOUBLE_QUOTE: ["$","#"] "\"">
}
|
<CommentState> TOKEN : {
<COMMENT_END: "--" (" ")* ">" | "->">
|<COMMENT_TEXT: ~[]>
}
|