* 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
%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_WARRANTY T_PRINT T_READ T_WRITE T_TIME T_XYZZY T_INVENTORY T_LOOK T_SCORE
/* Operator precedence and associativity */
%right '='
| '?' T_SYMBOL {print_help(ex_to_symbol($2).getname());}
| '?' '?' {print_help_topics();}
| T_QUIT {YYACCEPT;}
+ | T_WARRANTY {
+ cout << "This program is free software; you can redistribute it and/or modify it under\n";
+ cout << "the terms of the GNU General Public License as published by the Free Software\n";
+ cout << "Foundation; either version 2 of the License, or (at your option) any later\n";
+ cout << "version.\n";
+ cout << "This program is distributed in the hope that it will be useful, but WITHOUT\n";
+ cout << "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n";
+ cout << "FOR A PARTICULAR PURPOSE. See the GNU General Public License for more\n";
+ cout << "details.\n";
+ cout << "You should have received a copy of the GNU General Public License along with\n";
+ cout << "this program. If not, write to the Free Software Foundation, 675 Mass Ave,\n";
+ cout << "Cambridge, MA 02139, USA.\n";
+ }
| T_XYZZY {cout << "Nothing happens.\n";}
| T_INVENTORY {cout << "You're not carrying anything.\n";}
| T_LOOK {cout << "You're in a twisty little maze of passages, all alike.\n";}
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]);}
{"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)},
}
// All registered GiNaC functions
-#ifndef NO_GINAC_NAMESPACE
+#ifndef NO_NAMESPACE_GINAC
void GiNaC::ginsh_get_ginac_functions(void)
-#else // ndef NO_GINAC_NAMESPACE
+#else // ndef NO_NAMESPACE_GINAC
void ginsh_get_ginac_functions(void)
-#endif // ndef NO_GINAC_NAMESPACE
+#endif // ndef NO_NAMESPACE_GINAC
{
- vector<registered_function_info>::const_iterator i = function::registered_functions().begin(), end = function::registered_functions().end();
+ vector<function_options>::const_iterator i = function::registered_functions().begin(), end = function::registered_functions().end();
unsigned serial = 0;
while (i != end) {
- fcns.insert(make_pair(i->name, fcn_desc(f_ginac_function, i->nparams, serial)));
+ fcns.insert(make_pair(i->get_name(), fcn_desc(f_ginac_function, i->get_nparams(), serial)));
i++;
serial++;
}
}
}
+void greeting(void)
+{
+ cout << "ginsh - GiNaC Interactive Shell (" << PACKAGE << " V" << VERSION << ")" << endl;
+ cout << " __, _______ Copyright (C) 1999-2000 Johannes Gutenberg University Mainz,\n"
+ << " (__) * | Germany. This is free software with ABSOLUTELY NO WARRANTY.\n"
+ << " ._) i N a C | You are welcome to redistribute it under certain conditions.\n"
+ << "<-------------' For details type `warranty;'.\n" << endl;
+ cout << "Type ?? for a list of help topics." << endl;
+}
/*
* Main program
*/
-
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-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";
- }
+ if (isatty(0))
+ greeting();
// Init function table
insert_fcns(builtin_fcns);