attribute grammars and xml workshop on attribute grammars, xml, and rdf institute for media and...

13
Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21 Sept. 2000 Harold Boley, DFKI Kaiserslautern

Upload: randolf-heath

Post on 05-Jan-2016

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

Attribute Grammars and XML

Workshop on Attribute Grammars, XML, and RDF

Institute for Media and Communications Management

University of St. Gallen

20/21 Sept. 2000

Harold Boley, DFKI Kaiserslautern

Page 2: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

2

“What Are” and “How Relate”Attribute Grammars and XML?

• Both are extensions of context-free grammars:– Attribute grammars via semantic (evaluation) rules

over attributes– XML via (document-markup) tags, attribute DTDs,

stylesheets, etc.

• Will be compared on two exemplary levels:– Decorated parse trees as attributed element trees– XML markups for semantic rules

Page 3: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

3

Attribute Grammar Example:Cartesian Move Sequences

• In the Cartesian plane move stepwise in the directions north, east, south, west

• Starting from the coordinates X = 0, Y = 0 compute the end position after a finite sequence of moves

• Sample computations:– Sequence e,e,n shall compute X = 2, Y = 1– Sequence s,w,s,e shall compute X = 0, Y = -2

Page 4: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

4

Grammar with Attributes on Nonterminals

Grammar: path path step pathstep nstep estep sstep w

Attributes: path.Ex x-coordinate of end positionpath.Ey y-coordinate of end positionstep .Dx incremental change of x-coordinatestep .Dy incremental change of y-coordinate

We will only consider synthesized attributes,often prefixed by a “”, not inherited attributes

Page 5: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

5

Attribute Grammar with Semantic Rules

Grammar:

path

path step path

step nstep estep sstep w

Semantic Rules:

path.Ex := 0 path.Ey := 0

path1.Ex := step .Dx + path2.Ex path1.Ey := step .Dy + path2.Ey

step .Dx := 0 step .Dy := 1step .Dx := 1 step .Dy := 0step .Dx := 0 step .Dy := -1step .Dx := -1 step .Dy := 0

Page 6: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

6

Decorated Parse Treefor Sequence e,e,n

path

pathstep

pathstep

pathstep

e

n

e

Ex = 0 Ey = 0

Ex = 0 Ey = 1

Ex = 1 Ey = 1

Ex = 2 Ey = 1

Dx = 0 Dy = 1

Dx = 1 Dy = 0

Dx = 1 Dy = 0

Page 7: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

7

“e,e,n”-Parse Tree as XML Element

<path Ex="2" Ey="1"> <step Dx ="1" Dy="0"> e </step> <path Ex="1" Ey="1"> <step Dx ="1" Dy="0"> e </step> <path Ex="0" Ey="1"> <step Dx ="0" Dy="1"> n </step> <path Ex="0" Ey="0"> </path> </path> </path></path>

path

pathstep

pathstep

pathstep

e

n

eEx = 0 Ey = 0

Ex = 0 Ey = 1

Ex = 1 Ey = 1

Ex = 2 Ey = 1

Dx = 0 Dy = 1

Dx = 1 Dy = 0

Dx = 1 Dy = 0

Attributed XML element tree = Decorated parse tree

Attribute grammarparse results andintermediate statescan thus be representedas XML elements

Page 8: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

8

DTD Approximation forAttribute Grammar (AG)

<!ELEMENT path (EMPTY | (step, path)) ><!ELEMENT step (n | e | s | w) ><!ELEMENT n EMPTY ><!ELEMENT e EMPTY ><!ELEMENT s EMPTY ><!ELEMENT w EMPTY >

<!ATTLIST path Ex CDATA #REQUIRED ><!ATTLIST path Ey CDATA #REQUIRED ><!ATTLIST step Dx CDATA #REQUIRED ><!ATTLIST step Dy CDATA #REQUIRED >

‘Canonical empty elements’instead of terminals

CDATAinstead ofintegers

Semantic Rules of full AGs can be added(via XML stylesheets, Java, Prolog, ...)

Page 9: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

9

“e,e,n”-XML ElementAccording to DTD

<path Ex="2" Ey="1"> <step Dx ="1" Dy="0"> e </step> <path Ex="1" Ey="1"> <step Dx ="1" Dy="0"> e </step> <path Ex="0" Ey="1"> <step Dx ="0" Dy="1"> n </step> <path Ex="0" Ey="0"> </path> </path> </path></path>

Terminal e becomes empty element <e/>Terminal n becomes empty element <n/>

<path Ex="2" Ey="1"> <step Dx ="1" Dy="0"> <e/> </step> <path Ex="1" Ey="1"> <step Dx ="1" Dy="0"> <e/> </step> <path Ex="0" Ey="1"> <step Dx ="0" Dy="1"> <n/> </step> <path Ex="0" Ey="0"> </path> </path> </path></path>

Page 10: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

10

path[0,0]([]).path[Nx,Ny]([Head|Tail]) :- step[Dx,Dy](Head), path[Ex,Ey](Tail), Nx .= +(Dx,Ex), Ny .= +(Dy,Ey).

step[0,1](n).step[1,0](e).step[0,-1](s).step[-1,0](w).

Prolog-like Form of AGwith Semantic Rules

Attribute values represented as “[...]”-parameters.Call path[X,Y]([e,e,n]) computes X = 2, Y = 1,

e.g. using Relfun interpreter

path.Ex := 0 path.Ey := 0

path1.Ex := step .Dx + path2.Ex path1.Ey := step .Dy + path2.Ey

path

path step path

step nstep estep sstep w

step .Dx := 0 step .Dy := 1step .Dx := 1 step .Dy := 0step .Dx := 0 step .Dy := -1step .Dx := -1 step .Dy := 0

Page 11: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

11

Parameter-XML Form of AG via RFML-like Generic Markup

<hn> <pattop> <struc> <con>path</con> <con>0</con> <con>0</con> </struc> <tup/> </pattop></hn>

path[0,0]([]).

<hn> <pattop> <struc> <con>path</con> <var>nx</var> <var>ny</var> </struc> <tup> <var>head</var> <rest/> <var>tail</var> </tup> </pattop>

path[Nx,Ny] ([Head|Tail])

:-

<callop> <struc> <con>step</con> <var>dx</var> <var>dy</var> </struc> <var>head</var> </callop> <callop> <struc> <con>path</con> <var>ex</var> <var>ey</var> </struc> <var>tail</var> </callop> <is> <var>nx</var> <callop> <con>+</con> <var>dx</var> <var>ex</var> </callop> </is> <is> <var>ny</var> <callop> <con>+</con> <var>dy</var> <var>ey</var> </callop> </is></hn>

step[Dx,D

y](Head),path[E

x,Ey](T

ail), Nx .=

+(D

x,Ex), N

y .= +

(Dy,E

y).

<hn> <pattop> <struc> <con>step</con> <con>0</con> <con>1</con> </struc> <con>n</con> </pattop></hn>

<hn> <pattop> <struc> <con>step</con> <con>1</con> <con>0</con> </struc> <con>e</con> </pattop></hn>

<hn> <pattop> <struc> <con>step</con> <con>0</con> <con>-1</con> </struc> <con>s</con> </pattop></hn>

<hn> <pattop> <struc> <con>step</con> <con>-1</con> <con>0</con> </struc> <con>w</con> </pattop></hn>

step[0,1](n).

step[1,0](e).

step[0,-1](s).

step[-1,0](w).

Generic: User-definednonterminals (e.g. path)don’t appear as tags,only between tags

Page 12: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

12

Attribute-XML Form of AG via RFML/MathML-likeNon-Generic Markup

<hn> <pattop> <path ex="0" ey="0"/> <tup/> </pattop></hn>

path [Ex=0, Ey=0] ([]).

<callop> <step dx="?" dy="?"/> <var>head</var></callop>

Step [Dx=?, Dy=?] (Head),

<callop> <path ex="?" ey="?"/> <var>tail</var></callop>

Path [Ex=?, Ey=?] (Tail),

<is> <var>nx</var> <callop> <+/> <var>dx</var> <var>ex</var> </callop> </is>

Nx .= +(Dx,Ex),

<is> <var>ny</var> <callop> <+/> <var>dy</var> <var>ey</var> </callop> </is></hn>

Ny .= +(Dy,Ey).

<hn> <pattop> <path nx="?" ny="?"/> <tup> <var>head</var> <rest/> <var>tail</var> </tup> </pattop>

path [Nx=?, Ny=?] ([Head|Tail])

:-

Output attributes made explicit via “?”-values

Page 13: Attribute Grammars and XML Workshop on Attribute Grammars, XML, and RDF Institute for Media and Communications Management University of St. Gallen 20/21

13

Conclusions

• Attribute Grammars and XML use the same parse and element trees

• There are various possible XML markups for AG’s semantic rules (cf. RFML/MathML)

• In future work an AG-markup language could be developed and applied for grammar sharing

• Further levels of the XML/AG relationships should be studied, e.g. attribute dependencies, rule-evaluation methods, and DOM-level rules