
(********************************************************************)
(*                                                                  *)
(*  calc.sd7      Calculator                                        *)
(*  Copyright (C) 1995, 2004  Thomas Mertes                         *)
(*                                                                  *)
(*  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 the Free Software Foundation; either version 2 of  *)
(*  the License, or (at your option) any later version.             *)
(*                                                                  *)
(*  This program is distributed in the hope that it will be useful, *)
(*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
(*  GNU General Public License for more details.                    *)
(*                                                                  *)
(*  You should have received a copy of the GNU General Public       *)
(*  License along with this program; if not, write to the           *)
(*  Free Software Foundation, Inc., 51 Franklin Street,             *)
(*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
(*                                                                  *)
(********************************************************************)


$ info off;
$ include "seed7_05.s7i";
  include "float.s7i";
  include "bigint.s7i";
  include "progs.s7i";


const proc: main is func

  local
    var string: command is "";
    var program: prog_expr is program.EMPTY;
  begin
    write("command? ");
    readln(command);
    while command <> "" do
      prog_expr := parseStri("\
        \$ include \"seed7_05.s7i\";\n\
        \include \"float.s7i\";\n\
        \include \"math.s7i\";\n\
        \include \"rational.s7i\";\n\
        \include \"bigint.s7i\";\n\
        \include \"bigrat.s7i\";\n\
        \include \"time.s7i\";\n\
        \include \"duration.s7i\";\n\
        \\n\
        \const proc: main is func\n\
        \  begin\n\
        \    writeln(" & command & ");\n\
        \  end func;\n\
        \");
      if prog_expr <> program.EMPTY then
        if error_count(prog_expr) = 0 then
          execute(prog_expr);
        else
          writeln("*** " <& error_count(prog_expr) <& " errors found");
        end if;
      end if;
      write("command? ");
      readln(command);
    end while;
  end func;
