<Syntax>


bigwig : require_list service

require_list : require
require : require <URL>
| require stringconst

service : mode_list service { toplevel_list }
toplevel_list : toplevel
toplevel : mode_list session
| seslet
| decl_list
| format
| schema

mode_list : mode
mode : ssl
| singular
| selective ( exp_list )
| span ( exp )
| refresh ( exp )
| htaccess ( exp )

session : session id ( argument_list ) { toplevel_list stm_list }

seslet : seslet type id ( argument_list ) { toplevel_list stm_list }

html : <html> htmlbody_list </html>
| <html> htmlbody_list </html> @ stringconst
htmlbody_list : htmlbody
htmlbody : < defattr attribute_list >
| </ defattr >
| <bigwig>
| <head> htmlbody_list </head>
| <title> htmlbody_list </title>
| <body attribute_list> htmlbody_list </body>
| WHATEVER
| <!-- HTMLCOMMENT -->
| < [ ] >
| < [ id ] >
| < [ ( exp ) ] >
| < [ compound_stm ] >
| <input attribute_list >
| <textarea attribute_list > htmlbody_list </textarea>
| <select attribute_list > htmlbody_list </select>
| <tuple attribute_list > htmlbody_list </tuple>
| <continue attribute_list > htmlbody_list </continue>
| <applet attribute_list > htmlbody_list </applet>
| <param attribute_list >
| <result attribute_list >
| <bigwig-regexp attribute_list > htmlbody_list </bigwig-regexp>
attribute_list : attribute
attribute : mode_list
| name = id
| format = id
| attr
| attr = attr
attr : defattr
| [ ]
| [ id ]
| [ ( exp ) ]
| [ compound_stm ]
defattr : DEFATTR
| STRINGCONST

format : format id = regexp ;
regexp_list : regexp
regexp : id
| stringconst
| anychar
| star ( regexp )
| concat ( regexp_list )
| union ( regexp_list )
| intersection ( regexp_list )
| complement ( regexp )
| range ( charconst , charconst )
| fix ( intconst , intconst )
| relax ( intconst , intconst )
| regexp ( stringconst )
| [ id = regexp ]

schema : schema id { field_list }
| schema id extends id { field_list }
field_list : field
field : type id_list ;

decl_list : decl
decl : lock id_list ;
| type id_list ;
| type id_list = exp ;
| type id_list ( argument_list ) compound_stm
| type id_list ( argument_list ) ;
argument_list : argument
argument : type id

type : modifier_list void
| modifier_list bool
| modifier_list int
| modifier_list float
| modifier_list char
| modifier_list string
| modifier_list time
| modifier_list file
| modifier_list tuple id
| modifier_list relation id
| modifier_list vector id
| modifier_list vector type
| modifier_list html
| modifier_list typeof ( exp )
modifier_list : modifier
modifier : const
| shared

stm_list : stm
stm : /* empty */ ;
| exp ;
| exit mode_list ;
| exit mode_list exp ;
| flash mode_list exp ;
| show mode_list exp ;
| show mode_list exp timeout stm
| show mode_list exp receive [ getinput_list ] ;
| show mode_list exp receive [ getinput_list ] timeout stm
| return ;
| return exp ;
| if ( exp ) stm
| if ( exp ) stm else stm
| while ( exp ) stm
| for ( exp ; exp ; exp ) stm
| switch ( exp ) { switchbranch_list }
| sendmail ( exp , exp )
| read ( id ) stm
| read ( id ) stm timeout exp : stm
| write ( id ) stm
| write ( id ) stm timeout exp : stm
| update id set tupleexp_list ;
| update id set tupleexp_list where exp ;
| insert into id values ( exp_list ) ;
| delete from id where exp ;
| compound_stm

compound_stm : { decl_list stm_list }
switchbranch_list : switchbranch
switchbranch : case exp : stm_list break ;
| default : stm_list break ;
getinput_list : getinput
getinput : exp = id
| id
| exp

exp_list : exp
exp : #
| @
| @ intconst
| dir
| url
| url id ( exp_list )
| userid
| time ( exp , exp , exp )
| time ( exp , exp , exp , exp , exp , exp )
| now ( )
| notime
| difftime ( exp , exp )
| boolconst
| intconst
| floatconst
| charconst
| stringconst
| tuple { tupleexp_list }
| relation { exp_list }
| vector { exp_list }
| html
| id
| id ( exp_list )
| ( exp )
| + exp
| - exp
| exp = exp
| exp += exp
| exp -= exp
| exp *= exp
| exp /= exp
| exp %= exp
| exp =<[ plug_list ]
| ++ exp
| exp ++
| -- exp
| exp --
| exp ? exp : exp
| ! exp
| exp == exp
| exp != exp
| exp < exp
| exp > exp
| exp >= exp
| exp <= exp
| exp && exp
| exp || exp
| | exp |
| exp + exp
| exp - exp
| exp * exp
| exp / exp
| exp % exp
| exp >> exp
| exp << exp
| exp . id
| exp [ exp ]
| exp [ exp .. exp ]
| exp \+ ( id_list )
| exp \- ( id_list )
| ( type ) exp
| md5 ( exp )
| getcookie ( exp )
| setcookie ( exp , exp )
| getenv ( exp )
| getYear ( exp )
| getMonth ( exp )
| getDay ( exp )
| getHour ( exp )
| getMinute ( exp )
| getSecond ( exp )
| getWeekday ( exp )
| open ( exp , stringconst )
| open ( exp , exp )
| print ( exp , exp )
| println ( exp , exp )
| scan ( exp , id )
| scanln ( exp )
| eof ( exp )
| close ( exp )
| fileerror ( exp )
| random ( exp )
| system ( exp )
| exp <[ plug_list ]
| rawhtml ( exp )
| track ( exp )
| match ( exp , exp ) [ getinput_list ]
| get ( exp )
| get ( exp ) [ cgiinput_list ]
| post ( exp )
| post ( exp ) [ cgiinput_list ]
| sort ( exp )
| sort ( exp ; id_list )
| cart ( exp , exp )
| factor ( exp_list ) stm
| factor ( exp_list ; id_list ) stm
| select selectclause_list from id_list
| select selectclause_list from id_list where exp
| exp union exp
| ( compound_stm )

tupleexp_list : tupleexp
tupleexp : id = exp
plug_list : plug
plug : id = exp
| id
| exp
cgiinput_list : cgiinput
cgiinput : exp = exp
selectclause_list : selectclause
selectclause : *
| id
| id as id
| id . *
| id . id
| id . id as id

boolconst : BOOLCONST
intconst : INTCONST
floatconst : FLOATCONST
charconst : CHARCONST
stringconst : STRINGCONST
id_list : id
id : IDENTIFIER
| ` id
| id ~ id


Legend

NT:Zero-or-more repetitions of the nonterminal NT.
NT:Zero-or-more comma separated repetitions of the nonterminal NT.
NT:One-or-more repetitions of the nonterminal NT.
NT:One-or-more comma separated repetitions of the nonterminal NT.
NT:Zero-or-one of the nonterminal NT.


bigwig@brics.dk
Last updated: November 2, 2001
Valid HTML 4.01!