diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2012-11-01 17:52:41 +0100 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2012-11-01 18:26:04 +0100 |
commit | 0b3287025df27584045a91a006eb63665909cab9 (patch) | |
tree | 6d627c07111898bf3e089fc89af14a11b5604ed2 /examples | |
parent | 62cb570a8dc4895110c087dbfa5810cd0bc316a8 (diff) | |
download | bison-0b3287025df27584045a91a006eb63665909cab9.tar.gz |
examples: simplify/improve
* examples/variant.yy: Put yylex in yy::, and simplify accordingly.
Minor formatting changes.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/variant.yy | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/examples/variant.yy b/examples/variant.yy index 39a57ba8..1288a4a9 100644 --- a/examples/variant.yy +++ b/examples/variant.yy @@ -38,7 +38,10 @@ typedef std::list<std::string> strings_type; #include <sstream> // Prototype of the yylex function providing subsequent tokens. - static yy::parser::symbol_type yylex (); + namespace yy + { + static parser::symbol_type yylex (); + } // Printing a list of strings. // Koening look up will look into std, since that's an std::list. @@ -91,41 +94,44 @@ item: ; %% -// The yylex function providing subsequent tokens: -// TEXT "I have three numbers for you:" -// NUMBER 1 -// NUMBER 2 -// NUMBER 3 -// TEXT " and that's all!" -// END_OF_FILE - -static -yy::parser::symbol_type -yylex () +namespace yy { - static int stage = -1; - ++stage; - yy::parser::location_type loc(0, stage + 1, stage + 1); - switch (stage) + // The yylex function providing subsequent tokens: + // TEXT "I have three numbers for you." + // NUMBER 1 + // NUMBER 2 + // NUMBER 3 + // TEXT "And that's all!" + // END_OF_FILE + + static + parser::symbol_type + yylex () { - case 0: - return yy::parser::make_TEXT ("I have three numbers for you.", loc); - case 1: - case 2: - case 3: - return yy::parser::make_NUMBER (stage, loc); - case 4: - return yy::parser::make_TEXT ("And that's all!", loc); - default: - return yy::parser::make_END_OF_FILE (loc); + static int stage = -1; + ++stage; + parser::location_type loc(0, stage + 1, stage + 1); + switch (stage) + { + case 0: + return parser::make_TEXT ("I have three numbers for you.", loc); + case 1: + case 2: + case 3: + return parser::make_NUMBER (stage, loc); + case 4: + return parser::make_TEXT ("And that's all!", loc); + default: + return parser::make_END_OF_FILE (loc); + } } -} -// Mandatory error function -void -yy::parser::error (const yy::parser::location_type& loc, const std::string& msg) -{ - std::cerr << loc << ": " << msg << std::endl; + // Mandatory error function + void + parser::error (const parser::location_type& loc, const std::string& msg) + { + std::cerr << loc << ": " << msg << std::endl; + } } int |