>the key is knowing that %code takes an optional location qualifier
		>"requires" will place our definition providing headers high enough,
		   that they are above the yylval union, unlike standard code blocks
		   and default %code directives
        >no, "top" would not work; how did you know?
        >this DOES mean that those includes are going in your bison generated header,
          whether you want them or not; if it bothers you, good luck macro-juggling
		{
			/* @BAKE
				bison -o string.tab.c $@
				g++ string.tab.c -o string
				./string
			   @STOP
			*/
			%code requires {
				#include 
				#include 
				void yyerror(...) { ; }
			}
			%union {
				std::string * strval;
			}
			%{
				int yylex() {
					yylval.strval = new std::string("There are only two hard problems in CS: cache invalidation, naming things, and off-by-one errors.");
					return STRING;
				}
			%}
			%token STRING
			%%
			string: STRING { std::cout << *(yylval.strval) << std::endl; }
			%%
			signed main() { yyparse(); }
		}
		>NOTE: that a string* must be used because, behold: %union creates an union,
				meaning we can only have trivial constructors