* This file must be processed with yacc/bison. */
/*
- * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2011 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
*/
%{
+#ifdef HAVE_CONFIG_H
#include "config.h"
+#endif
#ifdef HAVE_RUSAGE
#include <sys/resource.h>
#else
%%
// Error print routine
-int yyerror(char *s)
+int yyerror(const char *s)
{
cerr << s << " at " << yytext << endl;
return 0;
static ex f_find(const exprseq &e)
{
- lst found;
+ exset found;
e[0].find(e[1], found);
- return found;
+ lst l;
+ for (exset::const_iterator i = found.begin(); i != found.end(); ++i)
+ l.append(*i);
+ return l;
}
static ex f_fsolve(const exprseq &e)
static ex f_match(const exprseq &e)
{
- lst repl_lst;
- if (e[0].match(e[1], repl_lst))
+ exmap repls;
+ if (e[0].match(e[1], repls)) {
+ lst repl_lst;
+ for (exmap::const_iterator i = repls.begin(); i != repls.end(); ++i)
+ repl_lst.append(relational(i->first, i->second, relational::equal));
return repl_lst;
- else
- return fail();
+ }
+ throw std::runtime_error("FAIL");
}
static ex f_normal2(const exprseq &e)
static ex f_ginac_function(const exprseq &es, int serial)
{
- return function(serial, es).eval(1);
+ return GiNaC::function(serial, es).eval(1);
}
// All registered GiNaC functions
namespace GiNaC {
-void ginsh_get_ginac_functions(void)
+static void ginsh_get_ginac_functions(void)
{
- vector<function_options>::const_iterator i = function::registered_functions().begin(), end = function::registered_functions().end();
+ vector<function_options> gfv = function::get_registered_functions();
+ vector<function_options>::const_iterator i = gfv.begin(), end = gfv.end();
unsigned serial = 0;
while (i != end) {
fcns.insert(make_pair(i->get_name(), fcn_desc(f_ginac_function, i->get_nparams(), serial)));
void greeting(void)
{
cout << "ginsh - GiNaC Interactive Shell (" << PACKAGE << " V" << VERSION << ")" << endl;
- cout << " __, _______ Copyright (C) 1999-2008 Johannes Gutenberg University Mainz,\n"
+ cout << " __, _______ Copyright (C) 1999-2011 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;