> Yes, there is a lot of information in the .output file we could use; > but this is intended for a human reader;This file is really obsolete, even for the human. It should be an XML file, with XSLT transformations towards HTML and text.
hi, I have attempted to design a very simple XML format for the .output file generated by Bison. It might not be exhaustive but at least might serve as a starting point for further discussion. The grammar is a basic one taken from Nigel P. Chapman's book LR parsing Theory and Practice. I am attaching the Bison .output file and the XML file here. Thanks, ./satya
<?xml version="1.0" ?>
<report>
<grammar>
<rule>
<ruleno>0</ruleno>
<lhs>$accept</lhs>
<rhs>L</rhs>
<rhs>$end</rhs>
</rule>
<rule>
<ruleno>1</ruleno>
<lhs>L</lhs>
<rhs>L</rhs>
<rhs>';'</rhs>
<rhs>E</rhs>
</rule>
<rule>
<ruleno>2</ruleno>
<lhs>L</lhs>
<rhs>E</rhs>
</rule>
<rule>
<ruleno>3</ruleno>
<lhs>E</lhs>
<rhs>E</rhs>
<rhs>','</rhs>
<rhs>P</rhs>
</rule>
<rule>
<ruleno>4</ruleno>
<lhs>E</lhs>
<rhs>P</rhs>
</rule>
<rule>
<ruleno>5</ruleno>
<lhs>P</lhs>
<rhs>'a'</rhs>
</rule>
<rule>
<ruleno>6</ruleno>
<lhs>P</lhs>
<rhs>'('</rhs>
<rhs>M</rhs>
<rhs>')'</rhs>
</rule>
<rule>
<ruleno>7</ruleno>
<lhs>M</lhs>
<!--no rhs -->
</rule>
<rule>
<ruleno>8</ruleno>
<lhs>M</lhs>
<rhs>L</rhs>
</rule>
</grammar>
<!--terminals and nonterminals with rules where they appear -->
<symbols>
<terminal>
<text>$end</text>
<symbolno>0</symbolno>
<rules>
<ruleno>0</ruleno>
</rules>
</terminal>
<terminal>
<text>error</text>
<symbolno>1</symbolno>
<rules>
</rules>
</terminal>
<terminal>
<text>$undefined</text>
<symbolno>2</symbolno>
<rules>
</rules>
</terminal>
<terminal>
<text>NUM</text>
<symbolno>3</symbolno>
<rules>
</rules>
</terminal>
<terminal>
<text>';'</text>
<symbolno>4</symbolno>
<rules>
<ruleno>1</ruleno>
</rules>
</terminal>
<terminal>
<text>','</text>
<symbolno>5</symbolno>
<rules>
<ruleno>3</ruleno>
</rules>
</terminal>
<terminal>
<text>'a'</text>
<symbolno>6</symbolno>
<rules>
<ruleno>5</ruleno>
</rules>
</terminal>
<terminal>
<text>'('</text>
<symbolno>7</symbolno>
<rules>
<ruleno>6</ruleno>
</rules>
</terminal>
<terminal>
<text>')'</text>
<symbolno>8</symbolno>
<rules>
<ruleno>6</ruleno>
</rules>
</terminal>
<nonterminal>
<text>$accept</text>
<symbolno>9</symbolno>
<rules>
<left>
<ruleno>0</ruleno>
</left>
<right>
</right>
</rules>
</nonterminal>
<nonterminal>
<text>L</text>
<symbolno>10</symbolno>
<rules>
<left>
<ruleno>1</ruleno>
<ruleno>2</ruleno>
</left>
<right>
<ruleno>0</ruleno>
<ruleno>1</ruleno>
<ruleno>8</ruleno>
</right>
</rules>
</nonterminal>
<nonterminal>
<text>E</text>
<symbolno>11</symbolno>
<rules>
<left>
<ruleno>3</ruleno>
<ruleno>4</ruleno>
</left>
<right>
<ruleno>1</ruleno>
<ruleno>2</ruleno>
<ruleno>3</ruleno>
</right>
</rules>
</nonterminal>
<nonterminal>
<text>P</text>
<symbolno>12</symbolno>
<rules>
<left>
<ruleno>5</ruleno>
<ruleno>6</ruleno>
</left>
<right>
<ruleno>3</ruleno>
<ruleno>4</ruleno>
</right>
</rules>
</nonterminal>
<nonterminal>
<text>M</text>
<symbolno>13</symbolno>
<rules>
<left>
<ruleno>7</ruleno>
<ruleno>8</ruleno>
</left>
<right>
<ruleno>6</ruleno>
</right>
</rules>
</nonterminal>
</symbols>
<!-- The Automaton -->
<automaton>
<state>
<stateno>0</stateno>
<rules>
<rule>
<ruleno>0</ruleno>
<dotpos>0</dotpos>
</rule>
</rules>
<actions>
<shift>
<terminal>'a'</terminal>
<transition>1</transition>
</shift>
<shift>
<terminal>'('</terminal>
<transition>2</transition>
</shift>
<goto>
<nonterminal>L</nonterminal>
<transition>3</transition>
</goto>
<goto>
<nonterminal>E</nonterminal>
<transition>4</transition>
</goto>
<goto>
<nonterminal>P</nonterminal>
<transition>5</transition>
</goto>
</actions>
</state>
<state>
<stateno>1</stateno>
<rules>
<rule>
<ruleno>5</ruleno>
<dotpos>1</dotpos>
</rule>
</rules>
<actions>
<reduce>
<terminal>$default</terminal>
<ruleno>5</ruleno>
</reduce>
</actions>
</state>
<state>
<stateno>2</stateno>
<rules>
<rule>
<ruleno>6</ruleno>
<dotpos>2</dotpos>
</rule>
</rules>
<actions>
<shift>
<terminal>'a'</terminal>
<transition>1</transition>
</shift>
<shift>
<terminal>'('</terminal>
<transition>2</transition>
</shift>
<reduce>
<terminal>$default</terminal>
<ruleno>7</ruleno>
</reduce>
<goto>
<nonterminal>L</nonterminal>
<transition>6</transition>
</goto>
<goto>
<nonterminal>E</nonterminal>
<transition>4</transition>
</goto>
<goto>
<nonterminal>P</nonterminal>
<transition>5</transition>
</goto>
<goto>
<nonterminal>M</nonterminal>
<transition>7</transition>
</goto>
</actions>
</state>
<state>
<stateno>3</stateno>
<rules>
<rule>
<ruleno>0</ruleno>
<dotpos>1</dotpos>
</rule>
<rule>
<ruleno>1</ruleno>
<dotpos>1</dotpos>
</rule>
</rules>
<actions>
<shift>
<terminal>$end</terminal>
<transition>8</transition>
</shift>
<shift>
<terminal>';'</terminal>
<transition>9</transition>
</shift>
</actions>
</state>
<state>
<stateno>4</stateno>
<rules>
<rule>
<ruleno>2</ruleno>
<dotpos>1</dotpos>
</rule>
<rule>
<ruleno>3</ruleno>
<dotpos>1</dotpos>
</rule>
</rules>
<actions>
<shift>
<terminal>','</terminal>
<transition>10</transition>
</shift>
<reduce>
<terminal>$default</terminal>
<ruleno>2</ruleno>
</reduce>
</actions>
</state>
<!-- similiar tags for other states-->
<!-- The state below is an accepting state -->
<state>
<stateno>8</stateno>
<rules>
<rule>
<ruleno>0</ruleno>
<dotpos>2</dotpos>
</rule>
</rules>
<actions>
<accept />
</actions>
</state>
</automaton>
</report>
g1.output
Description: Binary data
