Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MoDisco/Components/JSP/Architecture/0.9"

Line 3: Line 3:
 
Modisco JSP Parser has been developed using an ANTLR grammar
 
Modisco JSP Parser has been developed using an ANTLR grammar
 
It can support JSP file, as well as HTML files, TAG files, and JSP/TAG fragment files
 
It can support JSP file, as well as HTML files, TAG files, and JSP/TAG fragment files
 +
 +
==Grammar Architecture==
 +
 +
The ANTLR grammar is composed with rules representing what could be founded in a JSP file :
  
 
==Updating the Grammar==
 
==Updating the Grammar==

Revision as of 11:06, 20 April 2010

JSP Parser

Modisco JSP Parser has been developed using an ANTLR grammar It can support JSP file, as well as HTML files, TAG files, and JSP/TAG fragment files

Grammar Architecture

The ANTLR grammar is composed with rules representing what could be founded in a JSP file :

Updating the Grammar

Non XML Conformity

The ANTLR Grammar take in consideration the non XML conformity of a JSP file. Knowing that it can contain html or javascript tags, an opened tag is not necessarily closed by one

Example : <img src="./img/myImage.png">

In order to build the inheritance tree, we had to store all the founded tags, and each time closing one is detected, re build the inheritance tree.

Example : <p> <img src="./img/myImage.png"> </p>

This fragment of code will add the <img> tag to the children of the

on when

is detected, and so on.

User Code in the generated one

Because we do not know if a tag will be closed later in the code, we had to manually implement some text concatenation.

Let's say we meet a new opening tag:

<p> This is some HTML content </p>

We cannot declared a rule "'<p>' 'any letter' '</p>'" because </p> might never appears, or a JSP expression could be there. That is why we concatenate manually the potentially present content after an opening tag, and wait till we found a known token.

Back to the top