mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 14:29:34 +02:00
* new example to demonstrate new QuickEvaluate routine.
git-svn-id: trunk@18197 -
This commit is contained in:
parent
55ff531bd4
commit
8f4d4bc959
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -5903,6 +5903,7 @@ packages/symbolic/doc/optimization.txt svneol=native#text/plain
|
||||
packages/symbolic/doc/symbolic.txt svneol=native#text/plain
|
||||
packages/symbolic/examples/Makefile svneol=native#text/plain
|
||||
packages/symbolic/examples/Makefile.fpc svneol=native#text/plain
|
||||
packages/symbolic/examples/easyevalexample.pp svneol=native#text/plain
|
||||
packages/symbolic/examples/evaltest.pas svneol=native#text/plain
|
||||
packages/symbolic/examples/rpnthing.pas svneol=native#text/plain
|
||||
packages/symbolic/fpmake.pp svneol=native#text/plain
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/03]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/13]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
|
||||
@ -289,193 +289,193 @@ FPCFPMAKE=$(FPC)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-haiku)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-darwin)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wince)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-symbian)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-nativent)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-iphonesim)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-amiga)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-wii)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-solaris)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-darwin)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-palmos)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-darwin)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-wince)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-gba)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-nds)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-symbian)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-darwin)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),avr-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),armeb-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),armeb-embedded)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),mipsel-linux)
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing
|
||||
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
|
||||
endif
|
||||
override INSTALL_FPCPACKAGE=y
|
||||
ifdef REQUIRE_UNITSDIR
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
[target]
|
||||
programs=evaltest rpnthing
|
||||
programs=evaltest rpnthing easyevalexample
|
||||
|
||||
[require]
|
||||
packages=symbolic
|
||||
|
39
packages/symbolic/examples/easyevalexample.pp
Normal file
39
packages/symbolic/examples/easyevalexample.pp
Normal file
@ -0,0 +1,39 @@
|
||||
Program EasyEvalExample;
|
||||
{
|
||||
Copyright (c) 2011 by Marco van de Voort(marco@freepascal.org)
|
||||
member of the Free Pascal development team
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright. (LGPL-with-static-linking-exception)
|
||||
|
||||
Rock bottom example of new evaluator helper function.
|
||||
|
||||
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.
|
||||
}
|
||||
|
||||
{$mode delphi}
|
||||
Uses Symbolic,Classes,sysutils;
|
||||
|
||||
var s : AnsiString;
|
||||
a : extended;
|
||||
b : integer;
|
||||
|
||||
begin
|
||||
// quickevaluate('expression',[],[]); evaluates a constant expression to an
|
||||
// extended result
|
||||
|
||||
s:='(5+5+10)*2';
|
||||
writeln(s,'=',QuickEvaluate(s,[],[]):10:1);
|
||||
|
||||
|
||||
// ... but still allows variables:
|
||||
|
||||
a:=2.0;
|
||||
b:=3;
|
||||
s:='(5+A+10)*B';
|
||||
// variable names are case sensitive!
|
||||
writeln(s,'=',QuickEvaluate(s,['A','B'],[a,b]):10:1,' with A=',a:0:1,' and B=',b);
|
||||
|
||||
end.
|
@ -40,6 +40,7 @@ begin
|
||||
P.ExamplePath.Add('examples');
|
||||
P.Targets.AddExampleProgram('evaltest.pas');
|
||||
P.Targets.AddExampleProgram('rpnthing.pas');
|
||||
P.Targets.AddExampleProgram('easyevalexample.pas');
|
||||
P.Sources.AddDoc('doc/optimization.txt');
|
||||
P.Sources.AddDoc('doc/symbolic.txt');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user