Joe Wilson <[EMAIL PROTECTED]> wrote: >The following grammar may be clearer to you:
Yes, it is many thanks! I believe I am making progress! At least I can see the picture much clearer now and was able to come up with the following grammar with just one conflict unsolved: %left NEWLINE. /* Do these matter here at all? */ %nonassoc TEXT LINK. %left HEADING_START. %left HEADING_END. article ::= blocks. blocks ::= block. /* EOF */ blocks ::= blocks NEWLINE. /* EOF */ blocks ::= blocks NEWLINE NEWLINE block. block ::= . /* EOF */ block ::= paragraph. block ::= heading. heading ::= HEADING_START text HEADING_END. paragraph ::= line. paragraph ::= paragraph NEWLINE line. line ::= text. text ::= textpiece. text ::= text textpiece. textpiece ::= TEXT. textpiece ::= LINK. I of course appreciate any comments ;-) My idea is that * A block can be either a paragraph or a heading. Multiple blocks are separated by two NEWLINEs. * A paragraph is made up of n >= 1 lines. Each line within a paragraph ends with a single NEWLINE. Two NEWLINEs start a new block (see above). * A line consists of text, which can be TEXT or LINK. Not all works well with the grammer, and unfortunately I do not understand why. Given this input, for example: TEXT, NEWLINE the parser gets stuck at paragraph ::= paragraph NEWLINE line. instead of falling back to the line above paragraph ::= line. to find the conditions of a paragraph fulfilled. Why does it not try the other alternatives? Or are there none in the grammar? >Try reading some papers on parsing or search for the book >"Compilers: Principles, Techniques, and Tools" (a.k.a. >the dragon book). I certainly will. >Also try writing on paper random sequences of tokens and >manually parse your grammar to see the conflicts firsthand. As I throw different token sequences to my experimental parser I am slowly starting to make sense of the debugger output. Ralf ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------