Gramatyka

Obiektowy język definiowania dokumentów hipertekstowych i jego implementacja.

ObjectHTML

Wstęp - geneza, zastosowania
Opis podstawowych pojęć
    Internet
    IP
    TCP
    HTTP
    WWW
    HTML
    URL
    Pozostałe usługi
Definicje
Inne rozwiazania
    Wprowadzenie
    ASP
    JSP
    PHP
    Homesite
    Microsoft FrontPage
Projekt języka
    Struktura leksykalna
    Komentarze
    Typy atrybutów i zmiennych
    Podstawowe składowe programu
    Deklaracje
    Klasy
    Metody
    Atrybuty
    Grupy
        Wprowadzenie
        Definicja
    Instrukcje
        $
        [ ]
        call
        set
        append
        incr
        if
        while
        for
        currenttime
        encode
        import
        export
        grmembers
        grname
        grparent
        lastwordin
        firstwordin
        beforeword
        afterword
        query
    Wyrażenia i operatory
    file
    image
    include
    Gramatyka ->
Wywołanie kompilatora
Program narzędziowy makedefs
    Geneza i ogólny opis
    Uruchamianie
    Przykłady użycia
Opis implementacji
    Drzewo programu / kompilator
    Opis najważniejszych klas
Przykładowa aplikacja
Podsumowanie
Literatura

Gramatyka

Poprzednia strona: include
Nastepna strona: Wywołanie kompilatora

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> 

Listopad 2000