BNF rules of LAZY
startrule = "define" < node_def > "end" .
node_def = "node" nodeident
display_part
select_part
order_part
from_part .
display_part = "display" field < "," field > .
field = [ level ] [ header ]
modified_sqlpart
[ footer ] .
level = "level" "0 .. 9" .
header = string .
modified_sqlpart =
( ( "bold" / "italic" )
"(" ( modified_sqlpart / string ) ")" )
/ ( [ "immediate" ] "href" nodeident
"condition" sqlpart_list
"(" ( modified_sqlpart / string ) ")" )
/ sqlpart .
sqlpart = columnident
/ ( "sqlexpr" "(" string ")" ) .
fromlistsqlpart = string < "," string > .
string = "''" < "character" > "''" .
sqlpart_list = sqlpart < "," sqlpart > .
footer = "break" / "newpara" .
from_part = "from" fromlistsqlpart .
select_part = "selected" "by" sqlpart_list .
order_part = "order" "by" sqlpart_list .
columnident = identifier .
nodeident = identifier .
identifier = "a...z" < "a..z, 1..9, . _" > .