aboutsummaryrefslogtreecommitdiffstats
path: root/NOTES
diff options
context:
space:
mode:
Diffstat (limited to 'NOTES')
-rw-r--r--NOTES49
1 files changed, 49 insertions, 0 deletions
diff --git a/NOTES b/NOTES
new file mode 100644
index 0000000..f49dfe5
--- /dev/null
+++ b/NOTES
@@ -0,0 +1,49 @@
+
+opcodes
+ note: no unary, increment, decrement
+ arthithmetic: + - * / %
+ bitwise: l r & | ^ ~
+ "<<" is l, ">>" is r
+ all are atoms or binary operators, so recursive compilation to a forth-like?
+ order of ops:
+ ~
+ * / %
+ + -
+ << >>
+ &
+ ^
+ |
+
+final console interface:
+ #hashtag (exact) -> searches identica for tunes
+ @username (exact) -> parses identica feed for tunes
+ _1234... -> plays track from memory
+ expression -> compiles and plays expression
+ [else] -> searches greedily for a valid expression; if not found, ignores
+
+bytetros?
+
+
+
+void proc_token()
+
+int[32] itable
+struct { node* car, nlist* cdr } nlist
+tlist* tcons(token*, )
+
+struct { } token
+token[140] ttable
+struct { char type, int* iptr, int * } node
+ntable[140]
+int h2i(char*)
+
+
+s-exp method:
+tokenize: glom numbers
+preparse: match parens, return s-expr
+parse: turn into prefix notation
+validate: check against rules
+compile: optionally remove trivial identities ("~~") and evaluate static expressions
+
+general method:
+grammar parser, returns ast