
ObjectHTML
Wstęp - geneza, zastosowania |
Gramatyka jest zapisana w standardowej notacji BNF [1]. Symbol początkowy to ohdefinition. Symbole terminalne poprzedzone są przedrostkiem "T".
Główne składowe programu
<ohdefinition> ::= e | <ohdefinition> TNL
| <ohdefinition> <ohimage> TNL
| <ohdefinition> <ohgroup> TNL
| <ohdefinition> <ohclass> TNL
| <ohdefinition> <ohfile> TNL
Definicja rysunku
<ohimage> ::= TIMAGE TSIMPLEIDEN <const>
Definicja grupy
<ohgroup> ::= TGROUP <iden> <const> <ohgroupopt>
<ohgroupopt> ::= e | TEXTENDS <iden>
Definicja obiektu
<ohfile> ::= TFILE TSIMPLEIDEN <const> TDO <icall>
Definicja klasy
<ohclass> ::= TCLASS TSIMPLEIDEN TEXTENDS TSIMPLEIDEN TNL <classdefelem> TENDCLASS
Składowe klasy
<classdefelem> ::= e | <classdefelem>
| <classdefelem> <cgroups> TNL
| <classdefelem> <cdirectory> TNL
| <classdefelem> <cextension> TNL
| <classdefelem> <attr> TNL
| <classdefelem> <assign> TNL
| <classdefelem> <method> TNL
| <classdefelem> <redefine> TNL
<cgroups> ::= TGROUPS <cgroups_list_rest> <iden>
<cgroups_list_rest> ::= e | <cgroups_list_rest> <iden> TCOMMA
<cdirectory> ::= TDIRECTORY <const>
<cextension> ::= TEXTENSION <const>
Atrybut
<attr> ::= TATTR TSIMPLEIDEN <attroptconst>
<attroptconst> ::= e | <const>
<assign> ::= TSET TSIMPLEIDEN <const>
Metoda
<method> ::= TMETHOD TSIMPLEIDEN TLEFTBR <mparams> TRIGHTBR TNL <instructions> TENDMETHOD
<redefine> ::= TREDEFINE TSIMPLEIDEN TLEFTBR <mparams> TRIGHTBR TNL <instructions> TENDREDEFINE
<mparams> ::= e | <mparams_rest> TSIMPLEIDEN
<mparams_rest> ::= e | <mparams_rest> TSIMPLEIDEN TCOMMA
Blok instrukcji
<instructions> ::= e | <instructions> TNL
| <instructions> <instr> TSEMICOLON
| <instructions> <instr> TNL
Instrukcje
<instr> ::= <idecl>
| <ivalue>
| <icall>
| <iset>
| <iappend>
| <iinc>
| <iif>
| <iifelse>
| <iwhile>
| <ifor>
| <iquery>
| <iimport>
| <iexport>
| <iencode>
| <icurrenttime>
| <imembersof>
| <igrname>
| <igrparent>
| <ilastwordin>
| <ifirstwordin>
| <ibeforeword>
| <iafterword>
<idecl> ::= TDECL <varsrest> <vardecl>
<varsrest> ::= e | <varsrest> <vardecl> TCOMMA
<vardecl> ::= TSIMPLEIDEN <const> | TSIMPLEIDEN
<ivalue> ::= <valuestat>
<icall> ::= TCOMPIDEN TLEFTBR <cparams> TRIGHTBR
| TCALL TLEFTBR <valuestat> TCOMMA <valuestat> TRIGHTBR TLEFTBR <cparams> TRIGHTBR
<cparams> ::= e | <cparamsrest> <valuestat>
<cparamsrest> ::= e | <cparamsrest> <valuestat> TCOMMA
<iset> ::= TSET <valuestat> <valuestatrest> <valuestat>
<iappend> ::= TAPPEND <valuestat> <valuestatrest> <valuestat>
<valuestatrest> ::= e | <valuestatrest> <valuestat> TCOMMA
<iinc> ::= TINC <valuestat> <valuestat>
<iif> ::= TIF <or_expr> TTHEN TNL <instructions> TENDIF
<iifelse> ::= TIF <or_expr> TTHEN TNL <instructions> TELSE TNL <instructions> TENDIF
<iwhile> ::= TWHILE <or_expr> TDO TNL <instructions> TENDWHILE
<ifor> ::= TFOR <iden> TIN <valuestat> TDO TNL <instructions> TENDFOR
<iquery> ::= TQUERY <valuestat> TCOMMA <valuestat> TCOMMA <valuestat>
TCOMMA <valuestat> TCOMMA <valuestat> TDO TNL <instructions> TENDQUERY
<iimport> ::= TIMPORT <iimportopt> <iden> <valuestat>
<iimportopt> ::= e | THTMLBODY
<iexport> ::= TEXPORT <valuestat> <valuestat>
<iencode> ::= TENCODE TLEFTBR <valuestat> TRIGHTBR
<icurrenttime> ::= TCURRENTTIME TLEFTBR <valuestat> TRIGHTBR
<imembersof> ::= TMEMBERSOF TLEFTBR <valuestat> TCOMMA <iden> TRIGHTBR
<igrname> ::= TGRNAME TLEFTBR <valuestat> TRIGHTBR
<igrparent> ::= TGRPARENT TLEFTBR <valuestat> TRIGHTBR
<ilastwordin> ::= TLASTWORDIN TLEFTBR <valuestat> TRIGHTBR
<ifirstwordin> ::= TFIRSTWORDIN TLEFTBR <valuestat> TRIGHTBR
<ibeforeword> ::= TBEFOREWORD TLEFTBR <valuestat> TCOMMA <valuestat> TRIGHTBR
<iafterword> ::= TAFTERWORD TLEFTBR <valuestat> TCOMMA <valuestat> TRIGHTBR
Konstrukcje zwracające wartość używane jako parametry
<valuestat> ::= TLEFTSBR <instr> TRIGHTSBR
| TDOLLAR <valuestat>
| <iden>
| <const>
Identyfikator
<iden> ::= TSIMPLEIDEN | TCOMPIDEN
Stała
<const> ::= TTEXT | THTML
Wyrażenia
<primary_expr> ::= <valuestat> | TLEFTBR <or_expr> TRIGHTBR
<isgroup_expr> ::= <primary_expr>
| TISGROUP <isgroup_expr>
<substring_expr> ::= <isgroup_expr>
| <substring_expr> TSUBSTRING <isgroup_expr>
Porównywanie liczb całkowitych
<nleorequal_expr> ::= <substring_expr>
| <nleorequal_expr> TNLEOREQUAL <substring_expr>
<nlethan_expr> ::= <nleorequal_expr>
| <nlethan_expr> TNLETHAN <nleorequal_expr>
<ngrorequal_expr> ::= <nlethan_expr>
| <ngrorequal_expr> TNGROREQUAL <nlethan_expr>
<ngrthan_expr> ::= <ngrorequal_expr>
| <ngrthan_expr> TNGRTHAN <ngrorequal_expr>
<nnotequal_expr> ::= <ngrthan_expr>
| <nnotequal_expr> TNNOTEQUAL <ngrthan_expr>
<nequal_expr> ::= <nnotequal_expr>
| <nequal_expr> TNEQUAL <nnotequal_expr>
Porównywanie napisów
<leorequal_expr> ::= <nequal_expr>
| <leorequal_expr> TLEOREQUAL <nequal_expr>
<lethan_expr> ::= <leorequal_expr>
| <lethan_expr> TLETHAN <leorequal_expr>
<grorequal_expr> ::= <lethan_expr>
| <grorequal_expr> TGROREQUAL <lethan_expr>
<grthan_expr> ::= <grorequal_expr>
| <grthan_expr> TGRTHAN <grorequal_expr>
<notequal_expr> ::= <grthan_expr>
| <notequal_expr> TNOTEQUAL <grthan_expr>
<equal_expr> ::= <notequal_expr>
| <equal_expr> TEQUAL <notequal_expr>
Wyrażenia logiczne
<not_expr> ::= <equal_expr>
| TLOGICNOT <not_expr>
<and_expr> ::= <not_expr>
| <and_expr> TLOGICAND <not_expr>
<or_expr> ::= <and_expr>
| <or_expr> TLOGICOR <and_expr>
|