]> www.ginac.de Git - ginac.git/blobdiff - ginsh/ginsh_parser.yy
- renamed archive::dump() to archive::printraw() for consistency with the
[ginac.git] / ginsh / ginsh_parser.yy
index 0134ab15ced455d8a4786d47fdd6d4a0bac995a9..7a94f1f8e3a13b78022fc25b84cf2e4bd198b2b1 100644 (file)
@@ -3,7 +3,7 @@
  *  Input grammar definition for ginsh.
  *  This file must be processed with yacc/bison.
  *
- *  GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -86,7 +86,7 @@ static ex lst2matrix(const ex &l);
 %token T_NUMBER T_SYMBOL T_LITERAL T_DIGITS T_QUOTE T_QUOTE2 T_QUOTE3
 %token T_EQUAL T_NOTEQ T_LESSEQ T_GREATEREQ T_MATRIX_BEGIN T_MATRIX_END
 
-%token T_QUIT T_PRINT T_TIME T_XYZZY T_INVENTORY T_LOOK T_SCORE
+%token T_QUIT T_PRINT T_READ T_WRITE T_TIME T_XYZZY T_INVENTORY T_LOOK T_SCORE
 
 /* Operator precedence and associativity */
 %right '='
@@ -252,7 +252,7 @@ static ex f_lsolve(const exprseq &e) {return lsolve(e[0], e[1]);}
 static ex f_nops(const exprseq &e) {return e[0].nops();}
 static ex f_normal1(const exprseq &e) {return e[0].normal();}
 static ex f_numer(const exprseq &e) {return e[0].numer();}
-static ex f_power(const exprseq &e) {return power(e[0], e[1]);}
+static ex f_pow(const exprseq &e) {return pow(e[0], e[1]);}
 static ex f_sqrt(const exprseq &e) {return sqrt(e[0]);}
 static ex f_subs2(const exprseq &e) {return e[0].subs(e[1]);}
 
@@ -298,9 +298,9 @@ static ex f_determinant(const exprseq &e)
 
 static ex f_diag(const exprseq &e)
 {
-       int dim = e.nops();
+       unsigned dim = e.nops();
        matrix &m = *new matrix(dim, dim);
-       for (int i=0; i<dim; i++)
+       for (unsigned i=0; i<dim; i++)
                m.set(i, i, e.op(i));
        return m;
 }
@@ -378,7 +378,7 @@ static ex f_op(const exprseq &e)
 {
        CHECK_ARG(1, numeric, op);
        int n = ex_to_numeric(e[1]).to_int();
-       if (n < 0 || n >= e[0].nops())
+       if (n < 0 || n >= (int)e[0].nops())
                throw(std::out_of_range("second argument to op() is out of range"));
        return e[0].op(n);
 }
@@ -511,7 +511,7 @@ static const fcn_init builtin_fcns[] = {
        {"normal", fcn_desc(f_normal2, 2)},
        {"numer", fcn_desc(f_numer, 1)},
        {"op", fcn_desc(f_op, 2)},
-       {"power", fcn_desc(f_power, 2)},
+       {"pow", fcn_desc(f_pow, 2)},
        {"prem", fcn_desc(f_prem, 3)},
        {"primpart", fcn_desc(f_primpart, 2)},
        {"quo", fcn_desc(f_quo, 3)},
@@ -665,7 +665,7 @@ static ex lst2matrix(const ex &l)
                throw(std::logic_error("internal error: argument to lst2matrix() is not a list"));
 
        // Find number of rows and columns
-       int rows = l.nops(), cols = 0, i, j;
+       unsigned rows = l.nops(), cols = 0, i, j;
        for (i=0; i<rows; i++)
                if (l.op(i).nops() > cols)
                        cols = l.op(i).nops();
@@ -713,12 +713,12 @@ static char **fcn_completion(char *text, int start, int end)
                // For shell commands, revert back to filename completion
                rl_completion_append_character = orig_completion_append_character;
                rl_basic_word_break_characters = orig_basic_word_break_characters;
-               return completion_matches(text, filename_completion_function);
+               return completion_matches(text, (CPFunction *)filename_completion_function);
        } else {
                // Otherwise, complete function names
                rl_completion_append_character = '(';
                rl_basic_word_break_characters = " \t\n\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~";
-               return completion_matches(text, fcn_generator);
+               return completion_matches(text, (CPFunction *)fcn_generator);
        }
 }
 
@@ -732,9 +732,9 @@ int main(int argc, char **argv)
        // Print banner in interactive mode
        if (isatty(0)) {
                cout << "ginsh - GiNaC Interactive Shell (" << PACKAGE << " " << VERSION << ")\n";
-               cout << "Copyright (C) 1999 Johannes Gutenberg Universitaet Mainz, Germany\n";
-               cout << "This is free software, and you are welcome to redistribute it\n";
-               cout << "under certain conditions; see the file COPYING for details.\n";
+               cout << "Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany\n";
+               cout << "This is free software with ABSOLUTELY NO WARRANTY.  You are welcome to\n";
+               cout << "redistribute it under certain conditions; see the file COPYING for details.\n";
                cout << "Type ?? for a list of help topics.\n";
        }
 
@@ -758,20 +758,21 @@ int main(int argc, char **argv)
        insert_fcn_help("atan2", "inverse tangent function with two arguments");
        insert_fcn_help("atanh", "inverse hyperbolic tangent function");
        insert_fcn_help("beta", "beta function");
+       insert_fcn_help("binomial", "binomial function");
        insert_fcn_help("cos", "cosine function");
        insert_fcn_help("cosh", "hyperbolic cosine function");
-       insert_fcn_help("psi", "polygamma function");
+       insert_fcn_help("exp", "exponential function");
+       insert_fcn_help("factorial", "factorial function");
+       insert_fcn_help("gamma", "gamma function");
+       insert_fcn_help("log", "natural logarithm");
+       insert_fcn_help("psi", "psi function\npsi(x) is the digamma function, psi(n,x) the nth polygamma function");
        insert_fcn_help("sin", "sine function");
        insert_fcn_help("sinh", "hyperbolic sine function");
        insert_fcn_help("tan", "tangent function");
        insert_fcn_help("tanh", "hyperbolic tangent function");
-       insert_fcn_help("exp", "exponential function");
-       insert_fcn_help("log", "natural logarithm");
+       insert_fcn_help("zeta", "zeta function\nzeta(x) is Riemann's zeta function, zeta(n,x) its nth derivative");
        insert_fcn_help("Li2", "dilogarithm");
        insert_fcn_help("Li3", "trilogarithm");
-       insert_fcn_help("binomial", "binomial function");
-       insert_fcn_help("factorial", "factorial function");
-       insert_fcn_help("gamma", "gamma function");
        insert_fcn_help("Order", "order term function (for truncated power series)");
 
        // Init readline completer