Index: tools/prettyprinter/Makefile.am
===================================================================
--- tools/prettyprinter/Makefile.am	(revision fc1ef6262344eb2eb531046aed824827d0a0909f)
+++ tools/prettyprinter/Makefile.am	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
@@ -11,6 +11,6 @@
 ## Created On       : Wed Jun 28 12:07:10 2017
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Wed Jun 28 23:11:56 2017
-## Update Count     : 15
+## Last Modified On : Mon Apr 16 09:43:23 2018
+## Update Count     : 20
 ###############################################################################
 
Index: tools/prettyprinter/lex.ll
===================================================================
--- tools/prettyprinter/lex.ll	(revision fc1ef6262344eb2eb531046aed824827d0a0909f)
+++ tools/prettyprinter/lex.ll	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
@@ -10,6 +10,6 @@
  * Created On       : Sat Dec 15 11:45:59 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Tue Aug 29 17:33:36 2017
- * Update Count     : 268
+ * Last Modified On : Sun Apr 15 21:28:33 2018
+ * Update Count     : 271
  */
 
@@ -50,16 +50,16 @@
 <INITIAL,C_CODE>"/*" {									// C style comments */
 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT)
-    cerr << "\"/*\" : " << yytext << endl;
+		cerr << "\"/*\" : " << yytext << endl;
 #endif
-    if ( YYSTATE == C_CODE ) code_str += yytext;
-    else comment_str += yytext;
-    yy_push_state(C_COMMENT);
+		if ( YYSTATE == C_CODE ) code_str += yytext;
+		else comment_str += yytext;
+		yy_push_state(C_COMMENT);
 }
 <C_COMMENT>(.|"\n")	{									// C style comments
 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT)
-    cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl;
+		cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl;
 #endif
-    if ( yy_top_state() == C_CODE ) code_str += yytext;
-    else comment_str += yytext;
+		if ( yy_top_state() == C_CODE ) code_str += yytext;
+		else comment_str += yytext;
 }
 <C_COMMENT>"*/"	{										// C style comments
@@ -123,22 +123,24 @@
 <C_CODE>"%}"	{ RETURN_TOKEN( RCURL ) }
 
-^"%union"       { RETURN_TOKEN( UNION ) }
-^"%start"       { RETURN_TOKEN( START ) }
-^"%token"       { RETURN_TOKEN( TOKEN ) }
-^"%type"	    { RETURN_TOKEN( TYPE ) }
-^"%left"	    { RETURN_TOKEN( LEFT ) }
-^"%right"	    { RETURN_TOKEN( RIGHT ) }
-^"%nonassoc"    { RETURN_TOKEN( NONASSOC ) }
-^"%precedence"  { RETURN_TOKEN( PRECEDENCE ) }
+^"%define"[^\n]*"\n" { RETURN_TOKEN( DEFINE ) }
+^"%expect"		{ RETURN_TOKEN( EXPECT ) }
+^"%left"		{ RETURN_TOKEN( LEFT ) }
+^"%locations"	{ RETURN_TOKEN( LOCATIONS ) }
+^"%nonassoc"	{ RETURN_TOKEN( NONASSOC ) }
+^"%precedence"	{ RETURN_TOKEN( PRECEDENCE ) }
 ^"%pure_parser" { RETURN_TOKEN( PURE_PARSER ) }
+^"%right"		{ RETURN_TOKEN( RIGHT ) }
 ^"%semantic_parser"	{ RETURN_TOKEN( SEMANTIC_PARSER ) }
-^"%expect"  	{ RETURN_TOKEN( EXPECT ) }
-^"%thong" 	   	{ RETURN_TOKEN( THONG ) }
+^"%start"		{ RETURN_TOKEN( START ) }
+^"%thong" 		{ RETURN_TOKEN( THONG ) }
+^"%token"		{ RETURN_TOKEN( TOKEN ) }
+^"%type"		{ RETURN_TOKEN( TYPE ) }
+^"%union"		{ RETURN_TOKEN( UNION ) }
 
-"%prec" 	   	{ RETURN_TOKEN( PREC ) }
+"%prec" 		{ RETURN_TOKEN( PREC ) }
 
-{integer}	    { RETURN_TOKEN( INTEGER ); }
-[']{c_char}[']  { RETURN_TOKEN( CHARACTER ); }
-{identifier}    { RETURN_TOKEN( IDENTIFIER ); }
+{integer}		{ RETURN_TOKEN( INTEGER ); }
+[']{c_char}[']	{ RETURN_TOKEN( CHARACTER ); }
+{identifier}	{ RETURN_TOKEN( IDENTIFIER ); }
 
 <C_CODE>["]{s_char}*["]	{								// hide braces "{}" in strings
@@ -160,13 +162,13 @@
 %%
 void lexC(void) {
-    BEGIN(C_CODE);
+	BEGIN(C_CODE);
 }
 
 string lexYacc(void) {
-    BEGIN(INITIAL);
-    //cerr << "CODE: " << endl << code_str << endl;
-    string temp( code_str );
-    code_str = "";
-    return temp;
+	BEGIN(INITIAL);
+	//cerr << "CODE: " << endl << code_str << endl;
+	string temp( code_str );
+	code_str = "";
+	return temp;
 }
 
Index: tools/prettyprinter/parser.hh
===================================================================
--- tools/prettyprinter/parser.hh	(revision fc1ef6262344eb2eb531046aed824827d0a0909f)
+++ 	(revision )
@@ -1,146 +1,0 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
-
-/* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-#ifndef YY_YY_PARSER_HH_INCLUDED
-# define YY_YY_PARSER_HH_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    MARK = 258,
-    LCURL = 259,
-    RCURL = 260,
-    INTEGER = 261,
-    CHARACTER = 262,
-    IDENTIFIER = 263,
-    CODE = 264,
-    START = 265,
-    UNION = 266,
-    TOKEN = 267,
-    LEFT = 268,
-    RIGHT = 269,
-    NONASSOC = 270,
-    PRECEDENCE = 271,
-    TYPE = 272,
-    PURE_PARSER = 273,
-    SEMANTIC_PARSER = 274,
-    EXPECT = 275,
-    THONG = 276,
-    PREC = 277,
-    END_TERMINALS = 278,
-    _SECTIONS = 279,
-    _DEFSECTION_OPT = 280,
-    _LITERALBLOCK = 281,
-    _DECLARATION = 282,
-    _TAG_OPT = 283,
-    _NAMENOLIST = 284,
-    _NAMENO = 285,
-    _NAMELIST = 286,
-    _RULESECTION = 287,
-    _RULE = 288,
-    _LHS = 289,
-    _RHS = 290,
-    _PREC = 291,
-    _ACTION = 292,
-    _USERSECTION_OPT = 293
-  };
-#endif
-/* Tokens.  */
-#define MARK 258
-#define LCURL 259
-#define RCURL 260
-#define INTEGER 261
-#define CHARACTER 262
-#define IDENTIFIER 263
-#define CODE 264
-#define START 265
-#define UNION 266
-#define TOKEN 267
-#define LEFT 268
-#define RIGHT 269
-#define NONASSOC 270
-#define PRECEDENCE 271
-#define TYPE 272
-#define PURE_PARSER 273
-#define SEMANTIC_PARSER 274
-#define EXPECT 275
-#define THONG 276
-#define PREC 277
-#define END_TERMINALS 278
-#define _SECTIONS 279
-#define _DEFSECTION_OPT 280
-#define _LITERALBLOCK 281
-#define _DECLARATION 282
-#define _TAG_OPT 283
-#define _NAMENOLIST 284
-#define _NAMENO 285
-#define _NAMELIST 286
-#define _RULESECTION 287
-#define _RULE 288
-#define _LHS 289
-#define _RHS 290
-#define _PREC 291
-#define _ACTION 292
-#define _USERSECTION_OPT 293
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
-union YYSTYPE
-{
-#line 41 "parser.yy" /* yacc.c:1909  */
-
-	Token *tokenp;
-
-#line 134 "parser.hh" /* yacc.c:1909  */
-};
-
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_PARSER_HH_INCLUDED  */
Index: tools/prettyprinter/parser.yy
===================================================================
--- tools/prettyprinter/parser.yy	(revision fc1ef6262344eb2eb531046aed824827d0a0909f)
+++ tools/prettyprinter/parser.yy	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
@@ -10,6 +10,6 @@
 // Created On       : Sat Dec 15 13:44:21 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 29 16:34:10 2017
-// Update Count     : 1047
+// Last Modified On : Sun Apr 15 21:40:30 2018
+// Update Count     : 1052
 // 
 
@@ -61,57 +61,59 @@
 %token<tokenp>	CODE									// C code
 
-%token<tokenp>	START									// %start
-%token<tokenp>	UNION									// %union
-%token<tokenp>	TOKEN									// %token
+%token<tokenp>	DEFINE									// %define
+%token<tokenp>	EXPECT									// %expect
 %token<tokenp>	LEFT									// %left
-%token<tokenp>	RIGHT									// %right
+%token<tokenp>	LOCATIONS								// %locations
 %token<tokenp>	NONASSOC								// %nonassoc
 %token<tokenp>	PRECEDENCE								// %precedence
+%token<tokenp>	PURE_PARSER								// %pure_parser
+%token<tokenp>	RIGHT									// %right
+%token<tokenp>	SEMANTIC_PARSER							// %semantic_parser
+%token<tokenp>	START									// %start
+%token<tokenp>	THONG									// %thong
+%token<tokenp>	TOKEN									// %token
 %token<tokenp>	TYPE									// %type
-%token<tokenp>	PURE_PARSER								// %pure_parser
-%token<tokenp>	SEMANTIC_PARSER							// %semantic_parser
-%token<tokenp>	EXPECT									// %expect
-%token<tokenp>	THONG									// %thong
+%token<tokenp>	UNION									// %union
 
 %token<tokenp>	PREC									// %prec
 
-%token		END_TERMINALS								// ALL TERMINAL TOKEN NAMES MUST APPEAR BEFORE THIS
+%token			END_TERMINALS							// ALL TERMINAL TOKEN NAMES MUST APPEAR BEFORE THIS
 
 %type<tokenp>	sections
-%token		_SECTIONS
+%token			_SECTIONS
 %type<tokenp>	mark
 %type<tokenp>	defsection_opt
-%token		_DEFSECTION_OPT
+%token			_DEFSECTION_OPT
 %type<tokenp>	declarations
 %type<tokenp>	literalblock
-%token		_LITERALBLOCK
+%token			_LITERALBLOCK
 %type<tokenp>	declaration
-%token		_DECLARATION
+%token			_DECLARATION
 %type<tokenp>	union
 %type<tokenp>	rword
 %type<tokenp>	tag_opt
-%token		_TAG_OPT
+%token			_TAG_OPT
 %type<tokenp>	namenolist
-%token		_NAMENOLIST
+%token			_NAMENOLIST
 %type<tokenp>	nameno
-%token		_NAMENO
+%token			_NAMENO
 %type<tokenp>	namelist
-%token		_NAMELIST
+%token			_NAMELIST
 %type<tokenp>	name
 %type<tokenp>	rulesection
-%token		_RULESECTION
+%token			_RULESECTION
 %type<tokenp>	rules
-%token		_RULE
+%token			_RULE
 %type<tokenp>	lhs
-%token		_LHS
+%token			_LHS
 %type<tokenp>	rhs
-%token		_RHS
+%token			_RHS
 %type<tokenp>	prod
 %type<tokenp>	prec
-%token		_PREC
+%token			_PREC
 %type<tokenp>	action
-%token		_ACTION
+%token			_ACTION
 %type<tokenp>	usersection_opt
-%token		_USERSECTION_OPT
+%token			_USERSECTION_OPT
 %type<tokenp>	ccode_opt
 %type<tokenp>	blocks
@@ -234,4 +236,6 @@
 		    $$ = $1;
 		}
+	| DEFINE											// bison
+	| LOCATIONS
 	| THONG												// bison
 	;
Index: tools/prettyprinter/test.y
===================================================================
--- tools/prettyprinter/test.y	(revision fc1ef6262344eb2eb531046aed824827d0a0909f)
+++ tools/prettyprinter/test.y	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
@@ -6,5 +6,6 @@
 
 /* adsad2 */
-
+%locations
+%define parse.error verbose
 %%
 
