]> git.saurik.com Git - bison.git/commitdiff
doc: style changes.
authorAkim Demaille <akim@lrde.epita.fr>
Thu, 15 Mar 2012 14:36:20 +0000 (15:36 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 19 Mar 2012 09:57:16 +0000 (10:57 +0100)
* doc/bison.texinfo: Avoid line width issues with TeX.
Upgrade ancient messages.
Move some comments to better looking places.
Add more @group.
(Mfcalc Symbol Table): Reduce variable scopes.
Prefer size_t for sizes.
Prefer declarations with an initial value.
Fix a @group environment.
(cherry picked from commit aaaa2aaef40eed197ebbd0bd45d8a66606cdb19c)

Conflicts:

doc/bison.texinfo

doc/bison.texinfo

index 1902e432d8d70415ee72b6cf6eaa67384785a68a..aa82db97e915c853a652779458db67abe4656bff 100644 (file)
@@ -1199,8 +1199,9 @@ will suffice.  Otherwise, we suggest
 
 @example
 %@{
-  #if __STDC_VERSION__ < 199901 && ! defined __GNUC__ && ! defined inline
-   #define inline
+  #if (__STDC_VERSION__ < 199901 && ! defined __GNUC__ \
+       && ! defined inline)
+  # define inline
   #endif
 %@}
 @end example
@@ -1389,11 +1390,11 @@ simple program, all the rest of the program can go here.
 @cindex simple examples
 @cindex examples, simple
 
-Now we show and explain three sample programs written using Bison: a
+Now we show and explain several sample programs written using Bison: a
 reverse polish notation calculator, an algebraic (infix) notation
-calculator, and a multi-function calculator.  All three have been tested
-under BSD Unix 4.3; each produces a usable, though limited, interactive
-desk-top calculator.
+calculator --- later extended to track ``locations'' ---
+and a multi-function calculator.  All
+produce usable, though limited, interactive desk-top calculators.
 
 These examples are simple, but Bison grammars for real programming
 languages are written the same way.  You can copy these examples into a
@@ -1492,24 +1493,28 @@ type for numeric constants.
 Here are the grammar rules for the reverse polish notation calculator.
 
 @example
+@group
 input:    /* empty */
         | input line
 ;
+@end group
 
+@group
 line:     '\n'
         | exp '\n'      @{ printf ("\t%.10g\n", $1); @}
 ;
+@end group
 
+@group
 exp:      NUM           @{ $$ = $1;           @}
         | exp exp '+'   @{ $$ = $1 + $2;      @}
         | exp exp '-'   @{ $$ = $1 - $2;      @}
         | exp exp '*'   @{ $$ = $1 * $2;      @}
         | exp exp '/'   @{ $$ = $1 / $2;      @}
-         /* Exponentiation */
-        | exp exp '^'   @{ $$ = pow ($1, $2); @}
-         /* Unary minus    */
-        | exp 'n'       @{ $$ = -$1;          @}
+        | exp exp '^'   @{ $$ = pow ($1, $2); @}  /* Exponentiation */
+        | exp 'n'       @{ $$ = -$1;          @}  /* Unary minus    */
 ;
+@end group
 %%
 @end example
 
@@ -1765,7 +1770,9 @@ here is the definition we will use:
 @example
 @group
 #include <stdio.h>
+@end group
 
+@group
 /* Called by yyparse on error.  */
 void
 yyerror (char const *s)
@@ -1871,6 +1878,7 @@ parentheses nested to arbitrary depth.  Here is the Bison code for
 @example
 /* Infix notation calculator.  */
 
+@group
 %@{
   #define YYSTYPE double
   #include <math.h>
@@ -1878,32 +1886,41 @@ parentheses nested to arbitrary depth.  Here is the Bison code for
   int yylex (void);
   void yyerror (char const *);
 %@}
+@end group
 
+@group
 /* Bison declarations.  */
 %token NUM
 %left '-' '+'
 %left '*' '/'
 %left NEG     /* negation--unary minus */
 %right '^'    /* exponentiation */
+@end group
 
 %% /* The grammar follows.  */
+@group
 input:    /* empty */
         | input line
 ;
+@end group
 
+@group
 line:     '\n'
         | exp '\n'  @{ printf ("\t%.10g\n", $1); @}
 ;
+@end group
 
-exp:      NUM                @{ $$ = $1;         @}
-        | exp '+' exp        @{ $$ = $1 + $3;    @}
-        | exp '-' exp        @{ $$ = $1 - $3;    @}
-        | exp '*' exp        @{ $$ = $1 * $3;    @}
-        | exp '/' exp        @{ $$ = $1 / $3;    @}
-        | '-' exp  %prec NEG @{ $$ = -$2;        @}
+@group
+exp:      NUM                @{ $$ = $1;           @}
+        | exp '+' exp        @{ $$ = $1 + $3;      @}
+        | exp '-' exp        @{ $$ = $1 - $3;      @}
+        | exp '*' exp        @{ $$ = $1 * $3;      @}
+        | exp '/' exp        @{ $$ = $1 / $3;      @}
+        | '-' exp  %prec NEG @{ $$ = -$2;          @}
         | exp '^' exp        @{ $$ = pow ($1, $3); @}
-        | '(' exp ')'        @{ $$ = $2;         @}
+        | '(' exp ')'        @{ $$ = $2;           @}
 ;
+@end group
 %%
 @end example
 
@@ -2439,10 +2456,9 @@ void
 init_table (void)
 @{
   int i;
-  symrec *ptr;
   for (i = 0; arith_fncts[i].fname != 0; i++)
     @{
-      ptr = putsym (arith_fncts[i].fname, FNCT);
+      symrec *ptr = putsym (arith_fncts[i].fname, FNCT);
       ptr->value.fnctptr = arith_fncts[i].fnct;
     @}
 @}
@@ -2476,8 +2492,7 @@ found, a pointer to that symbol is returned; otherwise zero is returned.
 symrec *
 putsym (char const *sym_name, int sym_type)
 @{
-  symrec *ptr;
-  ptr = (symrec *) malloc (sizeof (symrec));
+  symrec *ptr = (symrec *) malloc (sizeof (symrec));
   ptr->name = (char *) malloc (strlen (sym_name) + 1);
   strcpy (ptr->name,sym_name);
   ptr->type = sym_type;
@@ -2550,21 +2565,20 @@ yylex (void)
   /* Char starts an identifier => read the name.       */
   if (isalpha (c))
     @{
-      symrec *s;
+      /* Initially make the buffer long enough
+         for a 40-character symbol name.  */
+      static size_t length = 40;
       static char *symbuf = 0;
-      static int length = 0;
+      symrec *s;
       int i;
 @end group
 
 @group
-      /* Initially make the buffer long enough
-         for a 40-character symbol name.  */
-      if (length == 0)
-        length = 40, symbuf = (char *)malloc (length + 1);
+      if (!symbuf)
+        symbuf = (char *) malloc (length + 1);
 
       i = 0;
       do
-@end group
 @group
         @{
           /* If buffer is full, make it bigger.        */
@@ -4027,6 +4041,7 @@ By default, @code{YYLLOC_DEFAULT} is defined this way:
 @end group
 @end smallexample
 
+@noindent
 where @code{YYRHSLOC (rhs, k)} is the location of the @var{k}th symbol
 in @var{rhs} when @var{k} is positive, and the location of the symbol
 just before the reduction when @var{k} and @var{n} are both zero.
@@ -8906,9 +8921,9 @@ The types for semantics value and locations.
 @end defcv
 
 @defcv {Type} {parser} {token}
-A structure that contains (only) the definition of the tokens as the
-@code{yytokentype} enumeration.  To refer to the token @code{FOO}, the
-scanner should use @code{yy::parser::token::FOO}.  The scanner can use
+A structure that contains (only) the @code{yytokentype} enumeration, which
+defines the tokens.  To refer to the token @code{FOO},
+use @code{yy::parser::token::FOO}.  The scanner can use
 @samp{typedef yy::parser::token token;} to ``import'' the token enumeration
 (@pxref{Calc++ Scanner}).
 @end defcv
@@ -9430,7 +9445,7 @@ calcxx_driver::scan_begin ()
     yyin = stdin;
   else if (!(yyin = fopen (file.c_str (), "r")))
     @{
-      error (std::string ("cannot open ") + file + ": " + strerror(errno));
+      error ("cannot open " + file + ": " + strerror(errno));
       exit (EXIT_FAILURE);
     @}
 @}