Next in thread → Next in month →

Fw: [relax-ng] Use of attribute grammars for A.1

From
MURATA Makoto (FAMILY Given) <>
Date
2002-08-23T13:52:59+00:00
ID
Thread
Fw: [relax-ng] Use of attribute grammars for A.1
My mail was encoded in ISO-2022-JP, since it contains the character "epsilon".  
Let me try again.

Cheers,

Makoto

----------------------- Original Message -----------------------
 From:     (Murata Makoto)
 To:      
 Date:    Fri, 23 Aug 2002 11:45:27 +0900
 Subject: [relax-ng] Use of attribute grammars for A.1
----

I think that the BNF in A.1 is equivalent to an attribute grammar with
a synthesized attribute for constructing an XML-synax grammar and an
inherited attribute for representing contexts (i.e., a set of
prefix-URI bindings).

If we use the syntax of attribute grammars, we have:

topLevel  ::=  preamble  topLevelBody

        { topLevel.value = topLevelBody.value
          topLevelBody.context = preamble.context }

preamble_1  ::=
    epsilon
        { preamble_1.value = preamble_1.context}

    |  decl  preamble_2
        { preamble_2.context = decl.context
	  preamble_1.value = preamble_2.value}

decl  ::= "namespace"  namespacePrefix  "="  namespaceURILiteral

        Constraint: xml prefix
        Constraint: xml namespace URI
        Constraint: duplicate declaration

        { decl.value =
             bindPrefix(decl.context, 
                        namespacePrefix.value, 
                        namespaceURILiteral.value) }

....

Yes, this is wordy.  But this is easy for me to read.  Many people
already know how to read this notation.  For example, see [1]

We can make the above description more compact.  We can 
separate equations for synthesized attributes and those 
for inherited attributes.  We can even omit attribute names 
(i.e., "context" and "value"), since we have only one synthesized 
attribute and one inherited attribute.

[1] http://www-rocq.inria.fr/oscar/www/fnc2/manual/node32.html#SECTION02400000000000000000

Makoto

----------------------------------------------------------------
To subscribe or unsubscribe from this elist use the subscription
manager: <http://lists.oasis-open.org/ob/adm.pl>

--------------------- Original Message Ends --------------------

-- 
MURATA Makoto (FAMILY Given) <>
Next in thread → Next in month →