Things that can be done related to my thesis:

General
	- reorganize task list
	- add some quick docs (readmes) for pseudo-release
	- convert to using const& and * (not just & anywhere)
	- get rid of 'get/set' prefixes -- just use the names,
		with _ prefixes for internal variables used
		(to avoid conflicts, and make internal usage clear)
	- add const wherever appropriate
	- change all const *'s that don't change and can't be null
		to const & (or use _ suffix)

	LATER:
	- fconfig: perhaps file joining should go away... instead things should
		be broken into many smaller pieces (should happen anyway)
	- add m-bigend32 and m-lilend32
	  and use those to solve size/gender issues,
	  instead of listing files by specific machine types
	  (make those files all exclusive in case of machine-specific
	   overrides)
	- fix memory leaks
	- streamline storage efficiency
	- reduce cross dependencies
	- reduce header file cross dependencies
		(back to model of "each .cc file includes what it needs") 
	- remove fixed buffers, by creating generalized string class
		that includes sprintf() capability

	DONE:
	- change "ID" to "Id" (for consistency, since it's not a constant/macro)
	- use 'sz*' and 'csz*' instead of char* and const char* everywhere
	- change all const Struct & to  just Struct_

StrTab
	LATER:
	- trie for storing strings 
		(if first char is 0x00, then it's another level--
		 store entire string at end) 
	- hash table (or ternary tree)

SymTab
	LATER:
	- hash table (or ternary tree)

shacc
	- fix bug with first action (prior to symbols)
		(verify that this is still a problem... it may be fixed)

	LATER:
	- convert skip in rules to simple linking
	- or remove rule linking by reordering
	- error token
	- support recursive lookahead using saved token streams
		(pushdown automata?) -- this involves writing
		a yacc replacement that can save up stacks of tokens
		and later correctly unravel them 
	- provide proper ambiguity checking for shacc (avoid
		infinite loops, etc)
	- add token translation table
	- handle precedence rules (with translated table-- much smaller)
	- unions for YYSTYPE
		$<field># simply needs to tag all references with a name
	DONE:
	- eliminate empty actions (1 symbol, no code)
	- reduce common parts immediately 
	- %rprec for rule precedence
	- "off by one" problem... fetches extra unnecessary token
		before executing reduction
	- %uniq to mark points that should be unambiguous
	- rewrite CParse.y to use shacc (LR(n) format)
	- fix alloc/free problems
	- eliminate cyclic node graphs (GC)
	- take equivalent rules and replace them with a goto
	- check for undefined rules (out of order)
	- generate reference dependency graph and check for unreferenced
		rules...  give report of total, and add ref counts
		to rule listing	

CParse
	- make ActionStack dynamic in size
	- remove useless temps once src/dest sharing is safe
	- tokenize template defs so they can be ignored
		(and give warning)
	- add parsing for exception handling

	LATER:
	- "class name" by itself always declares forward ref in current scope
	- error after classname decl without id (except class foo {}; etc )
	- support for exception handling
	- make code store keep original line number information
	- give warning for empty type (no declarator)
		 if not class/struct/union/enum
	- state-based keyword recognition
	- real extern "C" support
	- float/double support
	- wchar support
	- add 'typeof'

	N/A:
	- enforce strict ordering on type declarations
	- get rid of reduce/reduce

	DONE:
	- handle new/delete expressions
	- fix ambiguous grammar problem for reusing type names as vars
	- support (and ignore) the __attribute__ suffix
	- add CTOR_ID
	- fix constructor problem
	- separate scope for class/struct/union/enum
	- handle scoping rules
	- public/private/protected
	- forward declarations
	- array initializers
	- restructure decl rules to allow type names to be redeclared
	- code store/emit
	- add true/false keywords
	- joining of strings
	- extern "C"
	- inline
	- look up id expressions, and convert constant ones to literals
	- initializer expressions for constructors
	- don't use ++ for Enum increment

Action
	- review action table, and make a list of each action and
		assumptions/expectations made by parser
	- look at deco, and add asserts to make expectations clear
		for each action


Deco	
	- resolve multi-inclusion (dependency) problem
	- separate .dh.cc and .dh.h output
	- dtype conversion to C++ code
	- dclass conversion to C++ code
	- dtype inheritance
	- dclass inheritance
	- "dtype:" specifier in dtype
	- "dtype:" specifier in dclass

	- allow (and currently ignore) SET() and USED() macros
	- enums need to cvt to ints for matching
	- ptr subtraction needs to yield an int
	- type matching is too relaxed for ptrs, arrays
	- arg type checking not done on fn ptrs
	- passing arrays as ptrs doesn't work right
	- make cvflags bitmask and use it instead of separate bools
	  (will allow for future write-only flags as well)
	- use cvquals for 'this' when matching fns
	- match fns correctly for aggr.fn() and ap->fn() calls
	- bug: can add functions to class from global scope
	- handle sizeof() correctly
	- handle casts correctly
	- make all actions safe for sharing src/dest
	- -OCC option
	- operator XXX () type conversions (when type matching)
	- constructor argument type conversions

	DONE:
	- inheritence type conversion
	- bitfields
	- handle ptr to member fns properly
	- array indices don't return proper type
	- can't cast const to ptr and use it
	- function ptrs can't be called without dereferencing
	- need to convert void as an arg to no args
	- clean up argument parsing (though it could stil use work)
	- parameter type checking for exact function matching
	- handle declarations in code more cleanly
	- properly handle declarations in for(),if(),etc
	- keep track of and use required member ordering for outputs
	- add rest of stmts
	- differentiate between declared and defined class members
	- make enums a real type
	- print defaults on output
	- coelesce default values from multiple fn defs
	- print default values correctly
	- proper scoping of parameter names
	- handle real types vs printable types
	- private/public/protected flags on inheritance
	- look up class/struct members (ptr/dot)
	- keep/compute expression types
	- scoping needs to apply to initializers
	- output self-dependent aggregates/initializers correctly
	- make var immediately available to initializers
	- real regression test suite, with errors/warnings appended to output
	- fix scoping in tokenlists
	- proper anonymous union support
	- expression storing and regurgitation
	- -E option
	- -x option
	- header processing
	- conditional expressions
	- constructor initializers
	- virtual functions
	- better constant handling
	- make sure enums are working (forward refs, tags, etc)
	- inheritance
	- multiple inheritance
	- operator conversion functions (return type problem)
	- "const" member functions (distinct from non-const forms)
	- enum constant math
	- CPP #defines for __inline__, etc
	- dependency order failure
	- handle scoping rules
	- generic ccint routines for symbol lookup
	- print simplist form of scope (avoiding ambiguity)
	- test-cases for scope
	- add const/volatile directly to types (for rtype, etc)
	- string literals
	- const/volatile support
	- array initializer parsing
	- array initializer output
	- equiv types need to be == [ Object single instance ]
	- avoid redeclaring types (extern int x; extern char x; )
	- parameter checking for function equivalence
	- function overloading
	- operator() functions
	- forward class/struct references
	- finish printing of access (private, etc)
	- support aggr object
	- print class name in final output (for types)
	- make DeclRef object
	- utilize DeclRef object instead of declptr
	- make full Decl type, and link it with symtab
	- make anonymous structs have names
	- allow printing of names (using link back to symtab/id from full decl)
	- full aggr implementation
	- parse code and re-emit it
	- have symbol table emission check for dependencies, and output
		all dependencies first (general ordering should be based
		on the original order of declaration)
	- float/double

	LATER:
	- fix parenthesizing of conditional expressions
	- get namespace working
	- clean up Item structures

CAction
	LATER:
	- move default code into CAction (out of deco)		

Object
	- meta types
	- meta classes
	- redefine core objects for deco using deco

Integer math
	- separation of bitlevel and byte level code
		(use ulongs for calcs and prefilter/shift? -- or just bytes?)
	- arbitrary precision addition
	- arbitrary precision subtraction
	- arbitrary precision multiplication
	- arbitrary precision division/modulo (remember last, for efficiency?)
	- arbitrary precision bitops
	- shift/mask frontend for bitfields


