From: Paul Eggert Date: Mon, 11 Sep 2006 18:02:10 +0000 (+0000) Subject: * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by X-Git-Tag: v2.3b~301 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/3dc5e96b85a7145b8c0d12f1fd0ab9222f59621d?ds=sidebyside * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by Sander Brandenburg in . Also, fix minor white space and comment issues. --- diff --git a/ChangeLog b/ChangeLog index dfa5420a..dde03052 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-11 Paul Eggert + + * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by + Sander Brandenburg in + . + Also, fix minor white space and comment issues. + 2006-09-04 Joel E. Denny Finish implementation of per-type %destructor/%printer. Discussed diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 94a384e0..cf95066a 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -7423,8 +7423,8 @@ factor both as follows. @comment file: calc++-driver.hh @example -// Announce to Flex the prototype we want for lexing function, ... -# define YY_DECL \ +// Tell Flex the lexer's prototype ... +# define YY_DECL \ yy::calcxx_parser::token_type \ yylex (yy::calcxx_parser::semantic_type* yylval, \ yy::calcxx_parser::location_type* yylloc, \ @@ -7675,7 +7675,9 @@ unit: assignments exp @{ driver.result = $2; @}; assignments: assignments assignment @{@} | /* Nothing. */ @{@}; -assignment: "identifier" ":=" exp @{ driver.variables[*$1] = $3; @}; +assignment: + "identifier" ":=" exp + @{ driver.variables[*$1] = $3; delete $1; @}; %left '+' '-'; %left '*' '/'; @@ -7683,7 +7685,7 @@ exp: exp '+' exp @{ $$ = $1 + $3; @} | exp '-' exp @{ $$ = $1 - $3; @} | exp '*' exp @{ $$ = $1 * $3; @} | exp '/' exp @{ $$ = $1 / $3; @} - | "identifier" @{ $$ = driver.variables[*$1]; @} + | "identifier" @{ $$ = driver.variables[*$1]; delete $1; @} | "number" @{ $$ = $1; @}; %% @end example @@ -7844,8 +7846,8 @@ main (int argc, char *argv[]) driver.trace_scanning = true; else @{ - driver.parse (*argv); - std::cout << driver.result << std::endl; + driver.parse (*argv); + std::cout << driver.result << std::endl; @} @} @end example