Improve syntax error message
RF: try to work out why the parser is failing
RF: improve error mesages with col no, line print

Find, print 1- based column number in error line.

Print line causing error.
RF: rename Name, ID, UserVersion

To name, id, user_version
RF: fix for yacc start= bug

Do not read or write grammar table when not using default start symbol.
This stops yacc getting confused from writes of the parsetab with
non-default starts.
RF: minor renamings, whitespace, comments

Should have no effect on code output.
RF: refactor lex / yacc definitions into class

Ready for subclassing for changes in format.
TST: add tests for errors

Remove debug syntaxerror, replace with assert.
Add tests for error (but not print output from errors).

This gives 100% coverage on xpparse.
RF: add error mode input argument and test

Add mode for strict errors
DOC: PEP8 - boy is pep8 fussy
NF: add string parameter value for ParamChoice

Another file reveals ParamChoice has a string for a parameter value -
add as a test case and fix syntax.
RF: add back TYPED_TAG for better syntax errors

Add a fallback token TYPED_TAG for a tag we don't recognize, so that we
get a syntax error when parsing the file rather than an uninformative
error in the parser.
NF: add ParamDouble typed tag and rules

ParamDouble is like ParamLong but with a floating point number instead
of an integer.
BF: fix floating point literals for unary minus

We were not accepting -0.1 as a float; fix and test.
NF: add EVACardLayout rules and test

EVACardLayout appears to be the older version of ParamCardLayout
RF: refactor cards / depends to reduce empties

Empties a bit frightening, and we should probably not mix eva_cards and
param_cards.  Make empty explicit when using cards / depends rather than
in the definitions of cards and depends.
BF: I got ParamArray wrong, it's a list of lists

ParamArray is like ParamMap but instead of a list of blocks, it is a
list of lists.  So far I can only find one element per list.
BF: fix slice / int comparison errors for py3

Little buglet in ply makes slices into ``p`` fail; unpack elements
explicitly.