• Nie Znaleziono Wyników

Język CSGL

W dokumencie Index of /rozprawy2/10294 (Stron 79-84)

5 Metodyka rozwiązania

5.6 Techniczne aspekty projektowania systemów opartych model K-GK

5.6.2 Język CSGL

Struktura języka CSGL będzie bazowała na XML, rozszerzając definicje przestrzeni nazw XML. Podstawowy element logiczny utrzymującym informację o strukturze języka CSGL będzie nosił nazwę csg (cascade shape grammar). Przykład podstawowej definicji prezentuje rysunek 5.6:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<csgl:csg xmlns="http://home.agh.edu.pl/mitu/csgl-namespace">

</csgl:csg>

Rysunek 5.6: Element csg języka CSGL (źródło własne).

Następujące elementy definiują poszczególne zbiory gramatyki K-GK: • classes – zbiór klas kształtów,

• substitutions – zbiór reguł substytucji.

Metodyka rozwiązania

80

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<csgl:csg xmlns="http://home.agh.edu.pl/mitu/csgl-namespace">

<csg>

<classes>

<class>definicja klasy kształtu</class>

...

</classes>

<substitutions>

<subrule>definicja reguły substytucji</subrule>

...

</substitutions>

</csg>

</csgl:csg>

Rysunek 5.7. Ogólna postać dokumentu CSGL (źródło własne).

Reprezentacja klasy kształtu

KaŜda klasa kształtu, wraz ze wszystkimi swoimi własnościami w języku CSGL jest reprezentowana przez znacznik <class> (rysunek 5.8):

<class>

<classname>nazwa klasy kształtu</classname>

<classid>identyfikator</classid>

<superclass>nazwa klasy kształtu</superclass>

<classdescription>opis</classdescription> <abstractclass></abstractclass> <shapegrammar> ( ... ) </shapegrammar> </class>

Rysunek 5.8: Reprezentacja klasy kształtu w języku CSGL (źródło własne).

Na powyŜszym rysunku:

• znacznik <superclass> określa zdefiniowaną przy pomocy <class> klasę nadrzędną,

Metodyka rozwiązania

81

• znacznik <shapegrammar> identyfikuje gramatykę kształtu danej klasy kształtu, • istnienie znacznika <abstractclass> określa klasę kształtu jako abstrakcyjną.

Reprezentacja gramatyki kształtu w klasie kształtu

KaŜda gramatyka K-GK jest opisywana w języku CSGL jako obiekt abstrakcyjny. Notacja stosowana przy określaniu takiej gramatyki zaleŜy treści materiału przetwarzanego przez zewnętrzne narzędzia. Aby umoŜliwić izolowanie abstrakcyjnej warstwy gramatyki, język CGSL moŜe dostarczyć jedynie moŜliwość określania (markowania) gramatyki kształtu unikatowym identyfikatorem, który moŜe następnie być interpretowany jako uchwyt lub wskaźnik do kodu realizującego przewarzanie taką gramatyką w implementacji konkretnego narzędzia. Znacznik <shapegrammar> definiuje identyfikator gramatyki wiązanej później z klasami kształtów. Jego interpretacja zaleŜy od narzędzi operujących na reprezentacjach graficznych kształtów (Rysunek 5.9):

<shapegrammar>

<grammarname>nazwa klasy kształtu</grammarname>

<grammarreference>identyfikator hashcode</grammarreference>

<grammardata>

<grammardataentry> dane </grammardataentry>

... </grammardata>

</shapegrammar>

Rysunek 5.9: Reprezentacja referencji gramatyki kształtu w języku CSGL (źródło własne).

Na powyŜszym rysunku:

• Znacznik <grammarreference> określa handler lub wskaźnik do gramatyki kształtu, definiowanej i implementowanej w zewnętrznym module/narzędziu, • Znacznik <grammareference> umoŜliwia wyraŜenie dodatkowych meta-danych,

określających przeznaczenie gramatyki i przedmioty przetwarzania z jej wykorzystaniem (w rozumieniu uzaleŜnionym od dziedziny).

Metodyka rozwiązania

82

Ogólna reprezentacja reguły substytucji

KaŜda reguła substytucji, wraz ze wszystkimi swoimi własnościami w języku CSGL jest reprezentowana przez znacznik <subrule>, jak pokazano na rysunku 5.10:

<subrule type=”typreguly”>

<ruleid>identyfikator reguły substytucji</ruleid>

<ruleexplicit></ruleexplicit> <rulelhs> <classcomponent> <classname>nazwa</classname> <terminator/> </classcomponent> ... </rulelhs> <rulerhs> <classcomponent> <classname>nazwa</classname> <terminator/> </classcomponent> ... </rulerhs> <validator>

<validatorname>nazwa funkcji walidatora</validatorname>

<validatorreference>identyfikator hashcode

</validatorreference>

</validator>

<converter>

<convertername>nazwa funkcji konwertera</convertername>

<converterreference>identyfikator hashcode

</converterreference>

</converter>

</subrule>

Rysunek 5.10: Reprezentacja klasy kształtu w języku CSGL (źródło własne).

Metodyka rozwiązania

83

• Znacznik <lhs> zawiera definicje LHS reguły substytucji. W nim definiowane są znaczniki <classcomponent>,

• Znacznik <rhs> zawiera definicje RHS reguły substytucji. W nim definiowane są znaczniki <classcomponent>,

• Znacznik <ruleexplicit>,

• Znacznik <classcomponent> określa jeden kształt danej klasy kształtu, znajdujący się w LHS lub RHS reguły. Zawiera:

o Znacznik <classname> określający nazwę klasy kształtu,

o Opcjonalny znacznik <terminator>, którego istnienie klasyfikuje kształt jako terminalny.

• Znacznik <converter> określa właściwości funkcji konwertera w regule substytucji. Zawiera:

o Znacznik <convertername> określający nazwą funkcji konwertera. • Znacznik <converterreference> określa handler lub wskaźnik do funkcji

konwertera, definiowanej i implementowanej w zewnętrznym module/narzędziu.

Reprezentacja reguły redukcji

Reguły redukcji będą identyfikowane przy uŜyciu atrybutu type znacznika <subrule> o wartości „shapereduce” (Rysunek 5.11)

<subrule type=”shapereduce”>

{ ... }

</subrule>

Rysunek 5.11: Reprezentacja reguły redukcji w języku CSGL (źródło własne).

Reprezentacja reguły powielania

Reguły powielania będą identyfikowane przy uŜyciu atrybutu type znacznika <subrule>

o wartości „shapeduplication” (Rysunek 5.12).

<subrule type=”shapeduplicate”>

Metodyka rozwiązania

84

</subrule>

Rysunek 5.12. Reprezentacja reguły powielania w języku CSGL (źródło własne).

Reprezentacja reguły konwersji

Reguły konwersji będą identyfikowane przy uŜyciu atrybutu type znacznika <subrule>

o wartości „shapeconvert” (Rysunek 5.13).

<subrule type=”shapeconvert”>

{ ... }

</subrule>

Rysunek 5.13: Reprezentacja reguły konwersji w języku CSGL (źródło własne).

Reprezentacja reguły połączenia

Reguły konwersji będą identyfikowane przy uŜyciu atrybutu type znacznika <subrule>

o wartości „shapemerge” (Rysunek 5.14).

<subrule type=”shapemerge”>

{ ... }

</subrule>

Rysunek 5.14: Reprezentacja reguły połączenia w języku CSGL (źródło własne).

W dokumencie Index of /rozprawy2/10294 (Stron 79-84)