Mathematica-like environment on the mbed using USB keyboard input, VGA output, and a thermal printer.

Dependencies:   mbed Thermal 4DGL-uLCD-SE USBHost_Modified uVGAIII

Revision:
6:646d22295054
diff -r 1cbfc69d87b5 -r 646d22295054 tree.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tree.h	Thu Dec 13 20:27:21 2018 +0000
@@ -0,0 +1,62 @@
+#ifndef TREE_H
+#define TREE_H
+
+/* The type of any binary or unary operators */
+enum token_type {
+    TOKEN_NUM,
+    TOKEN_ADD,
+    TOKEN_SUB,
+    TOKEN_MUL,
+    TOKEN_DIV,
+    TOKEN_EXP,
+    TOKEN_VAR,
+    TOKEN_FUN,
+    TOKEN_LPA,
+    TOKEN_RPA
+};
+
+
+/* The type of any binary or unary operators */
+enum op_type {
+    OP_ADD,
+    OP_SUB,
+    OP_MUL,
+    OP_DIV,
+    OP_EXP
+};
+
+/* The type of each node */
+enum node_type {
+     NODE_NUMBER,       /* Holds one number in data.fval, no children */
+     NODE_VAR,          /* Holds the name of the var in data.name  */
+     NODE_BINOP,        /* Has the operator in op and both left and right children*/
+     NODE_FUNC          /* Has the function name in data.name and a left child */
+};
+
+
+        
+/* The structure that holds the parse tree */
+struct node{
+     enum node_type type;
+     union data{
+      float fval;
+      char *name;
+      enum op_type op;
+     } data;
+     struct node *left;
+     struct node *right;
+     struct node *parent;
+};
+              
+/* Prints a tree of nodes, indenting as it descends the tree */
+void print_node(struct node*);
+/* Creates a new node of number type */
+struct node* new_number_node(float num);
+/* Creates a new node of var type */
+struct node* new_var_node(char* str);
+/* Creates a new node for a binary operator, with left and right children */
+struct node* new_binop_node(enum op_type, struct node* left, struct node *right);
+struct node* new_func_node(char* name, struct node* left);
+
+
+#endif