doc: use color in the cex examples

Akim Demaille <[email protected]>
Newsgroups gmane.comp.parsers.bison.patches
Message-ID <[email protected]>
commit 21f769057019837b165463535da6888941e36c4e
Author: Akim Demaille <[email protected]>
Date:   Tue Jun 30 20:15:54 2020 +0200

    doc: use color in the cex examples
    
    * doc/bison.texi: here.
    And use smallexample when it no longer fits in PDF.

diff --git a/doc/bison.texi b/doc/bison.texi
index 985b1d7c..439c7266 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -37,6 +37,23 @@
 @c ## ---------------------- ##
 
 @tex
+\gdef\rgbGreen{0 .80 0}
+\gdef\colorGreen{%
+ \setcolor{\rgbGreen}%
+}
+\gdef\rgbYellow{1 .5 0}
+\gdef\colorYellow{%
+ \setcolor{\rgbYellow}%
+}
+\gdef\rgbRed{1 0 0}
+\gdef\colorRed{%
+ \setcolor{\rgbRed}%
+}
+\gdef\rgbBlue{0 0 1}
+\gdef\colorBlue{%
+ \setcolor{\rgbBlue}%
+}
+
 \gdef\rgbWarning{0.50 0 0.50}
 \gdef\colorWarning{%
  \setcolor{\rgbWarning}%
@@ -55,6 +72,19 @@
 @end tex
 
 @ifnottex
+@macro colorGreen
+@inlineraw{html, <b style="color:green">}
+@end macro
+@macro colorYellow
+@inlineraw{html, <b style="color:#ff8000">}
+@end macro
+@macro colorRed
+@inlineraw{html, <b style="color:red">}
+@end macro
+@macro colorBlue
+@inlineraw{html, <b style="color:blue">}
+@end macro
+
 @macro colorWarning
 @inlineraw{html, <b style="color:darkviolet">}
 @end macro
@@ -69,6 +99,22 @@
 @end macro
 @end ifnottex
 
+@macro green{text}
+@colorGreen{}\text\@colorOff{}
+@end macro
+
+@macro yellow{text}
+@colorYellow{}\text\@colorOff{}
+@end macro
+
+@macro red{text}
+@colorRed{}\text\@colorOff{}
+@end macro
+
+@macro blue{text}
+@colorBlue{}\text\@colorOff{}
+@end macro
+
 @macro dwarning{text}
 @colorWarning{}\text\@colorOff{}
 @end macro
@@ -9819,7 +9865,7 @@ useless: STR;
 
 @command{bison} reports:
 
-@example
+@smallexample
 calc.y: @dwarning{warning}: 1 nonterminal useless in grammar [@dwarning{-Wother}]
 calc.y: @dwarning{warning}: 1 rule useless in grammar [@dwarning{-Wother}]
 calc.y:19.1-7: @dwarning{warning}: nonterminal useless in grammar: useless [@dwarning{-Wother}]
@@ -9827,7 +9873,7 @@ calc.y:19.1-7: @dwarning{warning}: nonterminal useless in grammar: useless [@dwa
       | @dwarning{^~~~~~~}
 calc.y: @dwarning{warning}: 7 shift/reduce conflicts [@dwarning{-Wconflicts-sr}]
 calc.y: @dwarning{warning}: rerun with option '-Wcounterexamples' to generate conflict counterexamples [@dwarning{-Wother}]
-@end example
+@end smallexample
 
 When given @option{-Wcounterexamples}, @command{bison} will run a search for
 strings in your grammar that better demonstrate you
@@ -9837,10 +9883,10 @@ Isradisaikul and Andrew Myers @pcite{Isradisaikul 2015}.  For
 
 @example
 Shift/reduce conflict on token '/':
-  Example              exp '+' exp • '/' exp
-  First derivation     exp ::=[ exp ::=[ exp '+' exp • ] '/' exp ]
-  Example              exp '+' exp • '/' exp
-  Second derivation    exp ::=[ exp '+' exp ::=[ exp • '/' exp ] ]
+  Example              @green{exp '+' exp} @red{•} @yellow{'/' exp}
+  First derivation     @yellow{exp ::=[} @green{exp ::=[ exp '+' exp} @red{•} @green{]} @yellow{'/' exp ]}
+  Example              @yellow{exp '+'} @green{exp} @red{•} @green{'/' exp}
+  Second derivation    @yellow{exp ::=[ exp '+'} @green{exp ::=[ exp} @red{•} @green{'/' exp ]} @yellow{]}
 @end example
 
 This shows two separate derivations in the grammar for the same @code{exp}:
@@ -9867,13 +9913,13 @@ expr: %empty | expr ID ','
 
 @command{bison} reports:
 
-@example
+@smallexample
 Shift/reduce conflict on token ID:
-  First example        expr • ID $end
-  First derivation     $accept ::=[ s ::=[ a ::=[ expr • ] ID ] $end ]
-  Second example       expr • ID ',' ID $end
-  Second derivation    $accept ::=[ s ::=[ a ::=[ expr ::=[ expr • ID ',' ] ] ID ] $end ]
-@end example
+  First example        @blue{expr} @red{•} @green{ID} @yellow{$end}
+  First derivation     @yellow{$accept ::=[} @green{s ::=[} @blue{a ::=[ expr} @red{•} @blue{]} @green{ID ]} @yellow{$end ]}
+  Second example       @blue{expr} @red{•} @blue{ID ','} @green{ID} @yellow{$end}
+  Second derivation    @yellow{$accept ::=[} @green{s ::=[} @blue{a ::=[ expr ::=[ expr} @red{•} @blue{ID ',' ] ]} @green{ID ]} @yellow{$end ]}
+@end smallexample
 
 This conflict is caused by the parser not having enough information to know
 the difference between these two examples.  The parser would need an
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.