Gently BNF

syntax

::=

<LOCATION> <EQUALS> <LOCATOR> pages menu )?

pages

::=

( page )+

page

::=

( <JSP> | <SERVLET> ) <IDENTIFIER> <CURLYOPEN>methods <CURLYCLOSE>

methods

::=

( method )*

method

::=

( <HOLLYWOOD> )? <IDENTIFIER> <OPEN> parameters <CLOSE> <CURLYOPEN> ( ( callers ( <AND> calls )? ) | ( calls ) )? <CURLYCLOSE>

parameters

::=

( parameter ( <COMMA> parameter )* )?

parameter

::=

( ( <BOOLEAN> <IDENTIFIER> ) | ( ( <INT> | <STRING> ) ( ( <ARRAYOPEN> <ARRAYCLOSE> <IDENTIFIER> ) | ( <IDENTIFIER> ( <ARRAYOPEN> <ARRAYCLOSE> )? ) ) ) )

callers

::=

( caller ( <OR> caller )* )

caller

::=

<CALLED> <BY> ( ( <REDIRECT> <FROM> <IDENTIFIER> <DOT> <IDENTIFIER> ) | ( <IDENTIFIER> <FROM> ( ( <IDENTIFIER> <DOT> <IDENTIFIER> ) | <MENU> ) ) )

calls

::=

( call ( <OR> call )* )

call

::=

( link | form | redirect )

redirect

::=

<REDIRECT> <IDENTIFIER> <DOT> <IDENTIFIER> <OPEN> actualLinkParameters <CLOSE>

link

::=

<LINK> <IDENTIFIER> <CALLS> <IDENTIFIER> <DOT> <IDENTIFIER> <OPEN> actualLinkParameters <CLOSE>

actualLinkParameters

::=

( <IDENTIFIER> ( <COMMA> <IDENTIFIER> )* )?

form

::=

<FORM> <IDENTIFIER> <CALLS> <IDENTIFIER> <DOT> <IDENTIFIER> <OPEN> actualFormParameters <CLOSE>

actualFormParameters

::=

( actualFormParameter ( <COMMA> actualFormParameter )* )?

actualFormParameter

::=

( <TEXT> | <TEXTAREA> | <CHECKBOX> | <RADIO> | <COMBOBOX> | <MULTIPLELIST> | <HIDDEN> ) <IDENTIFIER>

menu

::=

<MENU> <CURLYOPEN> calls <CURLYCLOSE>