[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [docbook] Using the EBNF module for space-structured languages
On Tue, 2005-02-08 at 20:59 +0100, Mauritz Jeanson wrote: > > On Mon, 2005-02-07 at 13:45 +0000, Ruth Ivimey-Cook wrote: > > > Occam-Pi is a space-structured language, (in the same way > > > as Python and occam from which Occam-Pi is derived. How can I define > > > EBNF grammars for it in DocBook? > Or maybe you haven't described the problem clearly enough. Are > space-structured languages especially complicated? Is there something > missing in the DocBook documentation about EBNF > (http://docbook.org/tdg/en/html/productionset.html)? (I don't know much > about grammars and such, I am just curious). Sorry if I wasn't clear. I'll try again. What I mean by 'space structured languages' are languages in which the layout of the statements (newlines, spaces and so forth) conveys information about the context to the compiler. In the C language, for example, you could say either: if(a==b){c=g;printf(e);} or if (a==b) { c=g; printf(e); } and they mean exactly the same thing. In Occam-Pi, you might write: IF a = b SEQ c := g printf(e) TRUE SKIP and you couldn't lay it out any other way: the following code is invalid: IF a = b SEQ c := g printf(e) because the condition of an IF must be on a new line, and the SEQ must also be on a new line, and even if SEQ were allowed, the indentation level of the assignment is wrong. Now, if I want to describe this sort of language in EBNF, I could write: if-statement := 'IF' newline-indent ( condition newline-indent process )+ newline := '\n' newline-indent := newline increment-level indent-to-current indent-to-current := ' ' x level # 'level' is current statement level to describe the fact that an IF statement has the sort of structure shown above. However, it is very hard to indicate the indentation level of, say, "process" in the production above - you have to resort to the 'tricks' above to do so. Am I making sense here? In the existing occam books, the authors resorted to a sort of partial BNF, in which the layout is presented rather than written. I was sort of hoping that something of the sort might be reasonably easy in DocBook/EBNF. Is the problem really that I shouldn't be using EBNF at all? Regards, Ruth -- Ruth Ivimey-Cook <ruth@ivimey.org>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]