hist command (ugly)
[calc.git] / parser.c
index 24afb116c98f19a4a2d0e2724a4d52b6982984fb..4d9b01a23b8a81bb438ba989f9e0df76d85a0ceb 100644 (file)
--- a/parser.c
+++ b/parser.c
 
 #include "parser.h"
 
+/* external definition */
+
+extern void history ();
+
 /* global variables */
 
 double answer = 0;
@@ -64,7 +68,7 @@ keyword_t operators[NB_OPERATORS] = {
     { "|",   Or, 2, 1, -2}
 };
 
-#define NB_FUNCTIONS 55
+#define NB_FUNCTIONS 56
 keyword_t functions[NB_FUNCTIONS] = {
     { "sqrt", Sqr, 1, 4, 5},
     { "pow",  Pow, 2, 3, 5},
@@ -91,6 +95,7 @@ keyword_t functions[NB_FUNCTIONS] = {
     { "clr",  Clear, 0, 3, 9},
     { "quit", Quit, 0, 4, 9},
     { "help", Help, 0, 4, 9},
+    { "hist", History, 0, 4, 9},
     { "!",    Not, 1, 1, 6},
     { "cond", Cond, 3, 4, 5},
     { "while", While, 2, 5, 5},
@@ -489,6 +494,7 @@ void print_element (element_t *root, int level)
     case Clear: func = "Clear"; break;
     case Quit: func = "Quit"; break;
     case Help: func = "Help"; break;
+    case History: func = "History"; break;
     case Ans: func = "Ans"; break;
     case Pi: func = "Pi"; break;
     case E: func = "E"; break;
@@ -626,7 +632,9 @@ void help (void)
     printf ("stack func.:");
     printf (" max mean med min ord prod sum var\n");
     printf ("control management:");
-    printf (" base deg format grad help quit rad\n");
+    printf (" base format help hist quit\n");
+    printf ("angle management:");
+    printf (" deg grad rad\n");
     printf ("constants:");
     printf (" ans e pi\n");
 }
@@ -762,6 +770,7 @@ double evaluate_element (element_t *root, char mask)
     case Clear:
     case Quit:
     case Help:
+    case History:
     case Ans:
     case Pi:
     case E:
@@ -861,6 +870,7 @@ double evaluate_element (element_t *root, char mask)
     case Clear: clear (); break;
     case Quit: quit (); break;
     case Help: help (); break;
+    case History: history (); break;
     case Ans: return answer;
     case Pi: return M_PI;
     case E: return M_E;