This is a living document - delete things when done. Avoid discussion.
+NOW:
+ - handle free_type more cleanly??
+ - rethink line-like parsing. Should element also start a line?
+ - review simple/complex parsing options in various situations
+
Current version (Jamison Creek)
-- global consts
+ - clean up
+
+Next version ??
+- spaces in numbers
+- # not comment?? - automatic if used as a mark.
+- can I move 'ok' into the parse context? Then error functions can set it.
+- allow something so I don't need to call config2context so often
+ Some code stanza to be added to do_reduce()
- structs
- - const or variable fields
- - initial value
+ - const fields
- anonymous field - array or struct (or pointer to these)
+ multiple anon struct ar allowed if they don't conflict
- [] can apply to anon array field
- anon struct field gets fields interpolated
-Next version ??
-
- change 'labels' to only be created for 'use'
- handle syntax errors better - recover quickly.
- manifest values for arrays and structs [a,b,c]
- array buffer - can be added to and grows.
- char, string search, regexp search
+- allow "do stuff" as a stand-allow statement (scope)
+
Much later
- functions and procedures
--- /dev/null
+------------
+This:
+ const pie ::= "I like Pie";
+ cake ::= "The cake is"
+ ++ " a lie"
+
+gives a parse error. It thinks the NEWLINE after "The cake is"
+terminates something, but I'm not sure it should at that point.
convert error to type !error
test if value is error ?value
extract error code value!
+
+
+PROBLEM??
+
+ a if c else b
+could have a natural precedence:
+
+ A if C else B if q else a if c else b
+would be
+ A if C else (B if q else (a if c else b))
+Hmm.. not what I imagined. But what I imaging suggested that left-association what
+ a op b op c -> (a op b) op c
+requires that we reduce even when we could shift, ... maybe .... I should leave this
+until I do precedence.
or
const { name ::= value ; name ::= value }
+
+--------------
+I'm in the middle of stage-1 on structures.
+
+I need a type to parse the declaration into. It needs to be a linked list
+of fields, each of which is a type, a name, and an initial value. i.e. a 'struct field'.