-- cgit v1.2.3 From be839900419c7a74c4a46efd279d0ca16b35dc1f Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 15 May 2008 23:28:07 +0000 Subject: Moved stuff into trunk. --- COPYING | 26 ++ Makefile | 136 +++++++ NEW | 2 + README | 381 ++++++++++++++++++ TODO | 11 + docs/header.txt | 31 ++ docs/help.txt | 8 + docs/pod/Makefile | 19 + docs/pod/fype.1.gz | Bin 0 -> 6086 bytes docs/pod/fype.html | 582 +++++++++++++++++++++++++++ docs/pod/fype.man | 555 ++++++++++++++++++++++++++ docs/pod/fype.pod | 446 +++++++++++++++++++++ docs/pod/fype.tex | 503 +++++++++++++++++++++++ docs/pod/fype.txt | 381 ++++++++++++++++++ docs/stats.txt | 4 + docs/synopses.txt | 4 + docs/version.txt | 1 + examples/broken/bitwise.fy | 31 ++ examples/comments.fy | 21 + examples/conditionals.fy | 41 ++ examples/control.fy | 32 ++ examples/expressions.fy | 31 ++ examples/fork.fy | 14 + examples/functions.fy | 25 ++ examples/inlinefunctions.fy | 20 + examples/io.fy | 13 + examples/procedures.fy | 30 ++ examples/scopeing.fy | 27 ++ examples/types.fy | 14 + examples/variables.fy | 21 + src/argv.c | 181 +++++++++ src/argv.h | 51 +++ src/build.h | 41 ++ src/core/convert.c | 185 +++++++++ src/core/convert.h | 53 +++ src/core/function.c | 661 +++++++++++++++++++++++++++++++ src/core/function.h | 50 +++ src/core/garbage.c | 136 +++++++ src/core/garbage.h | 54 +++ src/core/interpret.c | 946 ++++++++++++++++++++++++++++++++++++++++++++ src/core/interpret.h | 75 ++++ src/core/scanner.c | 391 ++++++++++++++++++ src/core/scanner.h | 71 ++++ src/core/scope.c | 150 +++++++ src/core/scope.h | 59 +++ src/core/symbol.c | 66 ++++ src/core/symbol.h | 64 +++ src/core/token.c | 380 ++++++++++++++++++ src/core/token.h | 183 +++++++++ src/data/array.c | 266 +++++++++++++ src/data/array.h | 86 ++++ src/data/dat.c | 267 +++++++++++++ src/data/dat.h | 88 +++++ src/data/hash.c | 290 ++++++++++++++ src/data/hash.h | 80 ++++ src/data/list.c | 458 +++++++++++++++++++++ src/data/list.h | 105 +++++ src/data/map.c | 283 +++++++++++++ src/data/map.h | 82 ++++ src/data/queue.c | 210 ++++++++++ src/data/queue.h | 81 ++++ src/data/stack.c | 234 +++++++++++ src/data/stack.h | 76 ++++ src/data/tree.c | 250 ++++++++++++ src/data/tree.h | 106 +++++ src/data/tupel.c | 53 +++ src/data/tupel.h | 47 +++ src/data/types.h | 64 +++ src/defines.h | 99 +++++ src/fype.c | 91 +++++ src/fype.h | 57 +++ src/main.c | 45 +++ tmp/Makefile | 10 + tmp/test.fy | 5 + tmp/test.out | 25 ++ 75 files changed, 10665 insertions(+) create mode 100644 COPYING create mode 100644 Makefile create mode 100644 NEW create mode 100644 README create mode 100644 TODO create mode 100644 docs/header.txt create mode 100644 docs/help.txt create mode 100644 docs/pod/Makefile create mode 100644 docs/pod/fype.1.gz create mode 100644 docs/pod/fype.html create mode 100644 docs/pod/fype.man create mode 100644 docs/pod/fype.pod create mode 100644 docs/pod/fype.tex create mode 100644 docs/pod/fype.txt create mode 100644 docs/stats.txt create mode 100644 docs/synopses.txt create mode 100644 docs/version.txt create mode 100644 examples/broken/bitwise.fy create mode 100644 examples/comments.fy create mode 100644 examples/conditionals.fy create mode 100644 examples/control.fy create mode 100644 examples/expressions.fy create mode 100644 examples/fork.fy create mode 100644 examples/functions.fy create mode 100644 examples/inlinefunctions.fy create mode 100644 examples/io.fy create mode 100644 examples/procedures.fy create mode 100644 examples/scopeing.fy create mode 100644 examples/types.fy create mode 100644 examples/variables.fy create mode 100644 src/argv.c create mode 100644 src/argv.h create mode 100644 src/build.h create mode 100644 src/core/convert.c create mode 100644 src/core/convert.h create mode 100644 src/core/function.c create mode 100644 src/core/function.h create mode 100644 src/core/garbage.c create mode 100644 src/core/garbage.h create mode 100644 src/core/interpret.c create mode 100644 src/core/interpret.h create mode 100644 src/core/scanner.c create mode 100644 src/core/scanner.h create mode 100644 src/core/scope.c create mode 100644 src/core/scope.h create mode 100644 src/core/symbol.c create mode 100644 src/core/symbol.h create mode 100644 src/core/token.c create mode 100644 src/core/token.h create mode 100644 src/data/array.c create mode 100644 src/data/array.h create mode 100644 src/data/dat.c create mode 100644 src/data/dat.h create mode 100644 src/data/hash.c create mode 100644 src/data/hash.h create mode 100644 src/data/list.c create mode 100644 src/data/list.h create mode 100644 src/data/map.c create mode 100644 src/data/map.h create mode 100644 src/data/queue.c create mode 100644 src/data/queue.h create mode 100644 src/data/stack.c create mode 100644 src/data/stack.h create mode 100644 src/data/tree.c create mode 100644 src/data/tree.h create mode 100644 src/data/tupel.c create mode 100644 src/data/tupel.h create mode 100644 src/data/types.h create mode 100644 src/defines.h create mode 100644 src/fype.c create mode 100644 src/fype.h create mode 100644 src/main.c create mode 100644 tmp/Makefile create mode 100644 tmp/test.fy create mode 100644 tmp/test.out diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..46cf5f7 --- /dev/null +++ b/COPYING @@ -0,0 +1,26 @@ +Fype (http://www.fype.org) is ... +... Copyright (c) 2005 2006 2007 2008 by Paul Buetow (http://www.pblabs.net) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of P. B. Labs nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY Paul Buetow ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8f8cb62 --- /dev/null +++ b/Makefile @@ -0,0 +1,136 @@ +# File: ./Makefile +# +# Copyright (c) 2005 2006 2007, Paul Buetow (http://www.pblabs.net) +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modi- +# fication, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of P. B. Labs nor the names of its contributors may +# be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +BIN=fype +SRCS!=find ./src -name '*.c' +OBJS=$(SRCS:.c=.o) +CC?=cc +#CC=mingw32-gcc +DEBUG=-g3 -ggdb3 +CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) +LDADD+= +HEADER?=docs/header.txt +OSYSTEM!=uname +PREFIX=/usr/local +all: build $(OBJS) newline stats-tofile + @$(CC) -lm -o $(BIN) $(OBJS) $(LDADD) + @if test -z '$(DEBUG)'; then strip $(BIN) ; fi + @awk '$$2 == "BUILDNR" { printf("===> Fype build number % 13s :% 6s%d\n", \ + "", "", $$3); exit(0); }' src/build.h + @echo "===> Fype binary size : `du -hs $(BIN)`" + @#echo "===> `./$(BIN) -v | sed 's/Build .*//'`" + @./fype -v > ./docs/version.txt + @./fype -h > ./docs/help.txt + @./fype -s > ./docs/synopses.txt + @echo +$(OBJS): + $(CC) $(LDADD) $(CFLAGS) `echo $@ | sed 's/\.o/\.c/'` -o $@ +clean: + find ./ -name 1 -exec rm -f {} \; + find ./ -name '*.o' -exec rm -f {} \; + find ./ -name '*.bin' -exec rm -f {} \; + find . -name '*.core' -exec rm -f {} \; + if [ -f $(BIN) ]; then rm -f $(BIN); fi +build: ctags + @awk '{ \ + if ($$2 == "BUILDNR") print $$1,$$2,$$3+1; \ + else if ($$2 ~ /OS_/) printf("%s OS_%s\n", $$1, \ + toupper("$(OSYSTEM)")); \ + else print }' \ + src/build.h >.tmp && mv -f .tmp src/build.h +printbuild: + @awk '$$2 == "BUILDNR" { printf("%d\n", \ + $$3); exit(0); }' src/build.h +ctags: + @# Generating Source-Tags for Vim + ctags `find . -name '*.c'` +style: astyle check +astyle: + find ./src -name '*.[ch]' -exec sh -c 'astyle -s3 {}; rm -f {}.orig' \; +check: + for f in `find ./src -name '*.[ch]'`; do awk -v f=$$f \ + '{ if (length($$0) > 80) { \ + printf "Max line length reached @ %s:%d => %d\n", \ + f, NR, length($$0) } }' $$f; done +touch: + find ./src -name '*.c' -exec touch {} \; +stats: + @sh -c 'wc=`find ./src -name "*.[ch]" | xargs wc -l`; \ + echo "===> Num of C source files : `echo \"$$wc\" | \ + grep -E \"\\.(c|h)$$\" | wc -l`"; \ + echo "===> Num of C source lines : `echo \"$$wc\" | \ + tail -n 1 | sed s/total//`"' + @sh -c 'wc=`find ./examples -name "*.fy" | xargs wc -l`; \ + echo "===> Num of Fype source examples : `echo \"$$wc\" | \ + grep -E \"\\.fy$$\" | wc -l`"; \ + echo "===> Num of Fype source lines : `echo \"$$wc\" | \ + tail -n 1 | sed s/total//`"' +stats-tofile: + make stats | tee ./docs/stats.txt +test: all + cat ./tmp/test.fy > ./tmp/test.out + ./$(BIN) -V ./tmp/test.fy | tee -a ./tmp/test.out +run: + ./$(BIN) ./tmp/test.fy +core: + gdb $(BIN) $(BIN).core +newline: + @echo +examples: all + echo > ./examples/all-examples.txt + for i in ./examples/*.fy; do \ + echo "===> Running $$i"; \ + ./$(BIN) $$i; \ + cat $$i >> ./examples/all-examples.txt; \ + echo >> ./examples/all-examples.txt; \ + done +replace: + find ./src -name '*.[ch]' -exec sh -c 'sed -n "s/$(FROM)/$(INTO)/g; \ + w .tmp" {} && mv -f .tmp {}' \; +headers: + @find ./src -name '*.[ch]' -exec sh -c 'export FILE={}; \ + make header' \; +header: + @echo "===> Processing $(FILE)" + @sed -n '/*:/d; w .tmp' $(FILE) + @header=`sed 's/\(.*\)/ echo " \*: \1"/' $(HEADER)`; \ + echo '/*:*' > $(FILE); eval "$$header" >> $(FILE); \ + echo ' *:*/' >> $(FILE); cat .tmp >> $(FILE); rm -f .tmp +tar: clean + sh -c 'build=`make printbuild`;cd ../;\ + tar cvjf $(BIN)-$$build.tar.bz2 $(BIN)' +install: all + cp ./$(BIN) $(PREFIX)/bin + cp ./docs/pod/fype.1.gz $(PREFIX)/man/man1 +deinstall: + rm $(PREFIX)/bin/$(BIN) + rm $(PREFIX)/man/man1/fype.1.gz +uninstall: deinstall +pod: + @cd ./docs/pod; make clean all + diff --git a/NEW b/NEW new file mode 100644 index 0000000..1fee9a5 --- /dev/null +++ b/NEW @@ -0,0 +1,2 @@ +Undocumented new features: + undef keyword diff --git a/README b/README new file mode 100644 index 0000000..3f61d8b --- /dev/null +++ b/README @@ -0,0 +1,381 @@ +NAME + Fype is for your program execution + + Fype is free yack programed for ELF + + It's not a hype - it's Fype! + +SYNOPSES + fype [-[hsvTV]] file.fy + fype -e "fype code string;" + +ABOUT + Fype is not yet released! Lots of basic stuff is still missing! See the + TODO file of the source distribution of Fype! + + Fype is a 32 bit scripting language created for fun. You can use it and + comment on it if you like. You could also write patches and mail them to + fype at dev dot buetow dot org! Or go visit the IRC channel #coding at + irc.german-elite.net and ask rantanplan. + + Fype is developed under the BSD license. See the COPYING file which is + included in the source tree. + + Fype should be "at least as good as AWK". This does not mean it will be + a replacement for AWK but it should support functions, loops and arrays + like AWK does but with a different syntax. It should also get extension + support like AWK has. I am not talking about GNU AWK but about New AWK, + which is included in the *BSD distributions! Fype already has a few + features which are not available in AWK. However, AWK has still many + features which are not available in Fype as well ;) + + Fancy stuff like OOP or unicode or threading is not yet planed. But + fancy stuff like function pointers and closures may be considered for + one of the first releases of Fype :) + +PARSING / CODE GENERATION + The Fype syntax is very simple and is using a maximum look ahead of 1 + and a very easy top down parsing. Fype is parsing and interpreting its + code simultaneous. This means, that syntax errors are only detected + during program runtime. + +REQUIREMENTS + Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows + support is not planned. But may work using Cygwin or SFU. + + You will also need: + + GNU GCC C Compiler (gcc.gnu.org) + NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + +GETTING STARTED + Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + make + sudo make install + make clean + + Run a .fy file: + + fype test.fy + + See the ./examples subdir of the Fype source distribution for examples! + See also fype -h for a list of all options. + +DATA TYPES + Fype uses auto type conversion. However, if you want to know what's + going on you may take a look at the provided basic datatypes. + + The basic data types + *integer* + Specifies an integer number + + *double* + Specifies a double number + + *string* + Specifies a string + + *number* + May be an integer or a double number + + *any* + May be of any type above + + *void* + No type + + *identifier* + It's a variable name or a procedure name or a function name + + Explicit type conversions + (*integer*) integer *any* + Converts any type to an integer + + (*double*) double *any* + Converts any type to a double + + (*string*) string *any* + Converts any type to a string + +SYNTAX + Comments + Text from a # character until the end of the current line is considered + being a comment. Multi line comments may start with an #* and and with + an *# anywhere. Exceptions are if those signs are inside of strings. + + Statements + A Fype program is a list of statements. Each keyword, expression or + function call is part of a statement. Each statement is ended with a + semicolon. Example: + + my bar = 3, foo = 1 + 2; + say foo; + exit foo - bar; + + Paranthesis + All paranthesis of function calls are optional. They help to make the + code better readable. They also help to force precedences of + expressions. + + Scopeing + A new scope starts with an { and ends with an }. An exception is a + procedure, which does not use its own scope (see later in this manual). + Control statements and functions support scopeings. Here is a small + example how to use scopes: + + my foo = 1; + + { + # Prints out 1 + put defined foo; + { + my bar = 2; + + # Prints out 1 + put defined bar; + } + + # Prints out 0 + put defined bar; + + my baz = 3; + } + + # Prints out 0 + say defined bar; + + Control statements + Fype knows the following control statements: + + if * { * } + Runs the statements if the expression evaluates to a true value. + + ifnot * { * } + Runs the statements if the expression evaluates to a false value. + + while * { * } + Runs the statements as long as the the expression evaluates to a + true value. + + until * { * } + Runs the statements as long as the the expression evaluates to a + false value. + +VARIABLES + Variables can be defined with the my keyword. If you don't assign a + value during declaration, then it's using the default integer value 0. + Variables may be changed during program runtime. Variables may be + deleted using the undef keyword! Example of defining variables: + + my foo = 1 + 2; + say foo; + + my bar = 12, baz = foo; + say 1 + bar; + say bar; + + my baz; + say baz; # Will print out 0 + + You may use the defined keyword to check if an identifier has been + defined or not. + + ifnot defined foo { + say "No foo yet defined"; + } + + my foo = 1; + + if defined foo { + put "foo is defined and has the value "; + say foo; + } + +BUILT IN FUNCTIONS + In Fype, operators are built in functions as well. The difference is, + that they may be written in infix notation instead in front of the + arguments. The types inside the () specify the return types. + + Math + (*any*) *any* + *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* - *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* * *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* / *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + Conditional + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + + Definedness + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. + + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. + + Bitwise + Bitwise operators do not work ATM. The fix is on its way! + + (*any*) *any* << *any* + (*any*) *any* >> *any* + (*any*) *any* and *any* + (*any*) *any* or *any* + (*any*) *any* xor *any* + (*any*) not *any* + + Numeric + (*number*) neg *number* + This function returns the negative value of *any* + + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! + + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. + + # Prints out 1, because foo is not defined + if yes { say no defined foo; } + + System + (*void*) end + Exits the program with the exit status of 0 + + (*void*) exit *integer* + Exits the program with the specified exit status + + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and the + pid of the child process otherwise! Example: + + my pid = fork; + + if pid { + put "I am the parent process; child has the pid "; + say pid; + + } ifnot pid { + say "I am the child process"; + } + + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a value of + 0! Fype tries to free not needed memory asap. This may change in + future versions in order to gain faster execution of scripts! + + I/O + (*any*) put *any* + Prints out the argument + + (*any*) say *any* + Same as put, but also includes an ending newline + + (*void*) ln + Just prints a newline + +SELF DEFINING PROCEDURES AND FUNCTIONS + Procedures + A procedure can be defined with the proc keyword and deleted with the + undef keyword. A procedure does not return any value and does not + support parameter passing. It's using already defined variables (e.g. + global variables). A procedure does not have its own namespace. It's + using the calling namespace. It is possible to define new variabes + inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; + + Nested procedures + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be available + to the current scope as soon as the main procedure has run the first + time. You may use the defined keyword in order to check if a procedure + has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } + + # Here bar would produce an error because + # the proc is not yet defined! + # bar; + + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! + + Functions + A function should be defined with the func keyword and deleted with the + undef keyword. Function not yet return values (will be changed in future + versions) and supports not yet parameter passing (will be changed in + future versions). It's using local (lexical scoped) variables. If a + certain variable does not exist It's using already defined variables + (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! + + Nested functions + Nested functions work the same way the nested procedures work, with the + exception that nested functions will not be available any more after the + function has been left! + + func foo { + func bar { + say "Hello i am nested"; + } + + bar; # Calling nested + } + + foo; + bar; # Will produce an error, because bar is out of scope! + +AUTHOR + Paul C. Buetow (http://paul.buetow.org) + +WEBSITE + The Fype Language (http://fype.buetow.org) + +SEE ALSO + awk(1) cc(1) make(1) + diff --git a/TODO b/TODO new file mode 100644 index 0000000..75aafba --- /dev/null +++ b/TODO @@ -0,0 +1,11 @@ +Todo's (not in any specific order) + +Segfault: fype -e '1' +Arrays +Closures +Function arguments and return values +Interactive shell +Labels +Scanner: separate between token (e.g. allow 1+2) +String operators/functions +loop, next, break, do diff --git a/docs/header.txt b/docs/header.txt new file mode 100644 index 0000000..80e026d --- /dev/null +++ b/docs/header.txt @@ -0,0 +1,31 @@ +File: ${FILE} +A simple interpreter + +WWW : http://fype.buetow.org +E-Mail : fype@dev.buetow.org + +Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modi- +fication, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of P. B. Labs nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY Paul Buetow ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/docs/help.txt b/docs/help.txt new file mode 100644 index 0000000..4d952af --- /dev/null +++ b/docs/help.txt @@ -0,0 +1,8 @@ +Fype v0.0-devel Build 8865 +Copyright by Paul C. Buetow (2005 - 2008) + -e Executes given code string (see synopses) + -h Prints this help + -s Prints the synopsis + -v Prints the current version + -T Prints token list after scanning + -V Verbose mode: Print all possible output diff --git a/docs/pod/Makefile b/docs/pod/Makefile new file mode 100644 index 0000000..d6f56fe --- /dev/null +++ b/docs/pod/Makefile @@ -0,0 +1,19 @@ + +all: man html latex txt +html: + pod2html fype.pod > fype.html +latex: + pod2latex fype.pod > fype.tex +man: + pod2man --release "`cat ../version.txt`" --center "The Fype Users Manual Page" fype.pod > fype.man + cp fype.man fype.1 + if [ -f fype.1.gz ]; then rm fype.1.gz; fi + gzip fype.1 +txt: + pod2text fype.pod | tee ../../README > fype.txt +pdf: + pod2pdf --footer-text="This document describes `cat ../version.txt`" fype.pod > fype.pdf +clean: + for i in html tex man 1.gz pdf; do \ + if [ -f $$i ]; then rm $$i; fi \ + done diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz new file mode 100644 index 0000000..c270197 Binary files /dev/null and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html new file mode 100644 index 0000000..b47abe9 --- /dev/null +++ b/docs/pod/fype.html @@ -0,0 +1,582 @@ + + + + +NAME + + + + + + +

+ + + + + +
+

+

+

NAME

+

Fype is for your program execution

+

Fype is free yack programed for ELF

+

It's not a hype - it's Fype!

+

+

+
+

SYNOPSES

+
+
fype [-[hsvTV]] file.fy + +
fype -e ``fype code string;'' + +
+

+

+
+

ABOUT

+

Fype is not yet released! Lots of basic stuff is still missing! See the +TODO file of the source distribution of Fype!

+

Fype is a 32 bit scripting language created for fun. You can use it and comment on it if you like. You could also write patches and mail them to fype at dev dot buetow dot org! Or go visit the IRC channel #coding at irc.german-elite.net and ask rantanplan.

+

Fype is developed under the BSD license. See the COPYING file which is included in the source tree.

+

Fype should be ``at least as good as AWK''. This does not mean it will be a replacement for AWK but it should support functions, loops and arrays like AWK does but with a different syntax. It should also get extension support like AWK has. I am not talking about GNU AWK but about New AWK, which is included in the *BSD distributions! Fype already has a few features which are not available in AWK. However, AWK has still many features which are not available in Fype as well ;)

+

Fancy stuff like OOP or unicode or threading is not yet planed. But fancy stuff like function pointers and closures may be considered for one of the first releases of Fype :)

+

+

+
+

PARSING / CODE GENERATION

+

The Fype syntax is very simple and is using a maximum look ahead of 1 and a very easy top down parsing. Fype is parsing and interpreting its code simultaneous. This means, that syntax errors are only detected during program runtime.

+

+

+
+

REQUIREMENTS

+

Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU.

+

You will also need:

+
+        GNU GCC C Compiler (gcc.gnu.org)
+        NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD)
+

+

+
+

GETTING STARTED

+

Extract, compile and install Fype:

+
+        tar xvjf fype.tar.bz2
+        cd fype
+        make
+        sudo make install 
+        make clean
+

Run a .fy file:

+
+        fype test.fy
+

See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options.

+

+

+
+

DATA TYPES

+

Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes.

+

+

+

The basic data types

+
+
integer + +
+

Specifies an integer number

+
+ +
double + +
+

Specifies a double number

+
+ +
string + +
+

Specifies a string

+
+ +
number + +
+

May be an integer or a double number

+
+ +
any + +
+

May be of any type above

+
+ +
void + +
+

No type

+
+ +
identifier + +
+

It's a variable name or a procedure name or a function name

+
+ +
+

+

+

Explicit type conversions

+
+
(integer) integer any + +
+

Converts any type to an integer

+
+ +
(double) double any + +
+

Converts any type to a double

+
+ +
(string) string any + +
+

Converts any type to a string

+
+ +
+

+

+
+

SYNTAX

+

+

+

Comments

+

Text from a # character until the end of the current line is considered being a comment. Multi line comments may start with an #* and and with an *# anywhere. Exceptions are if those signs are inside of strings.

+

+

+

Statements

+

A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example:

+
+        my bar = 3, foo = 1 + 2; 
+        say foo;
+        exit foo - bar;
+

+

+

Paranthesis

+

All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.

+

+

+

Scopeing

+

A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

+
+        my foo = 1;
+
+        {
+                # Prints out 1
+                put defined foo;
+                {
+                        my bar = 2;
+
+                        # Prints out 1
+                        put defined bar;
+                }
+
+                # Prints out 0
+                put defined bar;
+
+                my baz = 3;
+        }
+
+        # Prints out 0
+        say defined bar;
+

+

+

Control statements

+

Fype knows the following control statements:

+
+
if <expression> { <statements> } + +
+

Runs the statements if the expression evaluates to a true value.

+
+ +
ifnot <expression> { <statements> } + +
+

Runs the statements if the expression evaluates to a false value.

+
+ +
while <expression> { <statements> } + +
+

Runs the statements as long as the the expression evaluates to a true value.

+
+ +
until <expression> { <statements> } + +
+

Runs the statements as long as the the expression evaluates to a false value.

+
+ +
+

+

+
+

VARIABLES

+

Variables can be defined with the my keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the undef keyword! Example of defining variables:

+
+        my foo = 1 + 2;
+        say foo;
+
+        my bar = 12, baz = foo;
+        say 1 + bar;
+        say bar;
+
+        my baz;
+        say baz; # Will print out 0
+

You may use the defined keyword to check if an identifier has been defined or +not.

+
+        ifnot defined foo {
+                say "No foo yet defined";
+        }
+
+        my foo = 1;
+
+        if defined foo {
+                put "foo is defined and has the value ";
+                say foo;
+        }
+

+

+
+

BUILT IN FUNCTIONS

+

In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types.

+

+

+

Math

+
+
(any) any + any + +
+

Special string behavior: A string will get auto convertet into an integer.

+
+ +
(any) any - any + +
+

Special string behavior: A string will get auto convertet into an integer.

+
+ +
(any) any * any + +
+

Special string behavior: A string will get auto convertet into an integer.

+
+ +
(any) any / any + +
+

Special string behavior: A string will get auto convertet into an integer.

+
+ +
+

+

+

Conditional

+
+
(integer) any == any + +
(integer) any != any + +
(integer) any <= any + +
(integer) any >= any + +
(integer) any < any + +
(integer) any > any + +
+

+

+

Definedness

+
+
(integer) defined identifier + +
+

Returns 1 if identifier has been defined. Returns 0 else.

+
+ +
(integer) undef identifier + +
+

Tries to undefine/delete the identifier. Returns 1 if success, otherwise 0 is returned.

+
+ +
+

+

+

Bitwise

+

Bitwise operators do not work ATM. The fix is on its way!

+
+
(any) any << any + +
(any) any >> any + +
(any) any and any + +
(any) any or any + +
(any) any xor any + +
(any) not any + +
+

+

+

Numeric

+
+
(number) neg number + +
+

This function returns the negative value of any

+
+ +
(integer) no [integer] + +
+

This function returns 1 if the argument is 0, otherwise it will return 0! If no +argument is given, then 0 is returned!

+
+ +
(integer) yes [integer] + +
+

This function always returns 1. The parameter is optional. +

+
+
+
+
+        # Prints out 1, because foo is not defined
+        if yes { say no defined foo; }
+
+ +
+

+

+

System

+
+
(void) end + +
+

Exits the program with the exit status of 0

+
+ +
(void) exit integer + +
+

Exits the program with the specified exit status

+
+ +
(integer) fork + +
+

Fork forks a subprocess. It returns 0 for the child process and the pid of the +child process otherwise! Example:

+
+
+
+        my pid = fork;
+
+
+
+        if pid {
+                put "I am the parent process; child has the pid ";
+                say pid;
+
+
+
+        } ifnot pid {
+                say "I am the child process";
+        }
+
+ +
(integer) gc + +
+

Executes the garbage collector and returns the number of items freed! You may +wonder why most of the time it will return a value of 0! Fype tries to free not +needed memory asap. This may change in future versions in order to gain faster +execution of scripts!

+
+ +
+

+

+

I/O

+
+
(any) put any + +
+

Prints out the argument

+
+ +
(any) say any + +
+

Same as put, but also includes an ending newline

+
+ +
(void) ln + +
+

Just prints a newline

+
+ +
+

+

+
+

SELF DEFINING PROCEDURES AND FUNCTIONS

+

+

+

Procedures

+

A procedure can be defined with the proc keyword and deleted with the undef keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace.

+
+        proc foo {
+                say 1 + a * 3 + b;
+                my c = 6;
+        }
+
+        my a = 2, b = 4;
+
+        foo; # Run the procedure. Print out "11\n"
+        say c; # Print out "6\n";
+

+

+

Nested procedures

+

It's possible to define procedures inside of procedures. Since procedures don't +have its own scope, nested procedures will be available to the current scope as +soon as the main procedure has run the first time. You may use the defined +keyword in order to check if a procedure has been defined or not.

+
+        proc foo {
+                say "I am foo";
+
+                undef bar;
+                proc bar {
+                        say "I am bar";
+                }
+        }
+
+        # Here bar would produce an error because 
+        # the proc is not yet defined!
+        # bar;
+
+        foo; # Here the procedure foo will define the procedure bar!
+        bar; # Now the procedure bar is defined!
+        foo; # Here the procedure foo will redefine bar again!
+

+

+

Functions

+

A function should be defined with the func keyword and deleted with the undef keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above).

+
+        func foo {
+                say 1 + a * 3 + b;
+                my c = 6;
+        }
+
+        my a = 2, b = 4;
+
+        foo; # Run the procedure. Print out "11\n"
+        say c; # Will produce an error, because c is out of scoped!
+

+

+

Nested functions

+

Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left!

+
+        func foo {
+                func bar {
+                        say "Hello i am nested";
+                }
+
+                bar; # Calling nested
+        }
+
+        foo;
+        bar; # Will produce an error, because bar is out of scope!
+

+

+
+

AUTHOR

+

Paul C. Buetow (http://paul.buetow.org)

+

+

+
+

WEBSITE

+

The Fype Language (http://fype.buetow.org)

+

+

+
+

SEE ALSO

+

awk(1) cc(1) make(1) + +

+ + + + diff --git a/docs/pod/fype.man b/docs/pod/fype.man new file mode 100644 index 0000000..0a04c66 --- /dev/null +++ b/docs/pod/fype.man @@ -0,0 +1,555 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "FYPE 1" +.TH FYPE 1 "2008-04-25" "Fype v0.0-devel Build 8860" "The Fype Users Manual Page" +.SH "NAME" +\&\fBFype\fR is \fBf\fRor \fBy\fRour \fBp\fRrogram \fBe\fRxecution +.PP +\&\fBFype\fR is \fBf\fRree \fBy\fRack \fBp\fRrogramed for \fBE\fRLF +.PP +It's not a hype \- it's Fype! +.SH "SYNOPSES" +.IX Header "SYNOPSES" +.IP "\fBfype\fR [\-[hsvTV]] file.fy" 4 +.IX Item "fype [-[hsvTV]] file.fy" +.PD 0 +.ie n .IP "\fBfype\fR \-e ""fype code string;""" 4 +.el .IP "\fBfype\fR \-e ``fype code string;''" 4 +.IX Item "fype -e fype code string;" +.PD +.SH "ABOUT" +.IX Header "ABOUT" +Fype is not yet released! Lots of basic stuff is still missing! See the +\&\s-1TODO\s0 file of the source distribution of Fype! +.PP +Fype is a 32 bit scripting language created for fun. You can use it and comment on it if you like. You could also write patches and mail them to fype at dev dot buetow dot org! Or go visit the \s-1IRC\s0 channel #coding at irc.german\-elite.net and ask rantanplan. +.PP +Fype is developed under the \s-1BSD\s0 license. See the \s-1COPYING\s0 file which is included in the source tree. +.PP +Fype should be \*(L"at least as good as \s-1AWK\s0\*(R". This does not mean it will be a replacement for \s-1AWK\s0 but it should support functions, loops and arrays like \s-1AWK\s0 does but with a different syntax. It should also get extension support like \s-1AWK\s0 has. I am not talking about \s-1GNU\s0 \s-1AWK\s0 but about New \s-1AWK\s0, which is included in the *BSD distributions! Fype already has a few features which are not available in \s-1AWK\s0. However, \s-1AWK\s0 has still many features which are not available in Fype as well ;) +.PP +Fancy stuff like \s-1OOP\s0 or unicode or threading is not yet planed. But fancy stuff like function pointers and closures may be considered for one of the first releases of Fype :) +.SH "PARSING / CODE GENERATION" +.IX Header "PARSING / CODE GENERATION" +The Fype syntax is very simple and is using a maximum look ahead of 1 and a very easy top down parsing. Fype is parsing and interpreting its code simultaneous. This means, that syntax errors are only detected during program runtime. +.SH "REQUIREMENTS" +.IX Header "REQUIREMENTS" +Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or \s-1SFU\s0. +.PP +You will also need: +.PP +.Vb 2 +\& GNU GCC C Compiler (gcc.gnu.org) +\& NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) +.Ve +.SH "GETTING STARTED" +.IX Header "GETTING STARTED" +Extract, compile and install Fype: +.PP +.Vb 5 +\& tar xvjf fype.tar.bz2 +\& cd fype +\& make +\& sudo make install +\& make clean +.Ve +.PP +Run a .fy file: +.PP +.Vb 1 +\& fype test.fy +.Ve +.PP +See the ./examples subdir of the Fype source distribution for examples! See also fype \-h for a list of all options. +.SH "DATA TYPES" +.IX Header "DATA TYPES" +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. +.Sh "The basic data types" +.IX Subsection "The basic data types" +.IP "\fIinteger\fR" 4 +.IX Item "integer" +Specifies an integer number +.IP "\fIdouble\fR" 4 +.IX Item "double" +Specifies a double number +.IP "\fIstring\fR" 4 +.IX Item "string" +Specifies a string +.IP "\fInumber\fR" 4 +.IX Item "number" +May be an integer or a double number +.IP "\fIany\fR" 4 +.IX Item "any" +May be of any type above +.IP "\fIvoid\fR" 4 +.IX Item "void" +No type +.IP "\fIidentifier\fR" 4 +.IX Item "identifier" +It's a variable name or a procedure name or a function name +.Sh "Explicit type conversions" +.IX Subsection "Explicit type conversions" +.IP "(\fIinteger\fR) \fBinteger\fR \fIany\fR" 4 +.IX Item "(integer) integer any" +Converts any type to an integer +.IP "(\fIdouble\fR) \fBdouble\fR \fIany\fR" 4 +.IX Item "(double) double any" +Converts any type to a double +.IP "(\fIstring\fR) \fBstring\fR \fIany\fR" 4 +.IX Item "(string) string any" +Converts any type to a string +.SH "SYNTAX" +.IX Header "SYNTAX" +.Sh "Comments" +.IX Subsection "Comments" +Text from a \fB#\fR character until the end of the current line is considered being a comment. Multi line comments may start with an \fB#*\fR and and with an \fB*#\fR anywhere. Exceptions are if those signs are inside of strings. +.Sh "Statements" +.IX Subsection "Statements" +A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example: +.PP +.Vb 3 +\& my bar = 3, foo = 1 + 2; +\& say foo; +\& exit foo - bar; +.Ve +.Sh "Paranthesis" +.IX Subsection "Paranthesis" +All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. +.Sh "Scopeing" +.IX Subsection "Scopeing" +A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes: +.PP +.Vb 1 +\& my foo = 1; +.Ve +.PP +.Vb 5 +\& { +\& # Prints out 1 +\& put defined foo; +\& { +\& my bar = 2; +.Ve +.PP +.Vb 3 +\& # Prints out 1 +\& put defined bar; +\& } +.Ve +.PP +.Vb 2 +\& # Prints out 0 +\& put defined bar; +.Ve +.PP +.Vb 2 +\& my baz = 3; +\& } +.Ve +.PP +.Vb 2 +\& # Prints out 0 +\& say defined bar; +.Ve +.Sh "Control statements" +.IX Subsection "Control statements" +Fype knows the following control statements: +.IP "if \fI { \fI }" 4 +.IX Item "if { }" +Runs the statements if the expression evaluates to a true value. +.IP "ifnot \fI { \fI }" 4 +.IX Item "ifnot { }" +Runs the statements if the expression evaluates to a false value. +.IP "while \fI { \fI }" 4 +.IX Item "while { }" +Runs the statements as long as the the expression evaluates to a true value. +.IP "until \fI { \fI }" 4 +.IX Item "until { }" +Runs the statements as long as the the expression evaluates to a false value. +.SH "VARIABLES" +.IX Header "VARIABLES" +Variables can be defined with the \fBmy\fR keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the \fBundef\fR keyword! Example of defining variables: +.PP +.Vb 2 +\& my foo = 1 + 2; +\& say foo; +.Ve +.PP +.Vb 3 +\& my bar = 12, baz = foo; +\& say 1 + bar; +\& say bar; +.Ve +.PP +.Vb 2 +\& my baz; +\& say baz; # Will print out 0 +.Ve +.PP +You may use the \fBdefined\fR keyword to check if an identifier has been defined or +not. +.PP +.Vb 3 +\& ifnot defined foo { +\& say "No foo yet defined"; +\& } +.Ve +.PP +.Vb 1 +\& my foo = 1; +.Ve +.PP +.Vb 4 +\& if defined foo { +\& put "foo is defined and has the value "; +\& say foo; +\& } +.Ve +.SH "BUILT IN FUNCTIONS" +.IX Header "BUILT IN FUNCTIONS" +In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. +.Sh "Math" +.IX Subsection "Math" +.IP "(\fIany\fR) \fIany\fR \fB+\fR \fIany\fR" 4 +.IX Item "(any) any + any" +Special string behavior: A string will get auto convertet into an \fIinteger\fR. +.IP "(\fIany\fR) \fIany\fR \fB\-\fR \fIany\fR" 4 +.IX Item "(any) any - any" +Special string behavior: A string will get auto convertet into an \fIinteger\fR. +.IP "(\fIany\fR) \fIany\fR \fB*\fR \fIany\fR" 4 +.IX Item "(any) any * any" +Special string behavior: A string will get auto convertet into an \fIinteger\fR. +.IP "(\fIany\fR) \fIany\fR \fB/\fR \fIany\fR" 4 +.IX Item "(any) any / any" +Special string behavior: A string will get auto convertet into an \fIinteger\fR. +.Sh "Conditional" +.IX Subsection "Conditional" +.IP "(\fIinteger\fR) \fIany\fR \fB==\fR \fIany\fR" 4 +.IX Item "(integer) any == any" +.PD 0 +.IP "(\fIinteger\fR) \fIany\fR \fB!=\fR \fIany\fR" 4 +.IX Item "(integer) any != any" +.IP "(\fIinteger\fR) \fIany\fR \fB<=\fR \fIany\fR" 4 +.IX Item "(integer) any <= any" +.IP "(\fIinteger\fR) \fIany\fR \fB>=\fR \fIany\fR" 4 +.IX Item "(integer) any >= any" +.IP "(\fIinteger\fR) \fIany\fR \fB<\fR \fIany\fR" 4 +.IX Item "(integer) any < any" +.IP "(\fIinteger\fR) \fIany\fR \fB>\fR \fIany\fR" 4 +.IX Item "(integer) any > any" +.PD +.Sh "Definedness" +.IX Subsection "Definedness" +.IP "(\fIinteger\fR) \fBdefined\fR \fIidentifier\fR" 4 +.IX Item "(integer) defined identifier" +Returns 1 if \fIidentifier\fR has been defined. Returns 0 else. +.IP "(\fIinteger\fR) \fBundef\fR \fIidentifier\fR" 4 +.IX Item "(integer) undef identifier" +Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 is returned. +.Sh "Bitwise" +.IX Subsection "Bitwise" +Bitwise operators do not work \s-1ATM\s0. The fix is on its way! +.IP "(\fIany\fR) \fIany\fR \fB<<\fR \fIany\fR" 4 +.IX Item "(any) any << any" +.PD 0 +.IP "(\fIany\fR) \fIany\fR \fB>>\fR \fIany\fR" 4 +.IX Item "(any) any >> any" +.IP "(\fIany\fR) \fIany\fR \fBand\fR \fIany\fR" 4 +.IX Item "(any) any and any" +.IP "(\fIany\fR) \fIany\fR \fBor\fR \fIany\fR" 4 +.IX Item "(any) any or any" +.IP "(\fIany\fR) \fIany\fR \fBxor\fR \fIany\fR" 4 +.IX Item "(any) any xor any" +.IP "(\fIany\fR) \fBnot\fR \fIany\fR" 4 +.IX Item "(any) not any" +.PD +.Sh "Numeric" +.IX Subsection "Numeric" +.IP "(\fInumber\fR) \fBneg\fR \fInumber\fR" 4 +.IX Item "(number) neg number" +This function returns the negative value of \fIany\fR +.IP "(\fIinteger\fR) \fBno\fR [\fIinteger\fR]" 4 +.IX Item "(integer) no [integer]" +This function returns 1 if the argument is 0, otherwise it will return 0! If no +argument is given, then 0 is returned! +.IP "(\fIinteger\fR) \fByes\fR [\fIinteger\fR]" 4 +.IX Item "(integer) yes [integer]" +This function always returns 1. The parameter is optional. +.Sp +.Vb 2 +\& # Prints out 1, because foo is not defined +\& if yes { say no defined foo; } +.Ve +.Sh "System" +.IX Subsection "System" +.IP "(\fIvoid\fR) \fBend\fR" 4 +.IX Item "(void) end" +Exits the program with the exit status of 0 +.IP "(\fIvoid\fR) \fBexit\fR \fIinteger\fR" 4 +.IX Item "(void) exit integer" +Exits the program with the specified exit status +.IP "(\fIinteger\fR) \fBfork\fR" 4 +.IX Item "(integer) fork" +Fork forks a subprocess. It returns 0 for the child process and the pid of the +child process otherwise! Example: +.Sp +.Vb 1 +\& my pid = fork; +.Ve +.Sp +.Vb 3 +\& if pid { +\& put "I am the parent process; child has the pid "; +\& say pid; +.Ve +.Sp +.Vb 3 +\& } ifnot pid { +\& say "I am the child process"; +\& } +.Ve +.IP "(\fIinteger\fR) \fBgc\fR" 4 +.IX Item "(integer) gc" +Executes the garbage collector and returns the number of items freed! You may +wonder why most of the time it will return a value of 0! Fype tries to free not +needed memory asap. This may change in future versions in order to gain faster +execution of scripts! +.Sh "I/O" +.IX Subsection "I/O" +.IP "(\fIany\fR) \fBput\fR \fIany\fR" 4 +.IX Item "(any) put any" +Prints out the argument +.IP "(\fIany\fR) \fBsay\fR \fIany\fR" 4 +.IX Item "(any) say any" +Same as put, but also includes an ending newline +.IP "(\fIvoid\fR) \fBln\fR" 4 +.IX Item "(void) ln" +Just prints a newline +.SH "SELF DEFINING PROCEDURES AND FUNCTIONS" +.IX Header "SELF DEFINING PROCEDURES AND FUNCTIONS" +.Sh "Procedures" +.IX Subsection "Procedures" +A procedure can be defined with the \fBproc\fR keyword and deleted with the \fBundef\fR keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace. +.PP +.Vb 4 +\& proc foo { +\& say 1 + a * 3 + b; +\& my c = 6; +\& } +.Ve +.PP +.Vb 1 +\& my a = 2, b = 4; +.Ve +.PP +.Vb 2 +\& foo; # Run the procedure. Print out "11\en" +\& say c; # Print out "6\en"; +.Ve +.Sh "Nested procedures" +.IX Subsection "Nested procedures" +It's possible to define procedures inside of procedures. Since procedures don't +have its own scope, nested procedures will be available to the current scope as +soon as the main procedure has run the first time. You may use the \fBdefined\fR +keyword in order to check if a procedure has been defined or not. +.PP +.Vb 2 +\& proc foo { +\& say "I am foo"; +.Ve +.PP +.Vb 5 +\& undef bar; +\& proc bar { +\& say "I am bar"; +\& } +\& } +.Ve +.PP +.Vb 3 +\& # Here bar would produce an error because +\& # the proc is not yet defined! +\& # bar; +.Ve +.PP +.Vb 3 +\& foo; # Here the procedure foo will define the procedure bar! +\& bar; # Now the procedure bar is defined! +\& foo; # Here the procedure foo will redefine bar again! +.Ve +.Sh "Functions" +.IX Subsection "Functions" +A function should be defined with the \fBfunc\fR keyword and deleted with the \fBundef\fR keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above). +.PP +.Vb 4 +\& func foo { +\& say 1 + a * 3 + b; +\& my c = 6; +\& } +.Ve +.PP +.Vb 1 +\& my a = 2, b = 4; +.Ve +.PP +.Vb 2 +\& foo; # Run the procedure. Print out "11\en" +\& say c; # Will produce an error, because c is out of scoped! +.Ve +.Sh "Nested functions" +.IX Subsection "Nested functions" +Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left! +.PP +.Vb 4 +\& func foo { +\& func bar { +\& say "Hello i am nested"; +\& } +.Ve +.PP +.Vb 2 +\& bar; # Calling nested +\& } +.Ve +.PP +.Vb 2 +\& foo; +\& bar; # Will produce an error, because bar is out of scope! +.Ve +.SH "AUTHOR" +.IX Header "AUTHOR" +Paul C. Buetow (http://paul.buetow.org) +.SH "WEBSITE" +.IX Header "WEBSITE" +The Fype Language (http://fype.buetow.org) +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIawk\fR\|(1) \fIcc\fR\|(1) \fImake\fR\|(1) diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod new file mode 100644 index 0000000..6628322 --- /dev/null +++ b/docs/pod/fype.pod @@ -0,0 +1,446 @@ +=head1 NAME + +B is Bor Bour B

rogram Bxecution + +B is Bree Back B

rogramed for BLF + +It's not a hype - it's Fype! + +=head1 SYNOPSES + +=over + +=item B [-[hsvTV]] file.fy + +=item B -e "fype code string;" + +=back + +=head1 ABOUT + +Fype is not yet released! Lots of basic stuff is still missing! See the +TODO file of the source distribution of Fype! + +Fype is a 32 bit scripting language created for fun. You can use it and comment on it if you like. You could also write patches and mail them to fype at dev dot buetow dot org! Or go visit the IRC channel #coding at irc.german-elite.net and ask rantanplan. + +Fype is developed under the BSD license. See the COPYING file which is included in the source tree. + +Fype should be "at least as good as AWK". This does not mean it will be a replacement for AWK but it should support functions, loops and arrays like AWK does but with a different syntax. It should also get extension support like AWK has. I am not talking about GNU AWK but about New AWK, which is included in the *BSD distributions! Fype already has a few features which are not available in AWK. However, AWK has still many features which are not available in Fype as well ;) + +Fancy stuff like OOP or unicode or threading is not yet planed. But fancy stuff like function pointers and closures may be considered for one of the first releases of Fype :) + +=head1 PARSING / CODE GENERATION + +The Fype syntax is very simple and is using a maximum look ahead of 1 and a very easy top down parsing. Fype is parsing and interpreting its code simultaneous. This means, that syntax errors are only detected during program runtime. + +=head1 REQUIREMENTS + +Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. + +You will also need: + + GNU GCC C Compiler (gcc.gnu.org) + NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + +=head1 GETTING STARTED + +Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + make + sudo make install + make clean + +Run a .fy file: + + fype test.fy + +See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. + +=head1 DATA TYPES + +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. + +=head2 The basic data types + +=over + +=item I + +Specifies an integer number + +=item I + +Specifies a double number + +=item I + +Specifies a string + +=item I + +May be an integer or a double number + +=item I + +May be of any type above + +=item I + +No type + +=item I + +It's a variable name or a procedure name or a function name + +=back + +=head2 Explicit type conversions + +=over + +=item (I) B I + +Converts any type to an integer + +=item (I) B I + +Converts any type to a double + +=item (I) B I + +Converts any type to a string + +=back + +=head1 SYNTAX + +=head2 Comments + +Text from a B<#> character until the end of the current line is considered being a comment. Multi line comments may start with an B<#*> and and with an B<*#> anywhere. Exceptions are if those signs are inside of strings. + +=head2 Statements + +A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example: + + my bar = 3, foo = 1 + 2; + say foo; + exit foo - bar; + +=head2 Paranthesis + +All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. + +=head2 Scopeing + +A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes: + + my foo = 1; + + { + # Prints out 1 + put defined foo; + { + my bar = 2; + + # Prints out 1 + put defined bar; + } + + # Prints out 0 + put defined bar; + + my baz = 3; + } + + # Prints out 0 + say defined bar; + +=head2 Control statements + +Fype knows the following control statements: + +=over + +=item if I<> { I<> } + +Runs the statements if the expression evaluates to a true value. + +=item ifnot I<> { I<> } + +Runs the statements if the expression evaluates to a false value. + +=item while I<> { I<> } + +Runs the statements as long as the the expression evaluates to a true value. + +=item until I<> { I<> } + +Runs the statements as long as the the expression evaluates to a false value. + +=back + +=head1 VARIABLES + +Variables can be defined with the B keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the B keyword! Example of defining variables: + + my foo = 1 + 2; + say foo; + + my bar = 12, baz = foo; + say 1 + bar; + say bar; + + my baz; + say baz; # Will print out 0 + +You may use the B keyword to check if an identifier has been defined or +not. + + ifnot defined foo { + say "No foo yet defined"; + } + + my foo = 1; + + if defined foo { + put "foo is defined and has the value "; + say foo; + } + +=head1 BUILT IN FUNCTIONS + +In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. + +=head2 Math + +=over + +=item (I) I B<+> I + +Special string behavior: A string will get auto convertet into an I. + +=item (I) I B<-> I + +Special string behavior: A string will get auto convertet into an I. + +=item (I) I B<*> I + +Special string behavior: A string will get auto convertet into an I. + +=item (I) I B I + +Special string behavior: A string will get auto convertet into an I. + +=back + +=head2 Conditional + +=over + +=item (I) I B<==> I + +=item (I) I B I + +=item (I) I B<<=> I + +=item (I) I B=> I + +=item (I) I B<<> I + +=item (I) I B> I + +=back + +=head2 Definedness + +=over + +=item (I) B I + +Returns 1 if I has been defined. Returns 0 else. + +=item (I) B I + +Tries to undefine/delete the I. Returns 1 if success, otherwise 0 is returned. + +=back + +=head2 Bitwise + +Bitwise operators do not work ATM. The fix is on its way! + +=over + +=item (I) I B<<<> I + +=item (I) I BE> I + +=item (I) I B I + +=item (I) I B I + +=item (I) I B I + +=item (I) B I + +=back + +=head2 Numeric + +=over + +=item (I) B I + +This function returns the negative value of I + +=item (I) B [I] + +This function returns 1 if the argument is 0, otherwise it will return 0! If no +argument is given, then 0 is returned! + +=item (I) B [I] + +This function always returns 1. The parameter is optional. + + # Prints out 1, because foo is not defined + if yes { say no defined foo; } + +=back + +=head2 System + +=over + +=item (I) B + +Exits the program with the exit status of 0 + +=item (I) B I + +Exits the program with the specified exit status + +=item (I) B + +Fork forks a subprocess. It returns 0 for the child process and the pid of the +child process otherwise! Example: + + my pid = fork; + + if pid { + put "I am the parent process; child has the pid "; + say pid; + + } ifnot pid { + say "I am the child process"; + } + +=item (I) B + +Executes the garbage collector and returns the number of items freed! You may +wonder why most of the time it will return a value of 0! Fype tries to free not +needed memory asap. This may change in future versions in order to gain faster +execution of scripts! + +=back + +=head2 I/O + +=over + +=item (I) B I + +Prints out the argument + +=item (I) B I + +Same as put, but also includes an ending newline + +=item (I) B + +Just prints a newline + +=back + +=head1 SELF DEFINING PROCEDURES AND FUNCTIONS + +=head2 Procedures + +A procedure can be defined with the B keyword and deleted with the B keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; + +=head2 Nested procedures + +It's possible to define procedures inside of procedures. Since procedures don't +have its own scope, nested procedures will be available to the current scope as +soon as the main procedure has run the first time. You may use the B +keyword in order to check if a procedure has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } + + # Here bar would produce an error because + # the proc is not yet defined! + # bar; + + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! + +=head2 Functions + +A function should be defined with the B keyword and deleted with the B keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! + +=head2 Nested functions + +Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left! + + func foo { + func bar { + say "Hello i am nested"; + } + + bar; # Calling nested + } + + foo; + bar; # Will produce an error, because bar is out of scope! + +=head1 AUTHOR + +Paul C. Buetow (http://paul.buetow.org) + +=head1 WEBSITE + +The Fype Language (http://fype.buetow.org) + +=head1 SEE ALSO + +awk(1) cc(1) make(1) + diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex new file mode 100644 index 0000000..a14a509 --- /dev/null +++ b/docs/pod/fype.tex @@ -0,0 +1,503 @@ +\section{NAME\label{NAME}\index{NAME}} + + +\textbf{Fype} is \textbf{f}or \textbf{y}our \textbf{p}rogram \textbf{e}xecution + + + +\textbf{Fype} is \textbf{f}ree \textbf{y}ack \textbf{p}rogramed for \textbf{E}LF + + + +It's not a hype - it's Fype! + +\section{SYNOPSES\label{SYNOPSES}\index{SYNOPSES}} +\begin{description} + +\item[{\textbf{fype} [-[hsvTV]] file.fy}] \mbox{} +\item[{\textbf{fype} -e "fype code string;"}] \mbox{}\end{description} +\section{ABOUT\label{ABOUT}\index{ABOUT}} + + +Fype is not yet released! Lots of basic stuff is still missing! See the +TODO file of the source distribution of Fype! + + + +Fype is a 32 bit scripting language created for fun. You can use it and comment on it if you like. You could also write patches and mail them to fype at dev dot buetow dot org! Or go visit the IRC channel \#coding at irc.german-elite.net and ask rantanplan. + + + +Fype is developed under the BSD license. See the COPYING file which is included in the source tree. + + + +Fype should be "at least as good as AWK". This does not mean it will be a replacement for AWK but it should support functions, loops and arrays like AWK does but with a different syntax. It should also get extension support like AWK has. I am not talking about GNU AWK but about New AWK, which is included in the *BSD distributions! Fype already has a few features which are not available in AWK. However, AWK has still many features which are not available in Fype as well ;) + + + +Fancy stuff like OOP or unicode or threading is not yet planed. But fancy stuff like function pointers and closures may be considered for one of the first releases of Fype :) + +\section{PARSING / CODE GENERATION\label{PARSING_CODE_GENERATION}\index{PARSING / CODE GENERATION}} + + +The Fype syntax is very simple and is using a maximum look ahead of 1 and a very easy top down parsing. Fype is parsing and interpreting its code simultaneous. This means, that syntax errors are only detected during program runtime. + +\section{REQUIREMENTS\label{REQUIREMENTS}\index{REQUIREMENTS}} + + +Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. + + + +You will also need: + +\begin{verbatim} + GNU GCC C Compiler (gcc.gnu.org) + NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) +\end{verbatim} +\section{GETTING STARTED\label{GETTING_STARTED}\index{GETTING STARTED}} + + +Extract, compile and install Fype: + +\begin{verbatim} + tar xvjf fype.tar.bz2 + cd fype + make + sudo make install + make clean +\end{verbatim} + + +Run a .fy file: + +\begin{verbatim} + fype test.fy +\end{verbatim} + + +See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. + +\section{DATA TYPES\label{DATA_TYPES}\index{DATA TYPES}} + + +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. + +\subsection*{The basic data types\label{The_basic_data_types}\index{The basic data types}} +\begin{description} + +\item[{\textit{integer}}] \mbox{} + +Specifies an integer number + + +\item[{\textit{double}}] \mbox{} + +Specifies a double number + + +\item[{\textit{string}}] \mbox{} + +Specifies a string + + +\item[{\textit{number}}] \mbox{} + +May be an integer or a double number + + +\item[{\textit{any}}] \mbox{} + +May be of any type above + + +\item[{\textit{void}}] \mbox{} + +No type + + +\item[{\textit{identifier}}] \mbox{} + +It's a variable name or a procedure name or a function name + +\end{description} +\subsection*{Explicit type conversions\label{Explicit_type_conversions}\index{Explicit type conversions}} +\begin{description} + +\item[{(\textit{integer}) \textbf{integer} \textit{any}}] \mbox{} + +Converts any type to an integer + + +\item[{(\textit{double}) \textbf{double} \textit{any}}] \mbox{} + +Converts any type to a double + + +\item[{(\textit{string}) \textbf{string} \textit{any}}] \mbox{} + +Converts any type to a string + +\end{description} +\section{SYNTAX\label{SYNTAX}\index{SYNTAX}} +\subsection*{Comments\label{Comments}\index{Comments}} + + +Text from a \textbf{\#} character until the end of the current line is considered being a comment. Multi line comments may start with an \textbf{\#*} and and with an \textbf{*\#} anywhere. Exceptions are if those signs are inside of strings. + +\subsection*{Statements\label{Statements}\index{Statements}} + + +A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example: + +\begin{verbatim} + my bar = 3, foo = 1 + 2; + say foo; + exit foo - bar; +\end{verbatim} +\subsection*{Paranthesis\label{Paranthesis}\index{Paranthesis}} + + +All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. + +\subsection*{Scopeing\label{Scopeing}\index{Scopeing}} + + +A new scope starts with an \{ and ends with an \}. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes: + +\begin{verbatim} + my foo = 1; +\end{verbatim} +\begin{verbatim} + { + # Prints out 1 + put defined foo; + { + my bar = 2; +\end{verbatim} +\begin{verbatim} + # Prints out 1 + put defined bar; + } +\end{verbatim} +\begin{verbatim} + # Prints out 0 + put defined bar; +\end{verbatim} +\begin{verbatim} + my baz = 3; + } +\end{verbatim} +\begin{verbatim} + # Prints out 0 + say defined bar; +\end{verbatim} +\subsection*{Control statements\label{Control_statements}\index{Control statements}} + + +Fype knows the following control statements: + +\begin{description} + +\item[{if \textit{$<$expression}$>$ \{ \textit{$<$statements}$>$ \}}] \mbox{} + +Runs the statements if the expression evaluates to a true value. + + +\item[{ifnot \textit{$<$expression}$>$ \{ \textit{$<$statements}$>$ \}}] \mbox{} + +Runs the statements if the expression evaluates to a false value. + + +\item[{while \textit{$<$expression}$>$ \{ \textit{$<$statements}$>$ \}}] \mbox{} + +Runs the statements as long as the the expression evaluates to a true value. + + +\item[{until \textit{$<$expression}$>$ \{ \textit{$<$statements}$>$ \}}] \mbox{} + +Runs the statements as long as the the expression evaluates to a false value. + +\end{description} +\section{VARIABLES\label{VARIABLES}\index{VARIABLES}} + + +Variables can be defined with the \textbf{my} keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the \textbf{undef} keyword! Example of defining variables: + +\begin{verbatim} + my foo = 1 + 2; + say foo; +\end{verbatim} +\begin{verbatim} + my bar = 12, baz = foo; + say 1 + bar; + say bar; +\end{verbatim} +\begin{verbatim} + my baz; + say baz; # Will print out 0 +\end{verbatim} + + +You may use the \textbf{defined} keyword to check if an identifier has been defined or +not. + +\begin{verbatim} + ifnot defined foo { + say "No foo yet defined"; + } +\end{verbatim} +\begin{verbatim} + my foo = 1; +\end{verbatim} +\begin{verbatim} + if defined foo { + put "foo is defined and has the value "; + say foo; + } +\end{verbatim} +\section{BUILT IN FUNCTIONS\label{BUILT_IN_FUNCTIONS}\index{BUILT IN FUNCTIONS}} + + +In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. + +\subsection*{Math\label{Math}\index{Math}} +\begin{description} + +\item[{(\textit{any}) \textit{any} \textbf{+} \textit{any}}] \mbox{} + +Special string behavior: A string will get auto convertet into an \textit{integer}. + + +\item[{(\textit{any}) \textit{any} \textbf{-} \textit{any}}] \mbox{} + +Special string behavior: A string will get auto convertet into an \textit{integer}. + + +\item[{(\textit{any}) \textit{any} \textbf{*} \textit{any}}] \mbox{} + +Special string behavior: A string will get auto convertet into an \textit{integer}. + + +\item[{(\textit{any}) \textit{any} \textbf{/} \textit{any}}] \mbox{} + +Special string behavior: A string will get auto convertet into an \textit{integer}. + +\end{description} +\subsection*{Conditional\label{Conditional}\index{Conditional}} +\begin{description} + +\item[{(\textit{integer}) \textit{any} \textbf{==}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{!=}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{$<$=}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{$>$=}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{$<$}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{$>$}}] \textbf{\textit{any}}\end{description} +\subsection*{Definedness\label{Definedness}\index{Definedness}} +\begin{description} + +\item[{(\textit{integer}) \textbf{defined} \textit{identifier}}] \mbox{} + +Returns 1 if \textit{identifier} has been defined. Returns 0 else. + + +\item[{(\textit{integer}) \textbf{undef} \textit{identifier}}] \mbox{} + +Tries to undefine/delete the \textit{identifier}. Returns 1 if success, otherwise 0 is returned. + +\end{description} +\subsection*{Bitwise\label{Bitwise}\index{Bitwise}} + + +Bitwise operators do not work ATM. The fix is on its way! + +\begin{description} + +\item[{(\textit{any}) \textit{any} \textbf{$<$$<$}}] \textbf{\textit{any}} +\item[{(\textit{any}) \textit{any} \textbf{$>$$>$}}] \textbf{\textit{any}} +\item[{(\textit{any}) \textit{any} \textbf{and}}] \textbf{\textit{any}} +\item[{(\textit{any}) \textit{any} \textbf{or}}] \textbf{\textit{any}} +\item[{(\textit{any}) \textit{any} \textbf{xor}}] \textbf{\textit{any}} +\item[{(\textit{any}) \textbf{not} \textit{any}}] \mbox{}\end{description} +\subsection*{Numeric\label{Numeric}\index{Numeric}} +\begin{description} + +\item[{(\textit{number}) \textbf{neg} \textit{number}}] \mbox{} + +This function returns the negative value of \textit{any} + + +\item[{(\textit{integer}) \textbf{no} [\textit{integer}]}] \mbox{} + +This function returns 1 if the argument is 0, otherwise it will return 0! If no +argument is given, then 0 is returned! + + +\item[{(\textit{integer}) \textbf{yes} [\textit{integer}]}] \mbox{} + +This function always returns 1. The parameter is optional. + +\begin{verbatim} + # Prints out 1, because foo is not defined + if yes { say no defined foo; } +\end{verbatim} +\end{description} +\subsection*{System\label{System}\index{System}} +\begin{description} + +\item[{(\textit{void}) \textbf{end}}] \mbox{} + +Exits the program with the exit status of 0 + + +\item[{(\textit{void}) \textbf{exit} \textit{integer}}] \mbox{} + +Exits the program with the specified exit status + + +\item[{(\textit{integer}) \textbf{fork}}] \mbox{} + +Fork forks a subprocess. It returns 0 for the child process and the pid of the +child process otherwise! Example: + +\begin{verbatim} + my pid = fork; +\end{verbatim} +\begin{verbatim} + if pid { + put "I am the parent process; child has the pid "; + say pid; +\end{verbatim} +\begin{verbatim} + } ifnot pid { + say "I am the child process"; + } +\end{verbatim} + +\item[{(\textit{integer}) \textbf{gc}}] \mbox{} + +Executes the garbage collector and returns the number of items freed! You may +wonder why most of the time it will return a value of 0! Fype tries to free not +needed memory asap. This may change in future versions in order to gain faster +execution of scripts! + +\end{description} +\subsection*{I/O\label{I_O}\index{I/O}} +\begin{description} + +\item[{(\textit{any}) \textbf{put} \textit{any}}] \mbox{} + +Prints out the argument + + +\item[{(\textit{any}) \textbf{say} \textit{any}}] \mbox{} + +Same as put, but also includes an ending newline + + +\item[{(\textit{void}) \textbf{ln}}] \mbox{} + +Just prints a newline + +\end{description} +\section{SELF DEFINING PROCEDURES AND FUNCTIONS\label{SELF_DEFINING_PROCEDURES_AND_FUNCTIONS}\index{SELF DEFINING PROCEDURES AND FUNCTIONS}} +\subsection*{Procedures\label{Procedures}\index{Procedures}} + + +A procedure can be defined with the \textbf{proc} keyword and deleted with the \textbf{undef} keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace. + +\begin{verbatim} + proc foo { + say 1 + a * 3 + b; + my c = 6; + } +\end{verbatim} +\begin{verbatim} + my a = 2, b = 4; +\end{verbatim} +\begin{verbatim} + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; +\end{verbatim} +\subsection*{Nested procedures\label{Nested_procedures}\index{Nested procedures}} + + +It's possible to define procedures inside of procedures. Since procedures don't +have its own scope, nested procedures will be available to the current scope as +soon as the main procedure has run the first time. You may use the \textbf{defined} +keyword in order to check if a procedure has been defined or not. + +\begin{verbatim} + proc foo { + say "I am foo"; +\end{verbatim} +\begin{verbatim} + undef bar; + proc bar { + say "I am bar"; + } + } +\end{verbatim} +\begin{verbatim} + # Here bar would produce an error because + # the proc is not yet defined! + # bar; +\end{verbatim} +\begin{verbatim} + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! +\end{verbatim} +\subsection*{Functions\label{Functions}\index{Functions}} + + +A function should be defined with the \textbf{func} keyword and deleted with the \textbf{undef} keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above). + +\begin{verbatim} + func foo { + say 1 + a * 3 + b; + my c = 6; + } +\end{verbatim} +\begin{verbatim} + my a = 2, b = 4; +\end{verbatim} +\begin{verbatim} + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! +\end{verbatim} +\subsection*{Nested functions\label{Nested_functions}\index{Nested functions}} + + +Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left! + +\begin{verbatim} + func foo { + func bar { + say "Hello i am nested"; + } +\end{verbatim} +\begin{verbatim} + bar; # Calling nested + } +\end{verbatim} +\begin{verbatim} + foo; + bar; # Will produce an error, because bar is out of scope! +\end{verbatim} +\section{AUTHOR\label{AUTHOR}\index{AUTHOR}} + + +Paul C. Buetow (http://paul.buetow.org) + +\section{WEBSITE\label{WEBSITE}\index{WEBSITE}} + + +The Fype Language (http://fype.buetow.org) + +\section{SEE ALSO\label{SEE_ALSO}\index{SEE ALSO}} + + +awk(1) cc(1) make(1) + diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt new file mode 100644 index 0000000..3f61d8b --- /dev/null +++ b/docs/pod/fype.txt @@ -0,0 +1,381 @@ +NAME + Fype is for your program execution + + Fype is free yack programed for ELF + + It's not a hype - it's Fype! + +SYNOPSES + fype [-[hsvTV]] file.fy + fype -e "fype code string;" + +ABOUT + Fype is not yet released! Lots of basic stuff is still missing! See the + TODO file of the source distribution of Fype! + + Fype is a 32 bit scripting language created for fun. You can use it and + comment on it if you like. You could also write patches and mail them to + fype at dev dot buetow dot org! Or go visit the IRC channel #coding at + irc.german-elite.net and ask rantanplan. + + Fype is developed under the BSD license. See the COPYING file which is + included in the source tree. + + Fype should be "at least as good as AWK". This does not mean it will be + a replacement for AWK but it should support functions, loops and arrays + like AWK does but with a different syntax. It should also get extension + support like AWK has. I am not talking about GNU AWK but about New AWK, + which is included in the *BSD distributions! Fype already has a few + features which are not available in AWK. However, AWK has still many + features which are not available in Fype as well ;) + + Fancy stuff like OOP or unicode or threading is not yet planed. But + fancy stuff like function pointers and closures may be considered for + one of the first releases of Fype :) + +PARSING / CODE GENERATION + The Fype syntax is very simple and is using a maximum look ahead of 1 + and a very easy top down parsing. Fype is parsing and interpreting its + code simultaneous. This means, that syntax errors are only detected + during program runtime. + +REQUIREMENTS + Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows + support is not planned. But may work using Cygwin or SFU. + + You will also need: + + GNU GCC C Compiler (gcc.gnu.org) + NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + +GETTING STARTED + Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + make + sudo make install + make clean + + Run a .fy file: + + fype test.fy + + See the ./examples subdir of the Fype source distribution for examples! + See also fype -h for a list of all options. + +DATA TYPES + Fype uses auto type conversion. However, if you want to know what's + going on you may take a look at the provided basic datatypes. + + The basic data types + *integer* + Specifies an integer number + + *double* + Specifies a double number + + *string* + Specifies a string + + *number* + May be an integer or a double number + + *any* + May be of any type above + + *void* + No type + + *identifier* + It's a variable name or a procedure name or a function name + + Explicit type conversions + (*integer*) integer *any* + Converts any type to an integer + + (*double*) double *any* + Converts any type to a double + + (*string*) string *any* + Converts any type to a string + +SYNTAX + Comments + Text from a # character until the end of the current line is considered + being a comment. Multi line comments may start with an #* and and with + an *# anywhere. Exceptions are if those signs are inside of strings. + + Statements + A Fype program is a list of statements. Each keyword, expression or + function call is part of a statement. Each statement is ended with a + semicolon. Example: + + my bar = 3, foo = 1 + 2; + say foo; + exit foo - bar; + + Paranthesis + All paranthesis of function calls are optional. They help to make the + code better readable. They also help to force precedences of + expressions. + + Scopeing + A new scope starts with an { and ends with an }. An exception is a + procedure, which does not use its own scope (see later in this manual). + Control statements and functions support scopeings. Here is a small + example how to use scopes: + + my foo = 1; + + { + # Prints out 1 + put defined foo; + { + my bar = 2; + + # Prints out 1 + put defined bar; + } + + # Prints out 0 + put defined bar; + + my baz = 3; + } + + # Prints out 0 + say defined bar; + + Control statements + Fype knows the following control statements: + + if * { * } + Runs the statements if the expression evaluates to a true value. + + ifnot * { * } + Runs the statements if the expression evaluates to a false value. + + while * { * } + Runs the statements as long as the the expression evaluates to a + true value. + + until * { * } + Runs the statements as long as the the expression evaluates to a + false value. + +VARIABLES + Variables can be defined with the my keyword. If you don't assign a + value during declaration, then it's using the default integer value 0. + Variables may be changed during program runtime. Variables may be + deleted using the undef keyword! Example of defining variables: + + my foo = 1 + 2; + say foo; + + my bar = 12, baz = foo; + say 1 + bar; + say bar; + + my baz; + say baz; # Will print out 0 + + You may use the defined keyword to check if an identifier has been + defined or not. + + ifnot defined foo { + say "No foo yet defined"; + } + + my foo = 1; + + if defined foo { + put "foo is defined and has the value "; + say foo; + } + +BUILT IN FUNCTIONS + In Fype, operators are built in functions as well. The difference is, + that they may be written in infix notation instead in front of the + arguments. The types inside the () specify the return types. + + Math + (*any*) *any* + *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* - *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* * *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + (*any*) *any* / *any* + Special string behavior: A string will get auto convertet into an + *integer*. + + Conditional + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + + Definedness + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. + + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. + + Bitwise + Bitwise operators do not work ATM. The fix is on its way! + + (*any*) *any* << *any* + (*any*) *any* >> *any* + (*any*) *any* and *any* + (*any*) *any* or *any* + (*any*) *any* xor *any* + (*any*) not *any* + + Numeric + (*number*) neg *number* + This function returns the negative value of *any* + + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! + + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. + + # Prints out 1, because foo is not defined + if yes { say no defined foo; } + + System + (*void*) end + Exits the program with the exit status of 0 + + (*void*) exit *integer* + Exits the program with the specified exit status + + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and the + pid of the child process otherwise! Example: + + my pid = fork; + + if pid { + put "I am the parent process; child has the pid "; + say pid; + + } ifnot pid { + say "I am the child process"; + } + + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a value of + 0! Fype tries to free not needed memory asap. This may change in + future versions in order to gain faster execution of scripts! + + I/O + (*any*) put *any* + Prints out the argument + + (*any*) say *any* + Same as put, but also includes an ending newline + + (*void*) ln + Just prints a newline + +SELF DEFINING PROCEDURES AND FUNCTIONS + Procedures + A procedure can be defined with the proc keyword and deleted with the + undef keyword. A procedure does not return any value and does not + support parameter passing. It's using already defined variables (e.g. + global variables). A procedure does not have its own namespace. It's + using the calling namespace. It is possible to define new variabes + inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; + + Nested procedures + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be available + to the current scope as soon as the main procedure has run the first + time. You may use the defined keyword in order to check if a procedure + has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } + + # Here bar would produce an error because + # the proc is not yet defined! + # bar; + + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! + + Functions + A function should be defined with the func keyword and deleted with the + undef keyword. Function not yet return values (will be changed in future + versions) and supports not yet parameter passing (will be changed in + future versions). It's using local (lexical scoped) variables. If a + certain variable does not exist It's using already defined variables + (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } + + my a = 2, b = 4; + + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! + + Nested functions + Nested functions work the same way the nested procedures work, with the + exception that nested functions will not be available any more after the + function has been left! + + func foo { + func bar { + say "Hello i am nested"; + } + + bar; # Calling nested + } + + foo; + bar; # Will produce an error, because bar is out of scope! + +AUTHOR + Paul C. Buetow (http://paul.buetow.org) + +WEBSITE + The Fype Language (http://fype.buetow.org) + +SEE ALSO + awk(1) cc(1) make(1) + diff --git a/docs/stats.txt b/docs/stats.txt new file mode 100644 index 0000000..f9acef3 --- /dev/null +++ b/docs/stats.txt @@ -0,0 +1,4 @@ +===> Num of C source files : 42 +===> Num of C source lines : 7213 +===> Num of Fype source examples : 13 +===> Num of Fype source lines : 320 diff --git a/docs/synopses.txt b/docs/synopses.txt new file mode 100644 index 0000000..c0842aa --- /dev/null +++ b/docs/synopses.txt @@ -0,0 +1,4 @@ +Synopsis: +./fype [-[hsvTV]] file.fy +./fype -e "code string;" + (Hint: Try -h for details) diff --git a/docs/version.txt b/docs/version.txt new file mode 100644 index 0000000..7376a66 --- /dev/null +++ b/docs/version.txt @@ -0,0 +1 @@ +Fype v0.0-devel Build 8865 diff --git a/examples/broken/bitwise.fy b/examples/broken/bitwise.fy new file mode 100644 index 0000000..b124590 --- /dev/null +++ b/examples/broken/bitwise.fy @@ -0,0 +1,31 @@ +#* + * Examples of how to use bitwise operators + *# + +# Prints "01\n" +assert 0 == (put 1 and 0); +assert 1 == (say 1 and 1); + +# Prints "01\n" +assert 0 == (put 0 or 0); +assert 1 == (say 0 or 1); + +# Prints "01\n" +assert 0 == (put 1 xor 1); +assert 1 == (say 1 xor 0); + +# Prints "-1" (see "not" operator of NASM why so) +assert (neg 1) == (say not 0); + +# Prints "82\n" +assert 8 == (put 2 << 2); +assert 2 == (say 8 >> 2); + +# A bit more complex, prints "9\n" +assert 9 == (say 1 << 5 >> 5 or 2 and 5 xor 8); + +# Same result, but with parenthesis: +assert 9 == (say ((((1 << 5) >> 5) or 2) and 5) xor 8); + +# Different parenthesis, different result: "1\n" +assert 1 == (say 1 << 5 >> 5 or 2 and (5 xor 8)); diff --git a/examples/comments.fy b/examples/comments.fy new file mode 100644 index 0000000..216e41b --- /dev/null +++ b/examples/comments.fy @@ -0,0 +1,21 @@ +#* + * Simple examples how to write comments + *# + +# This is a single lined comment + +say 1 + 1; # This is a comment at the end of the line + +say 1 #* This is an embedded comment *# + 1; + +#* This is + a + multiline + comment *# + +#* + * This is + * a nicer looking + * multiline comment + *# + diff --git a/examples/conditionals.fy b/examples/conditionals.fy new file mode 100644 index 0000000..1260ae2 --- /dev/null +++ b/examples/conditionals.fy @@ -0,0 +1,41 @@ +#* + * Simple conditional tests + *# + +# "0010\n" +assert 0 == (put 1 < 1); +assert 0 == (put 1 < 0); +assert 1 == (put 0 < 1); +assert 0 == (say 0 < 0); + +# "0100\n" +assert 0 == (put 1 > 1); +assert 1 == (put 1 > 0); +assert 0 == (put 0 > 1); +assert 0 == (say 0 > 0); + +# "1001\n" +assert 1 == (put 1 == 1); +assert 0 == (put 1 == 0); +assert 0 == (put 0 == 1); +assert 1 == (say 0 == 0); + +# "0110\n" +assert 0 == (put 1 != 1); +assert 1 == (put 1 != 0); +assert 1 == (put 0 != 1); +assert 0 == (say 0 != 0); + +# "1011\n" +assert 1 == (put 1 <= 1); +assert 0 == (put 1 <= 0); +assert 1 == (put 0 <= 1); +assert 1 == (say 0 <= 0); + +## "1101\n" +assert 1 == (put 1 >= 1); +assert 1 == (put 1 >= 0); +assert 0 == (put 0 >= 1); +assert 1 == (say 0 >= 0); + + diff --git a/examples/control.fy b/examples/control.fy new file mode 100644 index 0000000..0deac78 --- /dev/null +++ b/examples/control.fy @@ -0,0 +1,32 @@ +#* + * Examples of how to use control statements + *# + +if 1 { + say "if 1"; +} + +ifnot 0 == 1 { + say "ifnot 0 == 1"; +} + +# Calculate 10! + +my n = 10, fac = 0; + +while n > 1 { + ifnot fac { + fac = 1; + } + say fac = (fac * n); + decr n; +} + +# Count up to 10 + +n = 0; + +until n == 10 { + say incr n; +} + diff --git a/examples/expressions.fy b/examples/expressions.fy new file mode 100644 index 0000000..93a278f --- /dev/null +++ b/examples/expressions.fy @@ -0,0 +1,31 @@ +#* + * Simple expression tests + *# + +# Result 10 +assert 10 == say (8 / 2) + 2 * 3; + +# Result 12 +assert 12 == say 2 * (4 + 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 46 +assert 46 == say "12" + "34"; + +# Result 1231 +assert 1231 == say "1234" - "3"; + +# Result 24 +assert "24" == say "2ab" * "12"; + +# Result 5.0 +assert 5 == say "10 bla" / 2; + diff --git a/examples/fork.fy b/examples/fork.fy new file mode 100644 index 0000000..c49c878 --- /dev/null +++ b/examples/fork.fy @@ -0,0 +1,14 @@ +#* + * Examples of how to use fork + *# + +my pid = fork; + +if pid { + put "I am the parent process and the child has the pid "; + say pid; +} + +ifnot pid { + say "I am the child process"; +} diff --git a/examples/functions.fy b/examples/functions.fy new file mode 100644 index 0000000..15856a0 --- /dev/null +++ b/examples/functions.fy @@ -0,0 +1,25 @@ +#* + * Examples of how to use functions + *# + +func foo { + say 1 + a * 3 + b; + + func bar { + say "Hello i am nested"; + } + + bar; # Calling nested +} + +my a = 2, b = 4; # Create global variables +foo; +assert 0 == (defined bar); # bar is not available anymore + +func baz { + say "I am baz"; + undef baz; +} + +baz; # Baz deletes itself +assert 0 == (defined baz); # baz is not available anymore diff --git a/examples/inlinefunctions.fy b/examples/inlinefunctions.fy new file mode 100644 index 0000000..81848ce --- /dev/null +++ b/examples/inlinefunctions.fy @@ -0,0 +1,20 @@ +#* + * Simple builtin function tests + *# + +# Print "-20\n" +assert (neg 20) == (say neg 20); + +# Print "30\n" +assert 30 == (say 10 - neg 20); + +# Print "-30\n" +assert (neg 30) == (say neg neg neg 10 - neg 20); + +# Print "Hello\n" +put "Hello"; +ln; + +# Exit with exit code 0 +exit 10 + 10 - 5 - 15; + diff --git a/examples/io.fy b/examples/io.fy new file mode 100644 index 0000000..fda514d --- /dev/null +++ b/examples/io.fy @@ -0,0 +1,13 @@ +#* + * Simple I/O examples. Currently only output is supported. + *# + +# Print out 10 followed by a newline +say 10; + +# Print out 20 without a newline followed +put 20; + +# Print out a newline +ln; + diff --git a/examples/procedures.fy b/examples/procedures.fy new file mode 100644 index 0000000..cbe2121 --- /dev/null +++ b/examples/procedures.fy @@ -0,0 +1,30 @@ +#* + * Examples of how to use procedures + *# + +proc foo { + say 1 + a * 3 + b; + my c = 6; +} + +my a = 2, b = 4; + +foo; # Run the procedure. Print out "11\n" +say c; # Print out "6\n"; + +proc bar { + say "I am bar"; + + undef baz; + + proc baz { + say "I am baz"; + } +} + +# Here bar would produce an error because the proc is not yet defined! +# bar; + +bar; # Here the procedure bar will define the procedure baz! +baz; # Now the procedure baz is defined! +bar; # Here the procedure bar will redefine baz again! diff --git a/examples/scopeing.fy b/examples/scopeing.fy new file mode 100644 index 0000000..2e36c2c --- /dev/null +++ b/examples/scopeing.fy @@ -0,0 +1,27 @@ +#* + * Examples of how to use scopeing + *# + +my foo = 1; + +{ + # Prints out 1 + assert 1 == (put defined foo); + + { + my bar = 2; + + # Prints out 1 + assert 1 == (put defined bar); + } + + # Prints out 0 + assert 0 == (put defined bar); + + my baz = 3; +} + +# Prints out 0 +assert 0 == (say defined bar); + + diff --git a/examples/types.fy b/examples/types.fy new file mode 100644 index 0000000..1b9a0ac --- /dev/null +++ b/examples/types.fy @@ -0,0 +1,14 @@ +#* + * Examples how to convert types + *# + +assert 1 == say 1; # Integer output + +assert 1 == say double 1; # Double output + +assert 14 == say 1 + string 13; # Implicit type conversion to Integer + +assert 2 == say integer 2.8; # Rounds down to the Integer 2 + +assert say integer double string put say neg 12; # Nonsense but working :) + diff --git a/examples/variables.fy b/examples/variables.fy new file mode 100644 index 0000000..ac619c9 --- /dev/null +++ b/examples/variables.fy @@ -0,0 +1,21 @@ +#* + * Examples of how to define variables + *# + +# Defines the variables +my foo = 1 + 1; +my bar = 4 - 1, baz = 100 + 1, bay; + +# bay has been initialized with the default value of 0 +say bay; + +# Prints out "5\n" +assert 5 == (say foo + bar); + +# Pritns out "51101\n" +assert 51 == (put baz - 50); +assert 101 == (say baz); + +# Change the value of the variable to 99 and print it out +assert 99 == (baz = 99); +say baz; diff --git a/src/argv.c b/src/argv.c new file mode 100644 index 0000000..07a3ea0 --- /dev/null +++ b/src/argv.c @@ -0,0 +1,181 @@ +/*:* + *: File: ./src/argv.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "argv.h" + +#include +#include +#include + +#include "defines.h" +#include "data/dat.h" + +#define ARGV_OSLEN 128 + +char *BINARY; + +void +argv_run(Fype *p_fype, int i_argc, char **pc_argv) { + Dat *p_dat_string = dat_new(); + + BINARY = pc_argv[0]; + char *c_tmp = STR_NEW(ARGV_OSLEN); + c_tmp[0] = '\0'; + + p_fype->p_tupel_argv->a = p_dat_string; + p_fype->p_tupel_argv->b = c_tmp; + + if (i_argc <= 1) { + argv_synopsis(p_fype->p_tupel_argv); + exit(1); + } + + for (int i = 1; i < i_argc; ++i) { + if (pc_argv[i][0] != '-' && pc_argv[i][0] != '/') { + dat_push(p_dat_string, pc_argv[i]); + continue; + } + + int i_len = strlen(pc_argv[i]); + unsigned i_argc_left = i_argc - i + dat_size(p_dat_string); + + for (int j = 1; j < i_len; ++j) + argv_switch(pc_argv[i][j], p_fype->p_tupel_argv, i_argc_left); + } +} + +void +argv_switch(char c_arg, Tupel *p_tupel_argv, unsigned i_argc_left) { + switch (c_arg) { + case 'e': + case 'T': + case 'V': + argv_addopt(c_arg, p_tupel_argv); + return; + case 'h': + argv_help(); + exit(0); + case 's': + argv_synopsis(p_tupel_argv); + exit(0); + case 'v': + printf("%s %s %d\n", NAME, VERSION, BUILDNR); + exit(0); + } + + char buf[2]; + buf[0] = c_arg; + buf[1] = '\0'; + + EPRINTF("Error: No such option '%s'!\n", buf); + exit(1); +} + +void +argv_synopsis(Tupel *p_tupel_argv) { + printf("Synopsis:\n"); + printf("%s ", BINARY); + printf("[-[hsvTV]] file.fy\n"); + printf("%s ", BINARY); + printf("-e \"code string;\"\n"); + + if (!argv_checkopt('h', p_tupel_argv)) + printf("\t(Hint: Try -h for details)\n"); +} + +void +argv_help() { + printf("%s %s %d\n", NAME, VERSION, BUILDNR); + printf("%s\n", COPYRIGHT); + printf("\t-e\tExecutes given code string (see synopses)\n"); + printf("\t-h\tPrints this help\n"); + printf("\t-s\tPrints the synopsis\n"); + printf("\t-v\tPrints the current version\n"); + printf("\t-T\tPrints token list after scanning\n"); + printf("\t-V\tVerbose mode: Print all possible output\n"); + exit(0); +} + +void +argv_addopt(char c_opt, Tupel *p_tupel_argv) { + char *c_opts = (char *) p_tupel_argv->b; + int i_len = strlen(c_opts), i; + + for (i = 0; i < i_len; ++i) + if (c_opts[i] == c_opt) + return; + + c_opts[i] = c_opt; + c_opts[i+1] = '\0'; +} + +_Bool +argv_checkopt(char c_opt, Tupel *p_tupel_argv) { + char *c_opts = (char *) p_tupel_argv->b; + int i_len = strlen(c_opts); + + for (int i = 0; i < i_len; ++i) + if (c_opts[i] == c_opt) + return 1; + + return 0; +} + +_Bool +argv_checkopts(char *c_opts, Tupel *p_tupel_argv) { + int i_len = strlen(c_opts); + + for (int i = 0; i < i_len; ++i) + if (argv_checkopt(c_opts[i], p_tupel_argv)) + return 1; + + return 0; +} + +void +argv_check_argc(int i_required, unsigned i_argc_left, Tupel *p_tupel_argv) { + if ((unsigned) ++i_required > i_argc_left) { + argv_synopsis(p_tupel_argv); + EPRINTF("%d argument(s) missing!\n", i_required-i_argc_left); + exit(1); + } +} + +void +argv_tupel_delete(Tupel *p_tupel_argv) { + dat_delete(p_tupel_argv->a); + free(p_tupel_argv->b); + tupel_delete(p_tupel_argv); +} + diff --git a/src/argv.h b/src/argv.h new file mode 100644 index 0000000..bcf7eb4 --- /dev/null +++ b/src/argv.h @@ -0,0 +1,51 @@ +/*:* + *: File: ./src/argv.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef ARGV_H +#define ARGV_H + +#include "data/tupel.h" +#include "fype.h" + +void argv_run(Fype *p_fype, int i_argc, char **pc_argv); +void argv_switch(char c_arg, Tupel *p_tupel_argv, unsigned i_argc_left); +void argv_synopsis(Tupel *p_tupel_argv); +void argv_help(); +void argv_addopt(char c_opt, Tupel *p_tupel_argv); +_Bool argv_checkopt(char c_opt, Tupel *p_tupel_argv); +_Bool argv_checkopts(char *c_opts, Tupel *p_tupel_argv); +void argv_check_argc(int i_required, unsigned i_argc_left, Tupel *p_tupel_argv); +void argv_tupel_delete(Tupel *p_tupel_argv); + +#endif diff --git a/src/build.h b/src/build.h new file mode 100644 index 0000000..a4066a3 --- /dev/null +++ b/src/build.h @@ -0,0 +1,41 @@ +/*:* + *: File: ./src/build.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef BUILD_H +#define BUILD_H + +#define BUILDNR 8867 +#define OS_FREEBSD + +#endif diff --git a/src/core/convert.c b/src/core/convert.c new file mode 100644 index 0000000..0d63619 --- /dev/null +++ b/src/core/convert.c @@ -0,0 +1,185 @@ +/*:* + *: File: ./src/core/convert.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "convert.h" + +void +convert_to_integer(Token *p_token) { + switch (token_get_tt(p_token)) { + case TT_INTEGER: + break; + case TT_DOUBLE: + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, (int)token_get_dval(p_token)); + break; + case TT_STRING: + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, atoi(token_get_val(p_token))); + break; + default: + ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); + break; + } +} + +int +convert_to_integer_get(Token *p_token) { + switch (token_get_tt(p_token)) { + case TT_INTEGER: + return (token_get_ival(p_token)); + case TT_DOUBLE: + return ((int) token_get_dval(p_token)); + case TT_STRING: + return (atoi(token_get_val(p_token))); + default: + ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); + } + + return (0); /* Never reach this point */ +} + +void +convert_to_double(Token *p_token) { + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, token_get_ival(p_token)); + break; + case TT_DOUBLE: + break; + case TT_STRING: + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, atof(token_get_val(p_token))); + break; + default: + token_print_val(p_token); + ERROR("Datatype conversion error '%s'", token_get_val(p_token)); + break; + } +} + +void +convert_to_string(Token *p_token) { + switch (token_get_tt(p_token)) { + case TT_INTEGER: + { + token_set_tt(p_token, TT_STRING); + char c_tmp[1024]; + sprintf(c_tmp, "%d", token_get_ival(p_token)); + int i_len = strlen(c_tmp); + p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); + strcpy(p_token->c_val, c_tmp); + p_token->c_val[i_len] = 0; + } + break; + case TT_DOUBLE: + { + token_set_tt(p_token, TT_STRING); + char c_tmp[1024]; + sprintf(c_tmp, "%f", token_get_dval(p_token)); + int i_len = strlen(c_tmp); + p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); + strcpy(p_token->c_val, c_tmp); + p_token->c_val[i_len] = 0; + } + break; + case TT_STRING: + break; + default: + ERROR("Datatype conversion error"); + break; + } +} + +void +convert_to_tt(Token *p_token, TokenType tt) { + switch (tt) { + case TT_INTEGER: + convert_to_integer(p_token); + break; + case TT_DOUBLE: + convert_to_double(p_token); + break; + case TT_STRING: + convert_to_string(p_token); + break; + default: + ERROR("Ouups!"); + } +} + +TokenType +convert_to_highest(Token *p_token1, Token *p_token2) { + TokenType tt_highest = token_get_tt(p_token1); + + if (tt_highest < token_get_tt(p_token2)) { + tt_highest = token_get_tt(p_token2); + + convert_to_tt(p_token1, tt_highest); + + } else { + convert_to_tt(p_token2, tt_highest); + } + + return (tt_highest); +} + +TokenType +convert_function_arg_types_to_highest(Stack *p_stack_args, int i_args) { + + if (i_args <= 0) + i_args = stack_size(p_stack_args); + + StackIterator *p_iter = stackiterator_new(p_stack_args); + TokenType tt_highest = TT_INTEGER; + + for (int i = 0; i < i_args && stackiterator_has_next(p_iter); ++i) { + Token *p_token = stackiterator_next(p_iter); + if (token_get_tt(p_token) > tt_highest) + tt_highest = token_get_tt(p_token); + } + + stackiterator_delete(p_iter); + p_iter = stackiterator_new(p_stack_args); + + for (int i = 0; i < i_args && stackiterator_has_next(p_iter); ++i) { + Token *p_token = stackiterator_next(p_iter); + convert_to_tt(p_token, tt_highest); + } + + stackiterator_delete(p_iter); + + return (tt_highest); +} + diff --git a/src/core/convert.h b/src/core/convert.h new file mode 100644 index 0000000..c4e0b1d --- /dev/null +++ b/src/core/convert.h @@ -0,0 +1,53 @@ +/*:* + *: File: ./src/core/convert.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef CONVERT_H +#define CONVERT_H + +#include "../defines.h" + +#include "../data/stack.h" + +#include "token.h" + +int convert_to_integer_get(Token *p_token); +void convert_to_integer(Token *p_token); +void convert_to_double(Token *p_token); +void convert_to_string(Token *p_token); +void convert_to_tt(Token *p_token, TokenType tt); +TokenType convert_to_highest(Token *p_token1, Token *p_token2); +TokenType convert_function_arg_types_to_highest(Stack *p_stack_args, int + i_args); + +#endif diff --git a/src/core/function.c b/src/core/function.c new file mode 100644 index 0000000..fd18ba0 --- /dev/null +++ b/src/core/function.c @@ -0,0 +1,661 @@ +/*:* + *: File: ./src/core/function.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include +#include +#include + +#include "function.h" + +#include "convert.h" +#include "scope.h" +#include "symbol.h" + +#define _FUNCTION_ERROR(m,t) \ + ERROR(\ + "%s: Function error in %s line %d pos %d near '%s'", m, \ + token_get_filename(t), \ + token_get_line_nr(t), \ + token_get_pos_nr(t), \ + token_get_val(t) \ + ) + +void +_process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, + Token *p_token_next) { + + TokenType tt_op = token_get_tt(p_token_op); + +#ifdef DEBUG_FUNCTION_PROCESS + printf("PROCESS OPERATOR %s\n", tt_get_name(tt_op)); + + token_print(p_token_next); + printf("\n"); + token_print(p_token_store); + printf("\n"); +#endif /* DEBUG_FUNCTION_PROCESS */ + + + switch (tt_op) { + case TT_ASSIGN: + { + Token *p_token_assign = p_interpret->p_token_temp; + TokenType tt_assign = token_get_tt(p_token_assign); + + if (tt_assign != TT_IDENT) { + _FUNCTION_ERROR("Can only assign to symbols", + p_token_store); + } + + Symbol *p_symbol = scope_get(p_interpret->p_scope, + token_get_val(p_token_assign)); + + if (p_symbol == NULL) { + _FUNCTION_ERROR("No such symbol", + p_token_assign); + } + + symbol_set_val(p_symbol, p_token_store); + symbol_set_sym(p_symbol, SYM_VARIABLE); + + return; + } + + break; + NO_DEFAULT; + } + + p_token_next = token_new_copy(p_token_next); + TokenType tt_highest = convert_to_highest(p_token_store, p_token_next); + +#ifdef DEBUG_FUNCTION_PROCESS + printf("===> %s %s %s\n", + tt_get_name(tt_highest), + tt_get_name(tt_op), + tt_get_name(tt_highest)); +#endif /* DEBUG_FUNCTION_PROCESS */ + + switch (tt_op) { + case TT_ADD: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + token_get_ival(p_token_next) + + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_dval(p_token_store, + token_get_dval(p_token_next) + + token_get_dval(p_token_store)); + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) + + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_SUB: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + token_get_ival(p_token_next) - + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_dval(p_token_store, + token_get_dval(p_token_next) - + token_get_dval(p_token_store)); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) - + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_MULT: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + token_get_ival(p_token_next) * + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_dval(p_token_store, + token_get_dval(p_token_next) * + token_get_dval(p_token_store)); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) * + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_DIV: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) / + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_dval(p_token_store, + token_get_dval(p_token_next) / + token_get_dval(p_token_store)); + break; + case TT_STRING: + token_set_dval(p_token_store, + atof(token_get_val(p_token_next)) / + atof(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_DOUBLE); + break; + NO_DEFAULT; + } + break; + case TT_EQ: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) == + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) == + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) == 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_NEQ: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) != + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) != + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) != 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_LT: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) < + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) < + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) < 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_GT: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) > + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) > + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) > 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_LE: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) <= + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) <= + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) <= 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_GE: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) >= + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + token_get_dval(p_token_next) >= + token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + strcmp(token_get_val(p_token_next), + token_get_val(p_token_store)) >= 0); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + default: + _FUNCTION_ERROR("No such function/operator", p_token_op); + } + +#ifdef DEBUG_FUNCTION_PROCESS + token_print(p_token_store); + printf("\n\n"); +#endif /* DEBUG_FUNCTION_PROCESS */ + + token_delete(p_token_next); +} + +void +function_process(Interpret *p_interpret, Token *p_token_op, + Stack *p_stack_args, int i_args) { + + Token *p_token_store = token_new_copy(stack_pop(p_stack_args)); + + for (int i = 0; i < i_args -1 && !stack_empty(p_stack_args); ++i) { + Token *p_token_next = stack_pop(p_stack_args); + + _process(p_interpret, p_token_store, p_token_op, p_token_next); + } + + stack_push(p_stack_args, p_token_store); +} + +_Bool +function_is_buildin(Token *p_token_ident) { + if (strcmp("assert", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("decr", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("double", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("end", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("exit", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("fork", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("gc", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("incr", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("integer", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("ln", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("neg", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("no", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("put", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("say", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("string", token_get_val(p_token_ident)) == 0) + return (true); + + if (strcmp("yes", token_get_val(p_token_ident)) == 0) + return (true); + + return (false); +} + +void +function_process_buildin(Interpret *p_interpret, Token *p_token_ident, + Stack *p_stack_args) { + + if (strcmp("assert", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = stack_top(p_stack_args); + + switch (token_get_tt(p_token)) { + case TT_INTEGER: + if (token_get_ival(p_token) == 0) + _FUNCTION_ERROR("Assert failed", p_token); + break; + case TT_DOUBLE: + if (token_get_dval(p_token) == 0) + _FUNCTION_ERROR("Assert failed", p_token); + break; + case TT_STRING: + if (atoi(token_get_val(p_token)) == 0) + _FUNCTION_ERROR("Assert failed", p_token); + break; + NO_DEFAULT; + } + + } else if (strcmp("decr", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = stack_top(p_stack_args); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, token_get_ival(p_token) - 1); + break; + case TT_DOUBLE: + token_set_dval(p_token, token_get_dval(p_token) - 1); + break; + case TT_STRING: + convert_to_integer(p_token); + token_set_ival(p_token, token_get_ival(p_token) - 1); + break; + NO_DEFAULT; + } + + } else if (strcmp("double", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + convert_to_double(p_token); + stack_push(p_stack_args, p_token); + + } else if (strcmp("end", token_get_val(p_token_ident)) == 0) { + exit(0); + + } else if (strcmp("fork", token_get_val(p_token_ident)) == 0) { + Token *p_token = token_new_integer((int) fork()); + stack_push(p_stack_args, p_token); + + } else if (strcmp("gc", token_get_val(p_token_ident)) == 0) { + int i_count = garbage_collect(); + printf("ICOUNT %d\n", i_count); + Token *p_token = token_new_integer(i_count); + stack_push(p_stack_args, p_token); + + } else if (strcmp("exit", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = stack_top(p_stack_args); + p_token = token_new_copy(p_token); + convert_to_integer(p_token); + exit(token_get_ival(p_token)); + + } else if (strcmp("incr", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = stack_top(p_stack_args); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, token_get_ival(p_token) + 1); + break; + case TT_DOUBLE: + token_set_dval(p_token, token_get_dval(p_token) + 1); + break; + case TT_STRING: + convert_to_integer(p_token); + token_set_ival(p_token, token_get_ival(p_token) + 1); + break; + NO_DEFAULT; + } + + } else if (strcmp("integer", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + convert_to_integer(p_token); + stack_push(p_stack_args, p_token); + + } else if (strcmp("ln", token_get_val(p_token_ident)) == 0) { + printf("\n"); + + } else if (strcmp("neg", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + stack_push(p_stack_args, p_token); + + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, -token_get_ival(p_token)); + break; + case TT_DOUBLE: + token_set_dval(p_token, -token_get_dval(p_token)); + break; + case TT_STRING: + token_set_ival(p_token, -atoi(token_get_val(p_token))); + token_set_tt(p_token, TT_INTEGER); + break; + NO_DEFAULT; + } + + } else if (strcmp("no", token_get_val(p_token_ident)) == 0) { + Token *p_token = NULL; + + if (0 == stack_size(p_stack_args)) { + p_token = token_new_integer(0); + + } else { + p_token = token_new_copy(stack_pop(p_stack_args)); + + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, !token_get_ival(p_token)); + break; + case TT_DOUBLE: + token_set_dval(p_token, !token_get_dval(p_token)); + break; + case TT_STRING: + token_set_ival(p_token, !atoi(token_get_val(p_token))); + token_set_tt(p_token, TT_INTEGER); + break; + NO_DEFAULT; + } + } + + stack_push(p_stack_args, p_token); + + } else if (strcmp("put", token_get_val(p_token_ident)) == 0) { + StackIterator *p_iter = stackiterator_new(p_stack_args); + while (stackiterator_has_next(p_iter)) { + Token *p_token = stackiterator_next(p_iter); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + printf("%d", token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("%f", token_get_dval(p_token)); + break; + case TT_STRING: + printf("%s", token_get_val(p_token)); + break; + NO_DEFAULT; + } + } + stackiterator_delete(p_iter); + + } else if (strcmp("say", token_get_val(p_token_ident)) == 0) { + StackIterator *p_iter = stackiterator_new(p_stack_args); + while (stackiterator_has_next(p_iter)) { + Token *p_token = stackiterator_next(p_iter); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + printf("%d", token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("%f", token_get_dval(p_token)); + break; + case TT_STRING: + printf("%s", token_get_val(p_token)); + break; + NO_DEFAULT; + } + } + stackiterator_delete(p_iter); + printf("\n"); + + } else if (strcmp("string", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + convert_to_string(p_token); + stack_push(p_stack_args, p_token); + + } else if (strcmp("yes", token_get_val(p_token_ident)) == 0) { + Token *p_token = NULL; + + if (0 == stack_size(p_stack_args)) { + p_token = token_new_integer(1); + + } else { + p_token = token_new_copy(stack_pop(p_stack_args)); + token_set_ival(p_token, 1); + token_set_tt(p_token, TT_INTEGER); + + } + + stack_push(p_stack_args, p_token); + } +} + +_Bool +function_is_self_defined(Interpret *p_interpret) { + Symbol *p_symbol = scope_get(p_interpret->p_scope, + token_get_val(p_interpret->p_token)); + + if (p_symbol == NULL) + return (false); + + switch (symbol_get_sym(p_symbol)) { + case SYM_PROCEDURE: + case SYM_FUNCTION: + return (true); + NO_DEFAULT; + } + + return (false); +} + +void +function_process_self_defined(Interpret *p_interpret, Token *p_token_ident) { + Symbol *p_symbol = scope_get(p_interpret->p_scope, + token_get_val(p_token_ident)); + + switch (symbol_get_sym(p_symbol)) { + case SYM_PROCEDURE: + { + List *p_list_token = symbol_get_val(p_symbol); + interpret_subprocess(p_interpret, p_list_token); + } + break; + case SYM_FUNCTION: + { + List *p_list_token = symbol_get_val(p_symbol); + scope_up(p_interpret->p_scope); + interpret_subprocess(p_interpret, p_list_token); + scope_down(p_interpret->p_scope); + } + NO_DEFAULT; + } +} + diff --git a/src/core/function.h b/src/core/function.h new file mode 100644 index 0000000..9f12bb4 --- /dev/null +++ b/src/core/function.h @@ -0,0 +1,50 @@ +/*:* + *: File: ./src/core/function.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef FUNCTION_H +#define FUNCTION_H + +#include "token.h" + +#include "interpret.h" +#include "../data/stack.h" + +void function_process(Interpret *p_interp, Token *p_token_op, Stack + *p_stack_args, int i_args); +_Bool function_is_buildin(Token *p_token_ident); +void function_process_buildin(Interpret *p_interpret, Token *p_token_ident, Stack *p_stack_args); +_Bool function_is_self_defined(Interpret *p_interpret); +void function_process_self_defined(Interpret *p_interpret, Token *p_token_ident); + +#endif /* FUNCTION_H */ diff --git a/src/core/garbage.c b/src/core/garbage.c new file mode 100644 index 0000000..b4dad22 --- /dev/null +++ b/src/core/garbage.c @@ -0,0 +1,136 @@ +/*:* + *: File: ./src/core/garbage.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "garbage.h" + +#define _GARBAGE_ERROR(m) \ + ERROR("%s: Garbage error", m); + +List *LIST_GARBAGE = NULL; + +typedef struct { + void (*p_func)(void*); + int *p_ref_count; + void *p_2free; + GarbageType type; +} _Garbage; + +void +garbage_init() { + LIST_GARBAGE = list_new(); +} + +void +_garbage_print(_Garbage *p_garbage) { + switch (p_garbage->type) { + case GC_TOKEN: + { + Token *p_token = p_garbage->p_2free; + token_print(p_token); + printf("\n"); + } + break; + } +} + +void +garbage_destroy() { + garbage_collect(); + + if (!list_empty(LIST_GARBAGE)) { + EPRINTF("The garbage collector still has %d registered items which don't have" + " a zero ref count!\n", list_size(LIST_GARBAGE)); + + ListIterator *p_iter = listiterator_new(LIST_GARBAGE); + while (listiterator_has_next(p_iter)) { + _Garbage *p_garbage = listiterator_next(p_iter); + _garbage_print(p_garbage); + } + listiterator_delete(p_iter); + + _GARBAGE_ERROR("Garbage left"); + } + + list_delete(LIST_GARBAGE); +} + +int +garbage_collect() { + ListIterator *p_iter = listiterator_new(LIST_GARBAGE); + List *p_list_garbage_new = list_new(); + int i_count = 0; + + while (listiterator_has_next(p_iter)) { + _Garbage *p_garbage = listiterator_next(p_iter); + + if (p_garbage->p_ref_count == NULL || *p_garbage->p_ref_count <= 0) { + // _garbage_print(p_garbage); + (*p_garbage->p_func) (p_garbage->p_2free); + free(p_garbage); + ++i_count; + + } else { + list_add_back(p_list_garbage_new, p_garbage); + } + } + + listiterator_delete(p_iter); + + list_delete(LIST_GARBAGE); + LIST_GARBAGE = p_list_garbage_new; + + return (i_count); +} + +void +garbage_add(void *p, GarbageType type) { + garbage_add2(p, free, NULL, type); +} + +void +garbage_add2(void *p, void (*p_func)(void*), int *p_ref_count, GarbageType type) { + _Garbage *p_garbage = malloc(sizeof(_Garbage)); + + p_garbage->p_2free = p; + p_garbage->p_func = p_func; + p_garbage->p_ref_count = p_ref_count; + p_garbage->type = type; + + list_add_back(LIST_GARBAGE, p_garbage); +} + +void +garbage_add_token(Token *p_token) { + garbage_add2(p_token, token_delete_cb, &p_token->i_ref_count, GC_TOKEN); +} diff --git a/src/core/garbage.h b/src/core/garbage.h new file mode 100644 index 0000000..6a8007d --- /dev/null +++ b/src/core/garbage.h @@ -0,0 +1,54 @@ +/*:* + *: File: ./src/core/garbage.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef GARBAGE_H +#define GARBAGE_H + +#include "../defines.h" +#include "../data/list.h" +#include "token.h" + +typedef enum { + GC_TOKEN, +} GarbageType; + +void garbage_init(); +void garbage_destroy(); +int garbage_collect(); +void garbage_add(void *p, GarbageType type); +void garbage_add2(void *p, void (*p_func)(void*), int *p_ref_count, + GarbageType type); +void garbage_add_token(Token *p_token); + +#endif diff --git a/src/core/interpret.c b/src/core/interpret.c new file mode 100644 index 0000000..97e19c2 --- /dev/null +++ b/src/core/interpret.c @@ -0,0 +1,946 @@ +/*:* + *: File: ./src/core/interpret.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "interpret.h" + +#include "../defines.h" +#include "convert.h" +#include "function.h" +#include "symbol.h" + +#define _INTERPRET_ERROR(m,t) \ + ERROR(\ + "%s: Interpret error in %s line %d pos %d near '%s'", m, \ + token_get_filename(t), \ + token_get_line_nr(t), \ + token_get_pos_nr(t), \ + token_get_val(t) \ + ) + +#define _CHECK if (p_interpret->p_token == NULL) return (0); +#define _HAS_NEXT listiterator_has_next(p_interpret->p_iter) +#define _NEXT if (!_next(p_interpret)) { return (2); } +#define _NEXT_TT _next_tt(p_interpret) +#define _SKIP _next(p_interpret); + +void _print_lookahead(Interpret *p_interpret); +int _next(Interpret *p_interpret); +int _program(Interpret *p_interpret); +int _var_decl(Interpret *p_interpret); +int _var_assign(Interpret *p_interpret); +int _var_list(Interpret *p_interpret); +int _expression_get(Interpret *p_interpret, List *p_list_block); +int _block_get(Interpret *p_interpret, List *p_list_block); +int _block_skip(Interpret *p_interpret); +int _proc_decl(Interpret *p_interpret); +int _func_decl(Interpret *p_interpret); +int _statement(Interpret *p_interpret); +int _block(Interpret *p_interpret); +int _expression(Interpret *p_interpret); +int _expression_(Interpret *p_interpret); +int _control(Interpret *p_interpret); +int _compare(Interpret *p_interpret); +int _sum(Interpret *p_interpret); +int _product(Interpret *p_interpret); +int _product2(Interpret *p_interpret); +int _term(Interpret *p_interpret); + +Interpret* +interpret_new(List *p_list_token, Hash *p_hash_syms) { + Interpret *p_interpret = malloc(sizeof(Interpret)); + + if (p_hash_syms != NULL) { + p_interpret->p_scope = scope_new(p_hash_syms); + p_interpret->b_scope_delete = true; + + } else { + p_interpret->p_scope = NULL; + p_interpret->b_scope_delete = false; + } + + p_interpret->p_list_token = p_list_token; + p_interpret->p_stack = stack_new(); + p_interpret->tt = TT_NONE; + p_interpret->p_token = NULL; + p_interpret->tt_prev = TT_NONE; + p_interpret->p_token_prev = NULL; + p_interpret->p_token_temp = NULL; + p_interpret->ct = CONTROL_NONE; + + return (p_interpret); +} + +void +interpret_delete(Interpret *p_interpret) { + if (!p_interpret) + return; + + if (p_interpret->b_scope_delete) + scope_delete(p_interpret->p_scope); + + stack_delete(p_interpret->p_stack); + free(p_interpret); +} + +void +_print_lookahead(Interpret *p_interpret) { + ListIterator *p_iter = p_interpret->p_iter; + ListIteratorState *p_state = listiterator_get_state(p_iter); + + printf("LOOLAHEAD:\n"); + + token_print(p_interpret->p_token); + printf("\n"); + + while (listiterator_has_next(p_iter)) { + Token *p_token = listiterator_next(p_iter); + token_print(p_token); + printf("\n"); + } + + listiterator_set_state(p_iter, p_state); + listiteratorstate_delete(p_state); +} + +int +_next(Interpret *p_interpret) { + if (listiterator_has_next(p_interpret->p_iter)) { + p_interpret->p_token_prev = p_interpret->p_token; + p_interpret->tt_prev = p_interpret->tt; + + p_interpret->p_token = listiterator_next(p_interpret->p_iter); + p_interpret->tt = token_get_tt(p_interpret->p_token); + return (1); + } + + p_interpret->p_token = NULL; + p_interpret->tt = TT_NONE; + + return (0); +} + +TokenType +_next_tt(Interpret *p_interpret) { + if (listiterator_has_next(p_interpret->p_iter)) { + Token *p_token = listiterator_current(p_interpret->p_iter); + return (token_get_tt(p_token)); + } + + return (TT_NONE); +} + +int +_program(Interpret *p_interpret) { + _CHECK TRACK + + while (_statement(p_interpret) == 1) + garbage_collect(); + + return (1); +} + +int +_var_decl(Interpret *p_interpret) { + _CHECK TRACK + + if (p_interpret->tt == TT_MY) { + if (_NEXT_TT != TT_IDENT) + _INTERPRET_ERROR("'my' expects identifier", p_interpret->p_token); + + _NEXT + + Token *p_token_ident = p_interpret->p_token; + + _var_assign(p_interpret); + _var_list(p_interpret); + + if (p_interpret->tt == TT_SEMICOLON) { + _NEXT + return (1); + + } else if (p_interpret->p_token != NULL) { + _INTERPRET_ERROR("Expected ';'", p_interpret->p_token); + + } else { + _INTERPRET_ERROR("Expected ';' after", p_token_ident); + } + } + + return (0); +} + +int +_var_assign(Interpret *p_interpret) { + _CHECK TRACK + + if (p_interpret->tt == TT_IDENT) { + Token *p_token = p_interpret->p_token; + _NEXT + + char *c_name = token_get_val(p_token); + if (scope_exists(p_interpret->p_scope, c_name)) { + _INTERPRET_ERROR("Symbol already defined", p_token); + } + + if (p_interpret->tt == TT_ASSIGN) { + _NEXT + + Stack *p_stack = p_interpret->p_stack; + p_interpret->p_stack = stack_new(); + + if (_expression_(p_interpret)) { + function_process_buildin(p_interpret, p_token, p_interpret->p_stack); + + stack_merge(p_stack, p_interpret->p_stack); + stack_delete(p_interpret->p_stack); + p_interpret->p_stack = p_stack; + + p_token = stack_top(p_interpret->p_stack); + Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); + scope_newset(p_interpret->p_scope, c_name, p_symbol); + + } else { + return (0); + } + + } else { + Token *p_token = token_new_integer(0); + Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); + scope_newset(p_interpret->p_scope, c_name, p_symbol); + } + } + + return (1); +} + +int +_var_list(Interpret *p_interpret) { + _CHECK TRACK + + if (p_interpret->tt == TT_COMMA) { + _NEXT + _var_assign(p_interpret); + _var_list(p_interpret); + } + + return (1); +} + +int +_block_get(Interpret *p_interpret, List *p_list_block) { + if (p_interpret->tt != TT_PARANT_CL) + _INTERPRET_ERROR("Expected '{'", p_interpret->p_token); + _NEXT + + int i_num_parant = 0; + + for (;;) { + if (p_interpret->tt == TT_PARANT_CL) { + ++i_num_parant; + + } else if (p_interpret->tt == TT_PARANT_CR) { + if (--i_num_parant == -1) { + _NEXT + break; /* for */ + } + } + + list_add_back(p_list_block, p_interpret->p_token); + + _NEXT + } + +#ifdef DEBUG_BLOCK_GET + printf("====> BLOCK\n"); + list_iterate(p_list_block, token_print_cb); + printf("<==== BLOCK\n"); +#endif /* DEBUG_BLOCK_GET */ + + return (1); +} + +int +_expression_get(Interpret *p_interpret, List *p_list_expression) { + for (;;) { + if (p_interpret->tt == TT_PARANT_CL) { + break; /* for */ + } + + list_add_back(p_list_expression, p_interpret->p_token); + + _NEXT + } + +#ifdef DEBUG_EXPRESSION_GET + printf("====> EXPRESSION\n"); + list_iterate(p_list_expression, token_print_cb); + printf("<==== EXPRESSION\n"); +#endif /* DEBUG_EXPRESSION_GET */ + + return (1); +} + +int +_block_skip(Interpret *p_interpret) { + if (p_interpret->tt != TT_PARANT_CL) + _INTERPRET_ERROR("Expected '{'", p_interpret->p_token); + _NEXT + + int i_num_parant = 0; + + for (;;) { + if (p_interpret->tt == TT_PARANT_CL) { + ++i_num_parant; + + } else if (p_interpret->tt == TT_PARANT_CR) { + if (--i_num_parant == -1) { + _NEXT + break; /* for */ + } + } + + _NEXT + } + + return (1); +} + +int +_proc_decl(Interpret *p_interpret) { + _CHECK TRACK + + if (p_interpret->tt == TT_PROC) { + _NEXT + + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expected identifier", p_interpret->p_token); + + Token *p_token_ident = p_interpret->p_token; + _NEXT + + if (scope_exists(p_interpret->p_scope, token_get_val(p_token_ident))) { + _INTERPRET_ERROR("Symbol already defined", p_token_ident); + } + + List *p_list_proc = list_new(); + + if (_block_get(p_interpret, p_list_proc)) { + + Symbol *p_symbol = symbol_new(SYM_PROCEDURE, p_list_proc); + scope_newset(p_interpret->p_scope, token_get_val(p_token_ident), + p_symbol); + + return (1); + } + + list_delete(p_list_proc); + } + + return (0); +} + +int +_func_decl(Interpret *p_interpret) { + _CHECK TRACK + + if (p_interpret->tt == TT_FUNC) { + _NEXT + + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expected identifier", p_interpret->p_token); + + Token *p_token_ident = p_interpret->p_token; + _NEXT + + if (scope_exists(p_interpret->p_scope, token_get_val(p_token_ident))) { + _INTERPRET_ERROR("Symbol already defined", p_token_ident); + } + + List *p_list_proc = list_new(); + + if (_block_get(p_interpret, p_list_proc)) { + + Symbol *p_symbol = symbol_new(SYM_FUNCTION, p_list_proc); + scope_newset(p_interpret->p_scope, token_get_val(p_token_ident), + p_symbol); + + return (1); + } + + list_delete(p_list_proc); + } + + return (0); +} + +int +_statement(Interpret *p_interpret) { + _CHECK TRACK + + for (int i = 0; i < 2; ++i) { + if (_proc_decl(p_interpret)) return (1); + if (_func_decl(p_interpret)) return (1); + if (_var_decl(p_interpret)) return (1); + if (_control(p_interpret)) return (1); + if (_expression(p_interpret)) return (1); + if (_block(p_interpret)) return (1); + } + + return (0); +} + +int +_block(Interpret *p_interpret) { + if (p_interpret->tt == TT_PARANT_CL) { + List *p_list_block = list_new(); + + if (_block_get(p_interpret, p_list_block)) { + scope_up(p_interpret->p_scope); + interpret_subprocess(p_interpret, p_list_block); + scope_down(p_interpret->p_scope); + list_delete(p_list_block); + return (1); + } + + list_delete(p_list_block); + } + + return (0); +} + +int +_expression(Interpret *p_interpret) { + _CHECK TRACK + + if (_expression_(p_interpret)) { + if (p_interpret->tt == TT_SEMICOLON) { + _NEXT + + } else { + _INTERPRET_ERROR("Expected ';'", p_interpret->p_token); + } + + stack_clear(p_interpret->p_stack); + return (1); + } + + return (0); +} + +int +_expression_(Interpret *p_interpret) { + return (_compare(p_interpret)); +} + +int +_control(Interpret *p_interpret) { + _CHECK TRACK + + Token *p_token = p_interpret->p_token; + + switch (p_interpret->tt) { + case TT_IF: + case TT_IFNOT: + { + TokenType tt = p_interpret->tt; + _NEXT + if (_expression_(p_interpret)) { + Token *p_token_top = stack_pop(p_interpret->p_stack); + List *p_list_block = list_new(); + _block_get(p_interpret, p_list_block); + int ret = 0; + + switch (tt) { + case TT_IF: + if (convert_to_integer_get(p_token_top)) { + scope_up(p_interpret->p_scope); + ret = interpret_subprocess(p_interpret, p_list_block); + scope_down(p_interpret->p_scope); + } + break; + case TT_IFNOT: + if (!convert_to_integer_get(p_token_top)) { + scope_up(p_interpret->p_scope); + ret = interpret_subprocess(p_interpret, p_list_block); + scope_down(p_interpret->p_scope); + } + break; + NO_DEFAULT; + } + + list_delete(p_list_block); + return (1); + + } else { + _INTERPRET_ERROR("Expected expression after control keyword", p_token); + } + } + break; + case TT_WHILE: + case TT_UNTIL: + { + TokenType tt = p_interpret->tt; + List *p_list_expr = list_new(), *p_list_block = list_new(); + _Bool b_flag = true; + + _NEXT + + _expression_get(p_interpret, p_list_expr); + _block_get(p_interpret, p_list_block); + Token *p_token_backup = p_interpret->p_token; + + do { + Stack *p_stack_backup = p_interpret->p_stack; + p_interpret->p_stack = stack_new(); + + ListIterator *p_iter_backup = p_interpret->p_iter; + p_interpret->p_iter = listiterator_new(p_list_expr); + + _NEXT + + /* Dont use if here, because we want to check the p_itnerpret->ct */ + if (_expression_(p_interpret)) { + Token *p_token_top = stack_pop(p_interpret->p_stack); + + if (p_token_top == NULL) { + printf("FOO\n"); + exit(0); + } + if (tt == TT_WHILE) { + if (convert_to_integer_get(p_token_top)) { + scope_up(p_interpret->p_scope); + interpret_subprocess(p_interpret, p_list_block); + scope_down(p_interpret->p_scope); + + } else { + b_flag = false; + } + + } else if (tt == TT_UNTIL) { + if (!convert_to_integer_get(p_token_top)) { + scope_up(p_interpret->p_scope); + interpret_subprocess(p_interpret, p_list_block); + scope_down(p_interpret->p_scope); + + } else { + b_flag = false; + } + } + + /* + switch (p_interpret->ct) { + case CONTROL_BREAK: + p_interpret->ct = CONTROL_NONE; + b_flag = false; + break; + case CONTROL_NEXT: + p_interpret->ct = CONTROL_NONE; + break; + NO_DEFAULT; + } + */ + + } else { + _INTERPRET_ERROR("Expected expression after control keyword", p_token); + } + + listiterator_delete(p_interpret->p_iter); + p_interpret->p_iter = p_iter_backup; + + stack_delete(p_interpret->p_stack); + p_interpret->p_stack = p_stack_backup; + + } while (b_flag); + + list_delete(p_list_expr); + list_delete(p_list_block); + p_interpret->p_token = p_token_backup; + p_interpret->tt = token_get_tt(p_token_backup); + + return (1); + } + break; + NO_DEFAULT; + } + + return (0); +} + +int +_compare(Interpret *p_interpret) { + _CHECK TRACK + + if (_sum(p_interpret)) { + _Bool b_flag = true; + + do { + switch (p_interpret->tt) { + case TT_EQ: + case TT_NEQ: + case TT_LT: + case TT_GT: + case TT_LE: + case TT_GE: + { + Token *p_token = p_interpret->p_token; + _NEXT + + if (!_sum(p_interpret)) + _INTERPRET_ERROR("Expected sum", p_interpret->p_token); + + function_process(p_interpret, p_token, p_interpret->p_stack, 2); + } + break; /* case */ + + default: + b_flag = false; + break; + + } /* switch */ + + } while (b_flag); + + return (1); + } + + return (0); +} + +int +_sum(Interpret *p_interpret) { + _CHECK TRACK + + if (_product(p_interpret)) { + _Bool b_flag = true; + + do { + switch (p_interpret->tt) { + case TT_ADD: + case TT_SUB: + { + Token *p_token = p_interpret->p_token; + _NEXT + + if (!_product(p_interpret)) + _INTERPRET_ERROR("Expected product", p_token); + + function_process(p_interpret, p_token, p_interpret->p_stack, 2); + + } + break; /* case */ + + default: + b_flag = false; + break; + + } /* switch */ + + } while (b_flag); + + return (1); + } + + return (0); +} + +int +_product(Interpret *p_interpret) { + _CHECK TRACK + + if (_product2(p_interpret)) { + _Bool b_flag = true; + + do { + switch (p_interpret->tt) { + case TT_MULT: + case TT_DIV: + { + Token *p_token = p_interpret->p_token; + _NEXT + + if (!_product2(p_interpret)) + _INTERPRET_ERROR("Expected product2", p_token); + + function_process(p_interpret, p_token, p_interpret->p_stack, 2); + + } + break; /* case */ + + default: + b_flag = false; + break; + + } /* switch */ + + } while (b_flag); + + return (1); + } + + return (0); +} + +int +_product2(Interpret *p_interpret) { + _CHECK TRACK + + if (_term(p_interpret)) { + _Bool b_flag = true; + + do { + switch (p_interpret->tt) { + case TT_ASSIGN: + { + Token *p_token = p_interpret->p_token; + Token *p_token_temp = p_interpret->p_token_prev; + _NEXT + + if (!_expression_(p_interpret)) + _INTERPRET_ERROR("Expected expression", p_token); + + p_interpret->p_token_temp = p_token_temp; + function_process(p_interpret, p_token, p_interpret->p_stack, 2); + p_interpret->p_token_temp = NULL; + + } + break; /* case */ + + default: + b_flag = false; + break; + + } /* switch */ + + } while (b_flag); + + return (1); + } + + return (0); +} + +int +_term(Interpret *p_interpret) { + _CHECK TRACK + + switch (p_interpret->tt) { + case TT_INTEGER: + case TT_DOUBLE: + case TT_STRING: + stack_push(p_interpret->p_stack, p_interpret->p_token); + _NEXT + return (1); + + case TT_IDENT: + { + if (_NEXT_TT != TT_ASSIGN) { + if (function_is_buildin(p_interpret->p_token)) { + Token *p_token = p_interpret->p_token; + Stack *p_stack = p_interpret->p_stack; + p_interpret->p_stack = stack_new(); + + if (_HAS_NEXT) { + _NEXT + if (_expression_(p_interpret)); + + } else { + _SKIP + } + + function_process_buildin(p_interpret, p_token, p_interpret->p_stack); + + stack_merge(p_stack, p_interpret->p_stack); + stack_delete(p_interpret->p_stack); + p_interpret->p_stack = p_stack; + + return (1); + + } else if (function_is_self_defined(p_interpret)) { + Token *p_token = p_interpret->p_token; + Stack *p_stack = p_interpret->p_stack; + p_interpret->p_stack = stack_new(); + + _NEXT + if (_expression_(p_interpret)); + + function_process_self_defined(p_interpret, p_token); + + if (stack_empty(p_interpret->p_stack)) { + Token *p_token = token_new_dummy(); + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, 0); + stack_push(p_interpret->p_stack, p_token); + } + + stack_merge(p_stack, p_interpret->p_stack); + stack_delete(p_interpret->p_stack); + p_interpret->p_stack = p_stack; + + return (1); + } + } + + /* It is not a function, it is a variable or some sort of */ + + char *c_name = token_get_val(p_interpret->p_token); + Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name); + + if (p_symbol == NULL) + _INTERPRET_ERROR("No such symbol", p_interpret->p_token); + + SymbolType st = symbol_get_sym(p_symbol); + + switch (st) { + case SYM_VARIABLE: + stack_push(p_interpret->p_stack, symbol_get_val(p_symbol)); + _NEXT + return (1); + + /* Example: proc foo { foo = "Hello"; } foo; say foo; */ + case SYM_PROCEDURE: + stack_push(p_interpret->p_stack, symbol_get_val(p_symbol)); + _NEXT + return (1); + + NO_DEFAULT; + } + } + break; + case TT_DEFINED: + { + _NEXT + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expexted identifier for 'defined'", + p_interpret->p_token); + + char *c_name = token_get_val(p_interpret->p_token); + Token *p_token = token_new_integer(0); + + if (scope_exists(p_interpret->p_scope, c_name)) + token_set_ival(p_token, 1); + + stack_push(p_interpret->p_stack, p_token); + + _NEXT; + return (1); + } + break; + + case TT_UNDEF: + { + _NEXT + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expexted identifier for 'defined'", + p_interpret->p_token); + + char *c_name = token_get_val(p_interpret->p_token); + Token *p_token = NULL; + Symbol *p_symbol = NULL; + + if ((p_symbol = scope_remove(p_interpret->p_scope, c_name))) { + symbol_delete(p_symbol); + p_token = token_new_integer(1); + + } else { + p_token = token_new_integer(0); + } + + stack_push(p_interpret->p_stack, p_token); + + _NEXT; + return (1); + } + break; + + case TT_PARANT_L: + { + Token *p_token = p_interpret->p_token; + _NEXT + + if (_expression_(p_interpret)) { + if (p_interpret->tt != TT_PARANT_R) + _INTERPRET_ERROR("Expected ')'", p_token); + + } else { + _INTERPRET_ERROR("Expected expression", p_token); + } + } + _NEXT + return (1); + + default: + break; + } + + return (0); +} + +int +interpret_process(Interpret *p_interpret) { + p_interpret->p_iter = listiterator_new(p_interpret->p_list_token); + + _NEXT + _program(p_interpret); + + listiterator_delete(p_interpret->p_iter); + + return (1); +} + + +int +interpret_subprocess(Interpret *p_interpret, List *p_list_token) { + Interpret *p_interpret_sub = interpret_new(p_list_token, + NULL); + + p_interpret_sub->p_scope = p_interpret->p_scope; + + int i_ret = interpret_process(p_interpret_sub); + p_interpret->ct = p_interpret_sub->ct; + + interpret_delete(p_interpret_sub); + + return (i_ret); +} + +void +interpret_run(Fype *p_fype) { + Interpret *p_interpret = + interpret_new(p_fype->p_list_token, p_fype->p_hash_syms); + + interpret_process(p_interpret); + + interpret_delete(p_interpret); +} + diff --git a/src/core/interpret.h b/src/core/interpret.h new file mode 100644 index 0000000..e2f4cb7 --- /dev/null +++ b/src/core/interpret.h @@ -0,0 +1,75 @@ +/*:* + *: File: ./src/core/interpret.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef INTERPRET_H +#define INTERPRET_H + +#include "../data/list.h" +#include "../data/stack.h" +#include "../data/hash.h" + +#include "../fype.h" + +#include "garbage.h" +#include "scope.h" +#include "token.h" + +typedef enum { + CONTROL_NONE, + CONTROL_NEXT, + CONTROL_BREAK, +} ControlType; + +typedef struct { + List *p_list_token; + Scope *p_scope; + _Bool b_scope_delete; + Stack *p_stack; + ControlType ct; + + ListIterator *p_iter; + Token *p_token; + TokenType tt; + Token *p_token_prev; + TokenType tt_prev; + Token *p_token_temp; +} Interpret; + +Interpret* interpret_new(List *p_list_token, Hash *p_hash_syms); +void interpret_delete(Interpret *p_interpret); +void interpret_run(Fype *p_type); +int interpret_process(Interpret *p_interpret); +int interpret_subprocess(Interpret *p_interpret, List *p_list_token); + +#endif /* INTERPRET_H */ diff --git a/src/core/scanner.c b/src/core/scanner.c new file mode 100644 index 0000000..85f0780 --- /dev/null +++ b/src/core/scanner.c @@ -0,0 +1,391 @@ +/*:* + *: File: ./src/core/scanner.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "scanner.h" + +#include +#include + +const char const *KEYWORDS[] = { + "if", + "else", + "elsif", + "while", + "ret", + "const", +}; + +const char const *OPERATORS[] = { + "!", + "!=", + "(", + ")", + "*", + "+", + "++", + ",", + "-", + "--", + ".", + "/", + "\\", + ":", + "==", + ";", + "<<", + "<", + "<=", + "=", + ">=", + ">>", + ">", + "{", + "}", +}; + +const char TOKENENDS[] = "{}();:,."; +int CODESTRING_INDEX = 0; + +Scanner* +scanner_new(List *p_list_token, Tupel *p_tupel_argv) { + Scanner *p_scanner = malloc(sizeof(Scanner)); + + Dat *p_dat_string = p_tupel_argv->a; + + if (dat_empty(p_dat_string)) + ERROR("No source given"); + + if (argv_checkopts("e", p_tupel_argv)) { + p_scanner->c_codestring = dat_pop(p_dat_string); + p_scanner->c_filename = NULL; + p_scanner->fp = NULL; + + } else { + p_scanner->c_codestring = NULL; + p_scanner->c_filename = dat_pop(p_dat_string); + p_scanner->fp = fopen(p_scanner->c_filename, "r"); + + if (!p_scanner->fp) + ERROR("Could not open '%s' for reading!", p_scanner->c_filename); + } + + p_scanner->p_list_token = p_list_token; + + p_scanner->i_current_line_nr = 1; + p_scanner->i_current_pos_nr = 0; + + p_scanner->i_num_keywords = sizeof(KEYWORDS) / sizeof(char const *); + p_scanner->i_num_operators = sizeof(OPERATORS) / sizeof(char const *); + p_scanner->i_num_tokenends = strlen(TOKENENDS); + + return p_scanner; +} + +void +scanner_delete(Scanner *p_scanner) { + if (p_scanner->fp) + fclose(p_scanner->fp); + free(p_scanner); +} + +void +scanner_post_task(Scanner *p_scanner) { + List *p_list_token = scanner_get_list_token(p_scanner); + ListIterator *p_iter = listiterator_new(p_list_token); + + Token *pt_last[] = { NULL, NULL }; + TokenType tt_last[] = { TT_NONE, TT_NONE }; + + while (listiterator_has_next(p_iter)) { + ListElem *p_le = listiterator_next_elem(p_iter); + Token *p_token = p_le->p_val; + TokenType tt_cur = token_get_tt(p_token); + + if (pt_last[0]) { + if (tt_cur == TT_INTEGER && tt_last[1] == TT_DOT + && tt_last[0] == TT_INTEGER) { + + token_ref_down(pt_last[0]); + token_ref_down(pt_last[1]); + + char *c_2 = token_get_val(p_token); + char *c_0 = token_get_val(pt_last[0]); + int i_len = strlen(c_2) + strlen(c_0) + 1; + char *c_new = calloc(i_len+1, sizeof(char)); + + sprintf(c_new, "%s.%s", c_0, c_2); + free(c_2); + c_new[i_len] = 0; + + token_set_val(p_token, c_new); + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, atof(c_new)); + + list_remove_elem(p_list_token, p_le->p_prev); + list_remove_elem(p_list_token, p_le->p_prev); + + pt_last[0] = pt_last[1] = NULL; + tt_last[0] = tt_last[1] = TT_NONE; + } + } + + tt_last[0] = tt_last[1]; + tt_last[1] = tt_cur; + + pt_last[0] = pt_last[1]; + pt_last[1] = p_token; + } + + listiterator_delete(p_iter); +} + +_Bool +_scanner_has_next_char(Scanner *p_scanner) { + if (p_scanner->fp) + return !feof(p_scanner->fp); + + return p_scanner->c_codestring[CODESTRING_INDEX] != 0; +} + +char +_scanner_get_next_char(Scanner *p_scanner) { + if (p_scanner->fp) + return fgetc(p_scanner->fp); + + return (p_scanner->c_codestring[CODESTRING_INDEX++]); +} + +void +scanner_run(Fype *p_fype) { + Scanner *p_scanner = scanner_new(p_fype->p_list_token, p_fype->p_tupel_argv); + + int i_token_len = 0; + char *c_token = malloc(sizeof(char)); + + c_token[0] = 0; + + while ( _scanner_has_next_char(p_scanner) ) { + //char c = fgetc(fp); + char c = _scanner_get_next_char(p_scanner); + ++p_scanner->i_current_pos_nr; + + switch (c) { + case '#': + { + c = _scanner_get_next_char(p_scanner); + ++p_scanner->i_current_pos_nr; + _Bool b_multi_comment = c == '*'; + + do { + c = _scanner_get_next_char(p_scanner); + ++p_scanner->i_current_pos_nr; + if (c == '\n') { + ++p_scanner->i_current_line_nr; + p_scanner->i_current_pos_nr = 0; + + if (!b_multi_comment) + break; + + } else if (b_multi_comment && c == '*' && + _scanner_has_next_char(p_scanner)) { + if ( (c = _scanner_get_next_char(p_scanner)) == '#') + break; + + else if (c == '\n') + ++p_scanner->i_current_line_nr; + } + + } while ( _scanner_has_next_char(p_scanner) ); + } + + break; + + case '"': + if (i_token_len) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + } + { + int i_num_nl = 0; + do { + // c = fgetc(fp); + c = _scanner_get_next_char(p_scanner); + if ( c == '\n' ) { + ++i_num_nl; + p_scanner->i_current_pos_nr = 0; + + i_token_len += 2; + c_token = realloc(c_token, sizeof(char) * (i_token_len + 1)); + c_token[i_token_len-2] = '\\'; + c_token[i_token_len-1] = 'n'; + c_token[i_token_len] = 0; + + } else if (c == '"') { + if (i_token_len && c_token[i_token_len-1] == '\\') + c_token[i_token_len-1] = '"'; + + else + break; + + } else { + ++i_token_len; + c_token = realloc(c_token, sizeof(char) * (i_token_len + 1)); + c_token[i_token_len-1] = c; + c_token[i_token_len] = 0; + } + + //} while ( !feof(fp) ); + } while ( _scanner_has_next_char(p_scanner) ); + + scanner_add_token(p_scanner, &c_token, &i_token_len, TT_STRING); + + if (i_num_nl) + p_scanner->i_current_line_nr += i_num_nl; + } + + break; + + case '\n': + case '\t': + case ' ': + if (i_token_len) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + } + + if (c == '\n') { + ++p_scanner->i_current_line_nr; + p_scanner->i_current_pos_nr = 0; + } + + break; + + default: + if (i_token_len) { + char d = c_token[i_token_len-1]; + if ((!isalpha(d) && !isdigit(d) /*&& d != '-'*/) && + (isalpha(c) || isdigit(c))) { + + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + + } else { + for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { + if (TOKENENDS[i] == c) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + break; + } + } + } + } + + ++i_token_len; + c_token = realloc(c_token, sizeof(char) * i_token_len + 1); + c_token[i_token_len-1] = c; + c_token[i_token_len] = 0; + } + } + + if (argv_checkopts("e", p_fype->p_tupel_argv) && i_token_len) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + } + + scanner_post_task(p_scanner); + + char *c_filename = scanner_get_filename(p_scanner); + scanner_delete(p_scanner); + + if (argv_checkopts("TV", p_fype->p_tupel_argv)) + list_iterate(p_fype->p_list_token, token_print_cb); + + char *c_basename = NULL; + if (c_filename) { + int i_len = strlen(c_filename) - 3; + c_basename = calloc(i_len+1, sizeof(char)); + strncpy(c_basename, c_filename, i_len); + c_basename[i_len] = 0; + + } else { + char *c_basename = calloc(1, sizeof(char)); + c_basename[0] = 0; + } + + p_fype->c_basename = c_basename; + + /* + c_token = calloc(2, sizeof(char*)); + c_token[0] = ';'; + c_token[1] = '\0'; + i_token_len = 1; + + scanner_add_token(p_scanner, &c_token, &i_token_len, TT_STRING); + */ +} + +void +scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, + TokenType tt_cur) { + + List *p_list_token = scanner_get_list_token(p_scanner); + Token *p_token = token_new(*cc_token, tt_cur, p_scanner->i_current_line_nr, + p_scanner->i_current_pos_nr, p_scanner->c_filename); + + list_add_back(p_list_token, p_token); + token_ref_up(p_token); + + *cc_token = malloc(sizeof(char)); + (*cc_token)[0] = 0; + *p_token_len = 0; +} + +TokenType +scanner_get_tt_cur(char *c_token) { + if (isdigit(c_token[0])) + return TT_INTEGER; + + if (c_token[0] == '-' && 1 < strlen(c_token) && isdigit(c_token[1])) + return TT_INTEGER; + + TokenType tt_cur = get_tt(c_token); + + return tt_cur == TT_NONE ? TT_IDENT : tt_cur; +} + +void +scanner_cleanup_list_token_cb(void *p_void) { + Token *p_token = p_void; + token_delete(p_token); +} diff --git a/src/core/scanner.h b/src/core/scanner.h new file mode 100644 index 0000000..fc07a28 --- /dev/null +++ b/src/core/scanner.h @@ -0,0 +1,71 @@ +/*:* + *: File: ./src/core/scanner.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef SCANNER_H +#define SCANNER_H + +#include +#include + +#include "token.h" +#include "../fype.h" +#include "../data/dat.h" + +#define scanner_get_list_token(s) s->p_list_token +#define scanner_get_fp(s) s->fp +#define scanner_get_filename(s) s->c_filename +#define scanner_get_codestring(s) s->c_codestring + +typedef struct { + int i_current_line_nr; + int i_current_pos_nr; + int i_num_keywords; + int i_num_operators; + int i_num_tokenends; + char *c_filename; + char *c_codestring; + FILE *fp; + List *p_list_token; +} Scanner; + +Scanner *scanner_new(List *p_list_token, Tupel *p_tupel_argv); +void scanner_post_task(Scanner *p_scanner); +void scanner_delete(Scanner *p_scanner); +void scanner_run(Fype *p_fype); +void scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, + TokenType tt_cur); +TokenType scanner_get_tt_cur(char *c_token); +void scanner_cleanup_list_token_cb(void *p_void); + +#endif diff --git a/src/core/scope.c b/src/core/scope.c new file mode 100644 index 0000000..f1ca006 --- /dev/null +++ b/src/core/scope.c @@ -0,0 +1,150 @@ +/*:* + *: File: ./src/core/scope.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "garbage.h" +#include "scope.h" +#include "symbol.h" + +Scope* +scope_new(Hash *p_hash_syms) { + Scope *p_scope = malloc(sizeof(Scope)); + + p_scope->p_hash_global = p_hash_syms; + p_scope->p_stack_scopes = stack_new(); + + return (p_scope); +} + +void +scope_delete(Scope *p_scope) { + while (!stack_empty(p_scope->p_stack_scopes)) + scope_down(p_scope); + + stack_delete(p_scope->p_stack_scopes); + + free(p_scope); +} + +void +scope_up(Scope *p_scope) { + stack_push(p_scope->p_stack_scopes, hash_new(1024)); +} + +void +scope_down(Scope *p_scope) { + Hash *p_hash_syms = stack_pop(p_scope->p_stack_scopes); + hash_iterate(p_hash_syms, symbol_cleanup_hash_syms_cb); + hash_delete(p_hash_syms); +} + +static Hash* +_scope_get_hash(Scope *p_scope, char *c_key) { + StackIterator *p_iter = stackiterator_new(p_scope->p_stack_scopes); + + while (stackiterator_has_next(p_iter)) { + Hash *p_hash_syms = stackiterator_next(p_iter); + Symbol *p_symbol = hash_get(p_hash_syms, c_key); + + if (p_symbol != NULL) { + stackiterator_delete(p_iter); + return (p_hash_syms); + } + } + + stackiterator_delete(p_iter); + + if (hash_get(p_scope->p_hash_global, c_key)) + return (p_scope->p_hash_global); + + return (NULL); +} + +Symbol* +scope_get(Scope *p_scope, char *c_key) { + Hash *p_hash_syms = _scope_get_hash(p_scope, c_key); + + if (p_hash_syms == NULL) + return (NULL); + + return (hash_get(p_hash_syms, c_key)); +} + +Symbol* +scope_remove(Scope *p_scope, char *c_key) { + Hash *p_hash_syms = _scope_get_hash(p_scope, c_key); + + if (p_hash_syms == NULL) + return (NULL); + + Symbol *p_symbol = hash_remove(p_hash_syms, c_key); + + return (p_symbol); +} + +_Bool +scope_exists(Scope *p_scope, char *c_key) { + return (scope_get(p_scope, c_key) != NULL); +} + +_Bool +scope_reset(Scope *p_scope, char *c_key, Symbol *p_symbol) { + Hash *p_hash_syms = _scope_get_hash(p_scope, c_key); + + if (p_hash_syms == NULL) + return (false); + + hash_remove(p_hash_syms, c_key); + hash_insert(p_hash_syms, c_key, p_symbol); + + return (true); +} + +_Bool +scope_newset(Scope *p_scope, char *c_key, Symbol *p_symbol) { + Hash *p_hash_syms = NULL; + + if (stack_empty(p_scope->p_stack_scopes)) { + if (hash_get(p_scope->p_hash_global, c_key) != NULL) + return (false); + + p_hash_syms = p_scope->p_hash_global; + + } else { + p_hash_syms = stack_top(p_scope->p_stack_scopes); + } + + hash_insert(p_hash_syms, c_key, p_symbol); + + return (true); +} diff --git a/src/core/scope.h b/src/core/scope.h new file mode 100644 index 0000000..63a4373 --- /dev/null +++ b/src/core/scope.h @@ -0,0 +1,59 @@ +/*:* + *: File: ./src/core/scope.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef SCOPE_H +#define SCOPE_H + +#include "../data/hash.h" +#include "../data/stack.h" +#include "../defines.h" +#include "symbol.h" + + +typedef struct { + Hash *p_hash_global; + Stack *p_stack_scopes; +} Scope; + +Scope* scope_new(Hash *p_hash_syms); +void scope_delete(Scope *p_scope); +Symbol *scope_get(Scope *p_scope, char *c_key); +Symbol *scope_remove(Scope *p_scope, char *c_key); +_Bool scope_exists(Scope *p_scope, char *c_key); +_Bool scope_newset(Scope *p_scope, char *c_key, Symbol *p_symbol); +_Bool scope_reset(Scope *p_scope, char *c_key, Symbol *p_symbol); +void scope_down(Scope *p_scope); +void scope_up(Scope *p_scope); + +#endif /* SCOPE_H */ diff --git a/src/core/symbol.c b/src/core/symbol.c new file mode 100644 index 0000000..721603a --- /dev/null +++ b/src/core/symbol.c @@ -0,0 +1,66 @@ +/*:* + *: File: ./src/core/symbol.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "symbol.h" + +#include "../data/list.h" + +Symbol* +symbol_new(SymbolType sym, void *p_val) { + Symbol *p_symbol = malloc(sizeof(Symbol)); + + p_symbol->sym = sym; + p_symbol->p_val = p_val; + + return p_symbol; +} + +void +symbol_delete(Symbol *p_symbol) { + switch (symbol_get_sym(p_symbol)) { + case SYM_PROCEDURE: + { + List *p_list_token = symbol_get_val(p_symbol); + list_delete(p_list_token); + } + break; + NO_DEFAULT; + } + free(p_symbol); +} + +void +symbol_cleanup_hash_syms_cb(void *p_void) { + symbol_delete(p_void); +} diff --git a/src/core/symbol.h b/src/core/symbol.h new file mode 100644 index 0000000..5744383 --- /dev/null +++ b/src/core/symbol.h @@ -0,0 +1,64 @@ +/*:* + *: File: ./src/core/symbol.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef SYMBOL_H +#define SYMBOL_H + +#include "../defines.h" + +#define symbol_set_val(s,v) s->p_val = v +#define symbol_set_sym(s,st) s->sym = st +#define symbol_get_val(s) s->p_val +#define symbol_get_sym(s) s->sym +#define IS_A_FUNCTION(s) (s == SYM_INLINEFUNCTION || s == SYM_FUNCTION) +#define IS_NOT_A_FUNCTION(s) !IS_A_FUNCTION(s) + +typedef enum { + SYM_CONSTANT, + SYM_VARIABLE, + SYM_BUILDIN, + SYM_PROCEDURE, + SYM_FUNCTION, +} SymbolType; + +typedef struct { + SymbolType sym; + void *p_val; +} Symbol; + +Symbol* symbol_new(SymbolType sym, void *p_val); +void symbol_delete(Symbol *p_symbol); +void symbol_cleanup_hash_syms_cb(void *p_void); + +#endif diff --git a/src/core/token.c b/src/core/token.c new file mode 100644 index 0000000..1573371 --- /dev/null +++ b/src/core/token.c @@ -0,0 +1,380 @@ +/*:* + *: File: ./src/core/token.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "token.h" + +#include "garbage.h" + +#define CHECK(...) if (!strcmp(c_token, __VA_ARGS__)) return + +long TOKEN_ID_COUNTER = 0; + +TokenType +get_tt(char *c_token) { + CHECK("if") TT_IF; + CHECK("ifnot") TT_IFNOT; + CHECK("else") TT_ELSE; + CHECK("break") TT_BREAK; + CHECK("while") TT_WHILE; + CHECK("until") TT_UNTIL; + CHECK("int") TT_INT; + CHECK("next") TT_NEXT; + CHECK("defined") TT_DEFINED; + CHECK("undef") TT_UNDEF; + CHECK("ret") TT_RET; + CHECK("const") TT_CONST; + CHECK("proc") TT_PROC; + CHECK("func") TT_FUNC; + CHECK("my") TT_MY; + CHECK("not") TT_NOT; + CHECK("!=") TT_NEQ; + CHECK("=~") TT_RE; + CHECK("(") TT_PARANT_L; + CHECK(")") TT_PARANT_R; + CHECK("*") TT_MULT; + CHECK("+") TT_ADD; + CHECK("++") TT_INCR; + CHECK(",") TT_COMMA; + CHECK("-") TT_SUB; + CHECK("--") TT_DECR; + CHECK(".") TT_DOT; + CHECK("/") TT_DIV; + CHECK("\\") TT_VID; + CHECK(":") TT_DDOT; + CHECK("==") TT_EQ; + CHECK(";") TT_SEMICOLON; + CHECK("<<") TT_LSHIFT; + CHECK(">>") TT_RSHIFT; + CHECK("and") TT_AND; + CHECK("or") TT_OR; + CHECK("xor") TT_XOR; + CHECK("=") TT_ASSIGN; + CHECK("<") TT_LT; + CHECK(">") TT_GT; + CHECK(">=") TT_GE; + CHECK("<=") TT_LE; + CHECK("{") TT_PARANT_CL; + CHECK("}") TT_PARANT_CR; + + return TT_NONE; +} + +#define CASE(t,r) case t: return r; + +char* +tt_get_name(TokenType tt_cur) { + switch (tt_cur) { + CASE(START_TERMINALS, "START_TERMINALS") + CASE(START_TYPES, "START_TYPES") + CASE(START_NUMERICAL, "START_NUMERICAL") + CASE(START_ASSIGNABLES, "START_ASSIGNABLES") + CASE(TT_IDENT, "TT_IDENT") + CASE(TT_DOUBLE,"TT_DOUBLE") + CASE(TT_STRING,"TT_STRING") + CASE(TT_INTEGER,"TT_INTEGER") + CASE(TT_BOOL,"TT_BOOL") + CASE(END_ASSIGNABLES, "END_ASSIGNABLES") + CASE(END_NUMERICAL, "END_NUMERICAL") + CASE(END_TYPES, "END_TYPES") + + // Keywords + CASE(START_KEYWORDS, "START_KEYWORDS") + CASE(TT_ELSE,"TT_ELSE") + CASE(TT_BREAK,"TT_BREAK") + CASE(TT_IF,"TT_IF") + CASE(TT_IFNOT,"TT_IFNOT") + CASE(TT_RET,"TT_RET") + CASE(TT_CONST,"TT_CONST") + CASE(TT_PROC,"TT_PROC") + CASE(TT_FUNC,"TT_FUNC") + CASE(TT_MY,"TT_MY") + CASE(TT_WHILE,"TT_WHILE") + CASE(TT_UNTIL,"TT_UNTIL") + CASE(TT_NEXT,"TT_NEXT") + CASE(TT_DEFINED,"TT_DEFINED") + CASE(TT_UNDEF,"TT_UNDEF") + CASE(TT_INT,"TT_INT") + CASE(END_KEYWORDS, "END_KEYWORDS") + + // Braces + CASE(START_PARANTS, "START_PARANTS") + CASE(TT_PARANT_CL,"TT_PARANT_CL") + CASE(TT_PARANT_CR,"TT_PARANT_CR") + CASE(TT_PARANT_L,"TT_PARANT_L") + CASE(TT_PARANT_R,"TT_PARANT_R") + CASE(END_PARANTS, "END_PARANTS") + + // Operators + CASE(START_OPERATORS, "START_OPERATORS") + CASE(TT_ADD,"TT_ADD") + CASE(TT_ASSIGN,"TT_ASSIGN") + CASE(TT_COMMA,"TT_COMMA") + CASE(TT_DDOT,"TT_DDOT") + CASE(TT_DECR,"TT_DECR") + CASE(TT_DIV,"TT_DIV") + CASE(TT_VID,"TT_VID") + CASE(TT_DOT,"TT_DOT") + CASE(TT_EQ,"TT_EQ") + CASE(TT_LE,"TT_LE") + CASE(TT_LT,"TT_LT") + CASE(TT_GE,"TT_GE") + CASE(TT_GT,"TT_GT") + CASE(TT_INCR,"TT_INCR") + CASE(TT_LSHIFT,"TT_LSHIFT") + CASE(TT_RSHIFT,"TT_RSHIFT") + CASE(TT_AND,"TT_AND") + CASE(TT_OR,"TT_OR") + CASE(TT_XOR,"TT_XOR") + CASE(TT_NOT,"TT_NOT") + CASE(TT_MULT,"TT_MULT") + CASE(TT_NEQ,"TT_NEQ") + CASE(TT_RE,"TT_RE") + CASE(TT_NOTEQ,"TT_NOTEQ") + CASE(TT_SEMICOLON,"TT_SEMICOLON") + CASE(TT_SUB,"TT_SUB") + CASE(END_OPERATORS, "END_OPERATORS") + CASE(END_TERMINALS, "END_TERMINALS") + + // Diverse + CASE(TT_NONE,"TT_NONE") + CASE(TT_END_OF_CODE,"TT_END_OF_CODE") + } + + // Never reach this point + return "XXXXXXX"; +} + +Token* +token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename) { + Token *p_token = token_new_dummy(); + + p_token->c_val = c_val; + p_token->i_val = 0; + p_token->d_val = 0; + p_token->tt_cur = tt_cur; + p_token->i_line_nr = i_line_nr; + p_token->i_pos_nr = i_pos_nr; + p_token->c_filename = c_filename; + + switch (tt_cur) { + case TT_INTEGER: + p_token->i_val = atoi(c_val); + break; + case TT_DOUBLE: + { + p_token->d_val = atof(c_val); + break; + } + NO_DEFAULT; + } + + return p_token; +} + +Token* +token_new_integer(int i_val) { + Token *p_token = token_new_dummy(); + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, i_val); + + return (p_token); +} + +Token* +token_new_double(double d_val) { + Token *p_token = token_new_dummy(); + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, d_val); + + return (p_token); +} + +Token* +token_new_string(char *c_val) { + Token *p_token = token_new_dummy(); + token_set_tt(p_token, TT_STRING); + + p_token->c_val = calloc(strlen(c_val)+1, sizeof(char)); + strcpy(p_token->c_val, c_val); + + return (p_token); +} + + +Token* +token_new_(char *c_val, TokenType tt_cur, char *c_filename) { + return token_new(c_val, tt_cur, -1, -1, c_filename); +} + +Token* +token_new_dummy() { + Token *p_token = malloc(sizeof(Token)); + + p_token->c_val = NULL; + p_token->tt_cur = TT_NONE; + p_token->i_line_nr = -1; + p_token->i_pos_nr = -1; + p_token->c_filename = NULL; + p_token->u_token_id = TOKEN_ID_COUNTER++; + p_token->i_ref_count = 0; + + /* Register the token in the garbage collector */ + garbage_add_token(p_token); + + return p_token; +} + +Token* +token_new_copy(Token *p_token) { + Token *p_token_copy = malloc(sizeof(Token)); + p_token->u_token_id = TOKEN_ID_COUNTER++; + + if (p_token_copy == NULL) + ERROR("Memory alloc error"); + + token_copy_vals(p_token_copy, p_token); + p_token_copy->i_ref_count = 0; + + /* Register the token in the garbage collector */ + garbage_add_token(p_token_copy); + + return (p_token_copy); +} + +void token_copy_vals(Token *p_token_to, Token *p_token_from) { + int i_len; + + // TODO: Check against mem leak + // if (p_token_to->c_val) + // free(p_token_to->c_val); + + if (p_token_from->c_val) { + i_len = strlen(p_token_from->c_val); + p_token_to->c_val = calloc(i_len+1, sizeof(char)); + strcpy(p_token_to->c_val, p_token_from->c_val); + } else { + p_token_to->c_val = NULL; + } + + p_token_to->tt_cur = p_token_from->tt_cur; + p_token_to->i_val = p_token_from->i_val; + p_token_to->d_val = p_token_from->d_val; + p_token_to->i_line_nr = p_token_from->i_line_nr; + p_token_to->i_pos_nr = p_token_from->i_pos_nr; + p_token_to->c_filename = p_token_from->c_filename; +} + +void +token_delete_cb(void *p_void) { + token_delete(p_void); +} + +void +token_ref_down_cb(void *p_void) { + Token *p_token = p_void; + token_ref_down(p_token); +} + +void* +token_copy_cb(void *p_void) { + return (token_new_copy(p_void)); +} + +void +token_delete(Token *p_token) { + if (token_ref_down(p_token) <= 0) { + if (p_token->i_ref_count == 0) { +#ifdef DEBUG_TOKEN_REFCOUNT + printf("Token refcount debug: Token ref count is 0 == %d\n", + p_token->i_ref_count); +#endif /* DEBUG_TOKEN_REFCOUNT */ + if (p_token->c_val) + free(p_token->c_val); + + free(p_token); + } +#ifdef DEBUG_TOKEN_REFCOUNT + else { + printf("Token refcount debug: Token ref count is 0 > %d\n", + p_token->i_ref_count); + } +#endif /* DEBUG_TOKEN_REFCOUNT */ + } +#ifdef DEBUG_TOKEN_REFCOUNT + else { + printf("Token refcount debug: Token ref count is 0 < %d\n", + p_token->i_ref_count); + } +#endif /* DEBUG_TOKEN_REFCOUNT */ +} + +void +token_print(Token *p_token) { + printf("(id=%05u, line=%05d, pos=%04d, type=%s, val=%s, ival=%d, dval=%f," + " refs=%d)", + p_token->u_token_id, + p_token->i_line_nr, + p_token->i_pos_nr, + tt_get_name(p_token->tt_cur), + p_token->c_val, + p_token->i_val, + p_token->d_val, + p_token->i_ref_count); +} + +void +token_print_val(Token *p_token) { + TokenType tt = token_get_tt(p_token); + switch (tt) { + case TT_INTEGER: + printf("(%s, %d)", tt_get_name(tt), token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("(%s, %f)", tt_get_name(tt), token_get_dval(p_token)); + break; + case TT_STRING: + printf("(%s, %s)", tt_get_name(tt), token_get_val(p_token)); + break; + default: + ERROR("Ouups(%s)!", tt_get_name(tt)); + } +} + +void +token_print_cb(void *p_void) { + Token *p_token = p_void; + printf("Token "); + token_print(p_token); + printf("\n"); +} diff --git a/src/core/token.h b/src/core/token.h new file mode 100644 index 0000000..b363279 --- /dev/null +++ b/src/core/token.h @@ -0,0 +1,183 @@ +/*:* + *: File: ./src/core/token.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef TOKEN_H +#define TOKEN_H + +#include "../defines.h" + +#define IS_TERMINAL(t) (START_TERMINALS < t && t < END_TERMINALS) +#define IS_NOT_TERMINAL(t) !IS_TERMINAL(t) +#define IS_TYPE(t) (START_TYPES < t && t < END_TYPES) +#define IS_NOT_TYPE(t) !IS_TYPE(t) +#define IS_KEYWORD(t) (START_KEYWORDS < t && t < END_KEYWORDS) +#define IS_NOT_KEYWORD(t) !IS_KEYWORD(t) +#define IS_OPERATOR(t) (START_OPERATORS < t && t < END_OPERATORS) +#define IS_NOT_OPERATOR(t) !IS_OPERATOR(t) +#define IS_NON_TERMINAL(t) (START_NON_TERMINALS < t && t < END_NON_TERMINALS) +#define IS_NOT_NON_TERMINAL(t) !IS_NON_TERMINAL(t) +#define IS_IDENT(t) (t == TT_IDENT) +#define IS_NOT_IDENT(t) !(IS_IDENT(t)) +#define IS_ASSIGNABLE(t) (START_ASSIGNABLES < t && t < END_ASSIGNABLES) +#define IS_NUMERICAL(t) (START_NUMERICAL < t && t < END_NUMERICAL) +#define IS_NOT_NUMERICAL(t) !(IS_NUMERICAL(t)) + +#define token_get_filename(t) \ + (t->c_filename != NULL ? t->c_filename : "Code string") +#define token_get_line_nr(t) t->i_line_nr +#define token_get_pos_nr(t) t->i_pos_nr +#define token_get_tt(t) (t ? t->tt_cur : TT_NONE) +#define token_get_val(t) t->c_val +#define token_get_ival(t) t->i_val +#define token_get_dval(t) t->d_val +#define token_set_tt(t,tt) t->tt_cur = tt +#define token_set_val(t,c) t->c_val = c +#define token_set_ival(t,i) t->i_val = i +#define token_set_dval(t,d) t->d_val = d +#define token_set_pos(t, l, p) t->i_line_nr = l; t->i_pos_nr = p +#define token_get_posnr(t) t->i_pos_nr +#define token_get_linenr(t) t->i_line_nr +#define token_ref_up(t) ++t->i_ref_count +#define token_ref_down(t) --t->i_ref_count + +typedef enum { + // Diverse + TT_NONE, + TT_END_OF_CODE, + TT_BOOL, // Temporaly disabled, maybe NUMERICAL in future again + + // Diverse types + START_TERMINALS, + START_TYPES, + START_ASSIGNABLES, + START_NUMERICAL, + TT_INTEGER, + TT_DOUBLE, + END_NUMERICAL, + TT_STRING, + END_ASSIGNABLES, + TT_IDENT, + END_TYPES, + + // Keywords + START_KEYWORDS, + TT_ELSE, + TT_BREAK, + TT_IF, + TT_IFNOT, + TT_RET, + TT_CONST, + TT_PROC, + TT_FUNC, + TT_MY, + TT_WHILE, + TT_UNTIL, + TT_NEXT, + TT_INT, + TT_DEFINED, + TT_UNDEF, + END_KEYWORDS, + + START_PARANTS, + TT_PARANT_CL, + TT_PARANT_CR, + TT_PARANT_L, + TT_PARANT_R, + END_PARANTS, + + // Operators + START_OPERATORS, + TT_ADD, + TT_AND, + TT_ASSIGN, + TT_COMMA, + TT_DDOT, + TT_DECR, + TT_DIV, + TT_DOT, + TT_EQ, + TT_GE, + TT_GT, + TT_INCR, + TT_LE, + TT_LSHIFT, + TT_LT, + TT_MULT, + TT_NEQ, + TT_NOT, + TT_NOTEQ, + TT_OR, + TT_RE, + TT_RSHIFT, + TT_SEMICOLON, + TT_SUB, + TT_VID, + TT_XOR, + END_OPERATORS, + + END_TERMINALS, + +} TokenType; + +typedef struct { + TokenType tt_cur; + char *c_val; + int i_val; + double d_val; + int i_line_nr; + int i_pos_nr; + char *c_filename; + unsigned int u_token_id; + int i_ref_count; +} Token; + +Token* token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename); +Token* token_new_integer(int i_val); +Token* token_new_couble(double d_val); +Token* token_new_string(char *c_val); +Token* token_new_copy(Token *p_token); +Token* token_new_(char *c_val, TokenType tt_cur, char *c_filename); +Token* token_new_dummy(); +void token_copy_vals(Token *p_token_to, Token *p_token_from); +void token_delete(Token *p_token); +void token_delete_cb(void *p_token); +void token_ref_down_cb(void *p_token); +void* token_copy_cb(void *p_token); +char* tt_get_name(TokenType tt_cur); +void token_print_cb(void *p_void); +void token_print(Token *p_token); +void token_print_val(Token *p_token); +TokenType get_tt(char *c_token); + +#endif diff --git a/src/data/array.c b/src/data/array.c new file mode 100644 index 0000000..e893a6d --- /dev/null +++ b/src/data/array.c @@ -0,0 +1,266 @@ +/*:* + *: File: ./src/data/array.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "array.h" + +Array* +array_new() { + Array *p_array = malloc(sizeof(Array)); + + p_array->i_size = 0; + p_array->pp_ae = NULL; + + return p_array; +} + + +void +array_delete(Array *p_array) { + if (!p_array) + return; + + if (p_array->i_size) + for (int i = p_array->i_size - 1; i >= 0; --i) + arrayelement_delete(p_array->pp_ae[i]); + + if (p_array->pp_ae) + free(p_array->pp_ae); + + free(p_array); +} + +void +array_set(Array *p_array, int i_index, void *p_val) { + if (p_array->i_size > i_index) { + p_array->pp_ae[i_index]->p_val = p_val; + + } else { + array_resize(p_array, i_index + 1); + p_array->pp_ae[i_index]->p_val = p_val; + } +} + +void +array_insert(Array *p_array, int i_index, void *p_val) { + if (p_array->i_size <= i_index) { + array_set(p_array, i_index, p_val); + + } else { + array_resize(p_array, p_array->i_size + 1); + + ArrayElement *p_ae = p_array->pp_ae[p_array->i_size-1]; + int i; + for (i = p_array->i_size - 1; i > i_index; --i) + p_array->pp_ae[i] = p_array->pp_ae[i-1]; + + p_array->pp_ae[i] = p_ae; + p_ae->p_val = p_val; + } +} + +void* +array_remove(Array *p_array, int i_index) { + if (p_array->i_size <= i_index) + return NULL; + + ArrayElement *p_ae = p_array->pp_ae[i_index]; + void *p_ret = p_ae->p_val; + int i; + + for (i = i_index+1; i < p_array->i_size; ++i) + p_array->pp_ae[i-1] = p_array->pp_ae[i]; + + p_array->pp_ae[i-1] = p_ae; + + array_resize(p_array, p_array->i_size - 1); + + return p_ret; +} + +void +array_print_int(Array *p_array) { + printf("Array:"); + for (int i = 0; i < p_array->i_size; ++i) + printf(" (%d,%d)", i, (int) array_get(p_array, i)); + printf("\n"); +} + +void +array_resize(Array *p_array, int i_size) { + if (i_size == p_array->i_size) + return; + + if (i_size < p_array->i_size) + for (int i = p_array->i_size - 1; i >= i_size; --i) + arrayelement_delete(p_array->pp_ae[i]); + + if (i_size == 0) { + free(p_array->pp_ae); + p_array->pp_ae = NULL; + + } else if (p_array->pp_ae != NULL) { + p_array->pp_ae = realloc(p_array->pp_ae, + sizeof(ArrayElement) * i_size); + + } else { + p_array->pp_ae = malloc(sizeof(ArrayElement) * i_size); + } + + if (i_size > p_array->i_size) + for (int i = p_array->i_size; i < i_size; ++i) + p_array->pp_ae[i] = arrayelement_new(NULL); + + p_array->i_size = i_size; +} + +void* +array_get(Array *p_array, int i_index) { + if (p_array->i_size > i_index) + return p_array->pp_ae[i_index]->p_val; + + return NULL; +} + +_Bool +array_defined(Array *p_array, int i_index) { + if (i_index >= p_array->i_size) + return false; + + return p_array->pp_ae[i_index]->p_val != NULL; +} + +void +array_splice(Array *p_array, int i_index, Array *p_array2) { + if (i_index >= array_get_size(p_array)) + return; + + array_remove(p_array, i_index); + + int i_size1= array_get_size(p_array); + int i_size2 = array_get_size(p_array2); + int i_size = i_size1 + i_size2; + + array_resize(p_array, i_size); + + for (int i = i_size1 - 1; i >= i_index; --i) + p_array->pp_ae[i+i_size2]->p_val = p_array->pp_ae[i]->p_val; + + for (int i = 0; i < i_size2; ++i) + p_array->pp_ae[i+i_index]->p_val = p_array2->pp_ae[i]->p_val; + +} + +void +array_unshift(Array *p_array, void *p_void) { + int i_size = array_get_size(p_array); + array_set(p_array, i_size, p_void); +} + +void +array_push(Array *p_array, void *p_void) { + int i_size = array_get_size(p_array); + array_resize(p_array, ++i_size); + + for (int i = i_size - 1; i > 0; --i) + p_array->pp_ae[i]->p_val = p_array->pp_ae[i-1]->p_val; + + array_set(p_array, 0, p_void); +} + +void +array_iterate(Array *p_array, void (*func)(void *)) { + if (!p_array) + return; + + for (int i = 0; i < array_get_size(p_array); ++i) + (*func) (array_get(p_array, i)); +} + +void +array_iterate2(Array *p_array, void (*func)(void *, void *), void *p_void) { + if (!p_array) + return; + + for (int i = 0; i < array_get_size(p_array); ++i) + (*func) (array_get(p_array, i), p_void); +} + +ArrayElement* +arrayelement_new(void *p_val) { + ArrayElement *p_ae = malloc(sizeof(ArrayElement)); + + p_ae->p_val = p_val; + + return p_ae; +} + +void +arrayelement_delete(ArrayElement *p_ae) { + if (!p_ae) + return; + + free(p_ae); +} + +ArrayIterator* +arrayiterator_new(Array *p_array) { + if (!p_array) + return NULL; + + ArrayIterator *p_arrayiterator = malloc(sizeof(ArrayIterator)); + p_arrayiterator->p_array = p_array; + p_arrayiterator->i_cur_pos = 0; + + return p_arrayiterator; +} + +void +arrayiterator_delete(ArrayIterator *p_arrayiterator) { + if (p_arrayiterator) + free(p_arrayiterator); +} + +_Bool +arrayiterator_has_next(ArrayIterator *p_arrayiterator) { + return p_arrayiterator->i_cur_pos < + array_get_size(p_arrayiterator->p_array); +} + +void* +arrayiterator_next(ArrayIterator *p_arrayiterator) { + if (!arrayiterator_has_next(p_arrayiterator)) + return NULL; + + return array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++); +} diff --git a/src/data/array.h b/src/data/array.h new file mode 100644 index 0000000..a60fa03 --- /dev/null +++ b/src/data/array.h @@ -0,0 +1,86 @@ +/*:* + *: File: ./src/data/array.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef ARRAY_H +#define ARRAY_H + +#include +#include + +#include "../defines.h" + +#define array_get_size(a) a->i_size +#define array_empty(a) a->i_size == 0 +#define array_clear(a) array_resize(a, 0) +#define array_get_first(a) array_get(a, 0) +#define array_get_last(a) array_get(a, array_get_size(a)-1) + +typedef struct { + void *p_val; +} ArrayElement; + +typedef struct { + ArrayElement **pp_ae; + int i_size; +} Array; + +typedef struct { + Array *p_array; + int i_cur_pos; +} ArrayIterator; + +Array *array_new(); +void array_delete(Array *p_array); +void array_set(Array *p_array, int i_index, void *p_val); +void array_insert(Array *p_array, int i_index, void *p_val); +void *array_remove(Array *p_array, int i_index); +void *array_get(Array *p_array, int i_index); +void array_resize(Array *p_array, int i_size); +_Bool array_defined(Array *p_array, int i_index); +void array_print_int(Array *p_array); +void array_splice(Array *p_array, int i_index, Array *p_array2); +void array_push(Array *p_array, void *p_void); +void array_unshift(Array *p_array, void *p_void); +void array_iterate(Array *p_array, void (*func)(void *)); +void array_iterate2(Array *p_array, void (*func)(void *, void *), + void *p_void); + +ArrayElement *arrayelement_new(void *p_val); +void arrayelement_delete(ArrayElement *p_ae); + +ArrayIterator *arrayiterator_new(Array *p_array); +void arrayiterator_delete(ArrayIterator *p_arrayiterator); +_Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator); +void *arrayiterator_next(ArrayIterator *p_arrayiterator); +#endif diff --git a/src/data/dat.c b/src/data/dat.c new file mode 100644 index 0000000..1becf25 --- /dev/null +++ b/src/data/dat.c @@ -0,0 +1,267 @@ +/*:* + *: File: ./src/data/dat.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "dat.h" + +#include + +Dat* +dat_new() { + Dat *p_dat = (Dat *) malloc(sizeof(Dat)); + + p_dat->p_first = 0; + p_dat->p_last = 0; + p_dat->i_size = 0; + + return p_dat; +} + +DatElem* +datelem_new() { + return datelem_new_t(TYPE_UNKNOWN); +} + +DatElem* +datelem_new_t(TYPE type) { + DatElem *p_elem = (DatElem *) malloc(sizeof(DatElem)); + + p_elem->p_next = 0; + p_elem->p_val = 0; + p_elem->type = type; + + return p_elem; +} + +_Bool +dat_empty(Dat *p_dat) { + if (p_dat == NULL) + return 0; + + return p_dat->i_size == 0; +} + +void +dat_push(Dat *p_dat, void *p_val) { + dat_push_t(p_dat, p_val, TYPE_UNKNOWN); +} + +void +dat_push_t(Dat *p_dat, void *p_val, TYPE type) { + DatElem *p_elem = datelem_new_t(type); + p_elem->p_val = p_val; + + if (0 == p_dat->i_size++) + p_dat->p_first = p_elem; + else + p_dat->p_last->p_next = p_elem; + + p_dat->p_last = p_elem; +} + +void* +dat_pop(Dat *p_dat) { + TYPE type; + return dat_pop_t(p_dat, &type); +} + +void* +dat_pop_t(Dat *p_dat, TYPE *p_type) { + if (dat_empty(p_dat)) + return 0; + + DatElem *p_elem = p_dat->p_first; + p_dat->p_first = p_elem->p_next; + + --p_dat->i_size; + + void *p_ret = p_elem->p_val; + *p_type = p_elem->type; + free(p_elem); + return p_ret; +} + +void +dat_clear(Dat *p_dat) { + for (;!dat_empty(p_dat); dat_pop(p_dat)); +} + +void +dat_delete(Dat *p_dat) { + dat_clear(p_dat); + free(p_dat); +} + +unsigned +dat_size(Dat *p_dat) { + return p_dat->i_size; +} + +void +dat_iterate(Dat *p_dat, void (*func)(void *)) { + DatElem *p_elem = p_dat->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val); + + p_elem = p_elem->p_next; + } +} + +void +dat_iterate_t(Dat *p_dat, void (*func)(void *, TYPE)) { + DatElem *p_elem = p_dat->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val, p_elem->type); + + p_elem = p_elem->p_next; + } +} + +void +dat_iterate_tl(Dat *p_dat, void (*func)(void *, TYPE, _Bool)) { + DatElem *p_elem = p_dat->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val, p_elem->type, p_elem->p_next == NULL); + + p_elem = p_elem->p_next; + } +} + +void* +dat_first(Dat *p_dat) { + if (dat_empty(p_dat)) + return NULL; + + return p_dat->p_first->p_val; +} + +void* +dat_second(Dat *p_dat) { + if ( 2 > dat_size(p_dat)) + return NULL; + + return p_dat->p_first->p_next->p_val; +} + +void* +dat_last(Dat *p_dat) { + if (dat_empty(p_dat)) + return NULL; + + return p_dat->p_last->p_val; +} + +void* +dat_first_t(Dat *p_dat, TYPE *p_type) { + if (dat_empty(p_dat)) + return NULL; + + *p_type = p_dat->p_first->type; + return p_dat->p_first->p_val; +} + +void* +dat_second_t(Dat *p_dat, TYPE *p_type) { + if ( 2 > dat_size(p_dat)) + return NULL; + + *p_type = p_dat->p_first->p_next->type; + return p_dat->p_first->p_next->p_val; +} + +void* +dat_last_t(Dat *p_dat, TYPE *p_type) { + if (dat_empty(p_dat)) + return NULL; + + *p_type = p_dat->p_last->type; + return p_dat->p_last->p_val; +} + +DatIter* +datiter_new(Dat *p_dat) { + DatIter *p_iter = + (DatIter *) malloc(sizeof(DatIter)); + + p_iter->p_current = NULL; + p_iter->p_next = p_dat->p_first; + p_iter->i_left = dat_size(p_dat); + p_iter->p_dat = p_dat; + + return p_iter; +} + +void +datiter_delete(DatIter *p_iter) { + free(p_iter); +} + +void +datiter_skip(DatIter *p_iter, unsigned i_num) { + for (int i = 0; i < i_num; ++i) + datiter_next(p_iter); +} + +void* +datiter_next(DatIter *p_iter) { + TYPE type; + return datiter_next_t(p_iter, &type); +} + +void* +datiter_next_t(DatIter *p_iter, TYPE *p_type) { + if (p_iter->p_next == NULL) + return NULL; + + void *p_ret = p_iter->p_next->p_val; + *p_type = p_iter->p_next->type; + p_iter->p_current = p_iter->p_next; + p_iter->p_next = p_iter->p_next->p_next; + --p_iter->i_left; + + return p_ret; +} + +unsigned +datiter_left(DatIter *p_iter) { + return p_iter->i_left; +} + +Dat* +datiter_dat(DatIter *p_iter) { + return p_iter->p_dat; +} + diff --git a/src/data/dat.h b/src/data/dat.h new file mode 100644 index 0000000..82264e4 --- /dev/null +++ b/src/data/dat.h @@ -0,0 +1,88 @@ +/*:* + *: File: ./src/data/dat.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef DAT_H +#define DAT_H + +#include "types.h" + +typedef struct DatElem_ { + struct DatElem_ *p_next; + void *p_val; + TYPE type; +} DatElem; + +typedef struct { + DatElem *p_first; + DatElem *p_last; + unsigned i_size; +} Dat; + +typedef struct { + unsigned i_left; + Dat *p_dat; + DatElem *p_current; + DatElem *p_next; +} DatIter; + +Dat *dat_new(); +DatElem *datelem_new(); +DatElem *datelem_new_t(TYPE type); +_Bool dat_empty(Dat *p_dat); +void dat_push(Dat *p_dat, void *p_val); +void dat_push_t(Dat *p_dat, void *p_val, TYPE type); +void *dat_pop(Dat *p_dat); +void *dat_pop_t(Dat *p_dat, TYPE *p_type); +void dat_clear(Dat *p_dat); +void dat_delete(Dat *p_dat); +unsigned dat_size(Dat *p_dat); +void dat_iterate(Dat *p_dat, void (*func)(void *)); +void dat_iterate_t(Dat *p_dat, void (*func)(void *, TYPE)); +void dat_iterate_tl(Dat *p_dat, void (*func)(void *, TYPE, _Bool)); +void *dat_first(Dat *p_dat); +void *dat_second(Dat *p_dat); +void *dat_last(Dat *p_dat); +void *dat_first_t(Dat *p_dat, TYPE *p_type); +void *dat_second_t(Dat *p_dat, TYPE *p_type); +void *dat_last_t(Dat *p_dat, TYPE *p_type); + +DatIter *datiter_new(Dat *p_dat); +void datiter_delete(DatIter *p_iter); +void datiter_skip(DatIter *p_iter, unsigned i_num); +void *datiter_next(DatIter *p_iter); +void *datiter_next_t(DatIter *p_iter, TYPE *p_type); +unsigned datiter_left(DatIter *p_iter); +Dat *datiter_dat(DatIter *p_iter); + +#endif diff --git a/src/data/hash.c b/src/data/hash.c new file mode 100644 index 0000000..cc32a6b --- /dev/null +++ b/src/data/hash.c @@ -0,0 +1,290 @@ +/*:* + *: File: ./src/data/hash.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "hash.h" + +#include +#include +#include + +Hash* +hash_new(unsigned i_size) { + Hash *p_hash = (Hash *) malloc(sizeof(Hash)); + + p_hash->i_size = i_size; + p_hash->i_cur_size = 0; + p_hash->p_elems = (HashElem *) calloc(i_size, sizeof(HashElem)); + + /*Set all positions as "free" */ + for (int i = 0; i < i_size; ++i) + p_hash->p_elems[i].flag = 'f'; + + return p_hash; +} + +void +hash_delete(Hash *p_hash) { + if (p_hash->p_elems) { + free(p_hash->p_elems); + p_hash->p_elems = 0; + } + + free(p_hash); +} + +RETCODE +hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type) { + if (p_hash->i_cur_size == p_hash->i_size) + hash_size(p_hash, p_hash->i_size *2); + + int i_addr = hash_getaddr(p_hash, c_key, free_ADDR); + + if (i_addr == RET_ERROR ) + return RET_NO_SPACE; + + strncpy(p_hash->p_elems[i_addr].c_key, c_key, HASH_MKEYLEN); + + p_hash->p_elems[i_addr].flag = 'o'; + p_hash->p_elems[i_addr].type = type; + p_hash->p_elems[i_addr].p_val = p_val; + p_hash->i_cur_size++; + + return RET_OK; +} + +RETCODE +hash_insert(Hash *p_hash, char *c_key, void *p_val) { + return hash_insert_ht(p_hash, c_key, p_val, TYPE_VOIDP); +} + +void* +hash_remove(Hash *p_hash, char *c_key) { + if (p_hash->i_cur_size < p_hash->i_size / 3) + hash_size(p_hash, p_hash->i_size / 2); + + int i_addr = hash_getaddr(p_hash, c_key, OCC_ADDR); + + if (i_addr == -1 ) + return 0; + + void *p_val = p_hash->p_elems[i_addr].p_val; + p_hash->p_elems[i_addr].flag = 'm'; + p_hash->p_elems[i_addr].p_val = 0; + --p_hash->i_cur_size; + + return p_val; +} + +void* +hash_get_ht(Hash *p_hash, char *c_key, TYPE *p_type) { + int i_addr; + return hash_get_ht_addr(p_hash, c_key, p_type, &i_addr); +} + +void* +hash_get_ht_addr(Hash *p_hash, char *c_key, TYPE *p_type, int *p_addr) { + int i_addr = *p_addr = hash_getaddr(p_hash, c_key, OCC_ADDR); + + if (i_addr == -1 ) + return 0; + + *p_type = p_hash->p_elems[i_addr].type; + return p_hash->p_elems[i_addr].p_val; +} + +void* +hash_get(Hash *p_hash, char *c_key) { + TYPE type; + return hash_get_ht(p_hash, c_key, &type); +} + +int +hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP) { + int i_len = strlen(c_key); + int i_addr = 0; + + if (i_len > HASH_MKEYLEN) { + ERROR(": Key length %d is greater than HASH_MKEYLEN = %d!", + i_len, HASH_MKEYLEN); + //i_len = HASH_MKEYLEN; + } + + for (int i= 0; i < i_len; ++i) + i_addr = (i_addr *p_hash->i_size + (int) c_key[i]) % p_hash->i_size; + + switch (OP) { + case free_ADDR: + if (!hash_addrisfree(p_hash,i_addr)) + return i_addr; + break; + + case OCC_ADDR: + if (!hash_addrisocc(p_hash,i_addr, c_key)) + return i_addr; + break; + + default: + return RET_ERROR; + } + + return hash_nextaddr(p_hash, p_hash->i_size, c_key, i_addr, OP); +} + +RETCODE +hash_addrisfree(Hash *p_hash, int i_addr) { + if (p_hash->p_elems[i_addr].flag == 'f' || + p_hash->p_elems[i_addr].flag == 'm') + return RET_OK; + + return RET_ERROR; +} + +RETCODE +hash_addrisocc(Hash *p_hash, int i_addr, char *c_key) { + if (p_hash->p_elems[i_addr].flag == 'o' && + !strcmp(p_hash->p_elems[i_addr].c_key, c_key)) + return RET_OK; + + return RET_ERROR; +} + +int +hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr, + HASH_OP OP) { + if ( --i_max_tries < 0 ) + return RET_ERROR; + + i_addr = (i_addr + 1) % p_hash->i_size; + + switch (OP) { + case free_ADDR: + if (!hash_addrisfree(p_hash,i_addr)) + return i_addr; + break; + + case OCC_ADDR: + if (!hash_addrisocc(p_hash,i_addr, c_key)) + return i_addr; + break; + } + + return hash_nextaddr(p_hash, i_max_tries, c_key, i_addr, OP); +} + +void +hash_print(Hash *p_hash) { + printf("hash_print [size:%d,cur:%d] syntax (flag[,key][=TYPE[]]):\n -> ", + p_hash->i_size,p_hash->i_cur_size); + + for (int i = 0; i < p_hash->i_size; ++i) { + switch (p_hash->p_elems[i].flag) { + case 'f': + printf("(f"); + break; + case 'm': + printf("(m,%s=", p_hash->p_elems[i].c_key); + hash_print_addrval(p_hash, i); + break; + case 'o': + printf("(o,%s=", p_hash->p_elems[i].c_key); + hash_print_addrval(p_hash, i); + break; + } + printf(") "); + } + + printf("\n"); + +} + +void +hash_print_addrval(Hash *p_hash, int i_addr) { + switch (p_hash->p_elems[i_addr].type) { + case TYPE_NUMBER: { + double d_val = *(double *) p_hash->p_elems[i_addr].p_val; + + if ( (int) d_val == d_val ) + printf("TYPE_NUMBER<%.0f>",d_val); + else + printf("TYPE_NUMBER<%f>",d_val); + } + break; + + case TYPE_STRING: + printf("TYPE_STRING<%s>", (char *) p_hash->p_elems[i_addr].p_val); + break; + + case TYPE_VOIDP: + printf("TYPE_VOIDP"); + break; + + default: + printf("UNKNOWN"); + break; + } +} + +RETCODE +hash_size(Hash *p_hash, int i_size) { + if (i_size < p_hash->i_cur_size) { + ERROR("The new hash has not enough elements" + "to contain the old hash!"); + } + + HashElem *p_old_elems = p_hash->p_elems; + unsigned i_old_size = p_hash->i_size; + + p_hash->p_elems = (HashElem *) calloc(i_size, sizeof(HashElem)); + p_hash->i_size = i_size; + p_hash->i_cur_size = 0; + + /*Set all positions as "free" */ + for (int i = 0; i < i_size; ++i) + p_hash->p_elems[i].flag = 'f'; + + for (int i = 0; i < i_old_size; ++i) + if (p_old_elems[i].flag == 'o') + hash_insert_ht(p_hash, p_old_elems[i].c_key, + p_old_elems[i].p_val, p_old_elems[i].type); + + free(p_old_elems); + return RET_OK; +} + +void +hash_iterate(Hash *p_hash, void (*func)(void *)) { + for (int i = 0; i < p_hash->i_size; ++i) + if (p_hash->p_elems[i].flag == 'o') + (*func) (p_hash->p_elems[i].p_val); +} diff --git a/src/data/hash.h b/src/data/hash.h new file mode 100644 index 0000000..8616549 --- /dev/null +++ b/src/data/hash.h @@ -0,0 +1,80 @@ +/*:* + *: File: ./src/data/hash.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef HASH_H +#define HASH_H + +#include "../defines.h" +#include "types.h" + +typedef enum HASH_OP_ { + free_ADDR, + OCC_ADDR +} HASH_OP; + +typedef struct { + char c_key[HASH_MKEYLEN]; + char flag; + TYPE type; + void *p_val; +} HashElem; + +typedef struct { + HashElem *p_elems; + unsigned i_size; + unsigned i_cur_size; +} Hash; + +Hash*hash_new(unsigned i_size); +void hash_delete(Hash *p_hash); +RETCODE hash_insert(Hash *p_hash, char *c_key, void *p_val); +RETCODE hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type); +void*hash_get(Hash *p_hash, char *c_key); +void*hash_get_ht(Hash *p_hash, char *c_key, TYPE *p_type); +void*hash_get_ht_addr(Hash *p_hash, char *c_key, TYPE *p_type, int *p_addr); +void*hash_remove(Hash *p_hash, char *c_key); +void hash_print(Hash *p_hash); +void hash_print_addrval(Hash *p_hash, int i_addr); +RETCODE hash_size(Hash *p_hash, int i_size); + +int hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP); +RETCODE hash_addrisfree(Hash *p_hash, int i_addr); +RETCODE hash_addrisocc(Hash *p_hash, int i_addr, char *c_key); +int hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr, HASH_OP OP); +void hash_iterate(Hash *p_hash, void (*func)(void *)); + +#define hash_get_cur_size(hash) hash->i_cur_size +#define hash_get_size(hash) hash->i_size + +#endif diff --git a/src/data/list.c b/src/data/list.c new file mode 100644 index 0000000..00e5a72 --- /dev/null +++ b/src/data/list.c @@ -0,0 +1,458 @@ +/*:* + *: File: ./src/data/list.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "list.h" + +List* +list_new() { + List *p_list = malloc(sizeof(List)); + + p_list->p_first = NULL; + p_list->p_last = NULL; + p_list->i_size = 0; + + return p_list; +} + +void +_list_copy_cb(void *p_void1, void *p_cpy) { + ListElem *p_elem = p_void1; + list_add_back(p_cpy, p_elem->p_val); +} + +List* +list_copy(List *p_list) { + List *p_list_cpy = list_new(); + list_iterate2(p_list, _list_copy_cb, p_list_cpy); + return (p_list_cpy); +} + +List* +list_copy2(List *p_list, void* (*func)(void *)) { + List *p_list_cpy = list_new(); + ListIterator *p_iter = listiterator_new(p_list); + + while (listiterator_has_next(p_iter)) + list_add_back(p_list_cpy, (*func) (listiterator_next(p_iter))); + + listiterator_delete(p_iter); + + return (p_list_cpy); +} + +ListElem* +listelem_new() { + ListElem *p_elem = malloc(sizeof(ListElem)); + + p_elem->p_next = NULL; + p_elem->p_prev = NULL; + p_elem->p_val = NULL; + return p_elem; +} + +_Bool +list_empty(List *p_list) { + return p_list->i_size == 0; +} + +void +list_concat_front(List *p_list1, List *p_list2) { + if (!p_list1 || !p_list2 || !p_list2->p_last) + return; + + ListElem *p_first = p_list1->p_first; + + if (!p_first) { + p_list1->p_first = p_list2->p_first; + p_list1->p_last = p_list2->p_last; + + } else { + p_list2->p_last->p_next = p_list1->p_first; + p_list1->p_first->p_prev = p_list2->p_last; + p_list1->p_first = p_list2->p_first; + } + + p_list1->i_size += p_list2->i_size; + p_list2->i_size = 0; + p_list2->p_first = NULL; + p_list2->p_last = NULL; +} + +void +list_concat_back(List *p_list1, List *p_list2) { + if (!p_list1 || !p_list2 || !p_list2->p_first) + return; + + ListElem *p_last = p_list1->p_last; + + if (!p_last) { + p_list1->p_first = p_list2->p_first; + p_list1->p_last = p_list2->p_last; + + } else { + p_last->p_next = p_list2->p_first; + p_list2->p_first->p_prev = p_last; + p_list1->p_last = p_list2->p_last; + } + + p_list1->i_size += p_list2->i_size; + p_list2->i_size = 0; + p_list2->p_first = NULL; + p_list2->p_last = NULL; + +} + +void +list_add_front(List *p_list, void *p_val) { + ListElem *p_elem = listelem_new(); + + p_elem->p_val = p_val; + if (p_list->p_first == NULL) { + p_list->p_first = p_elem; + p_list->p_last = p_elem; + + } else { + p_elem->p_next = p_list->p_first; + p_list->p_first->p_prev = p_elem; + p_list->p_first = p_elem; + } + + ++p_list->i_size; +} + +void +list_add_back(List *p_list, void *p_val) { + ListElem *p_elem = listelem_new(); + + p_elem->p_val = p_val; + if (p_list->p_last == NULL) { + p_list->p_first = p_elem; + p_list->p_last = p_elem; + + } else { + p_elem->p_prev = p_list->p_last; + p_list->p_last->p_next = p_elem; + p_list->p_last = p_elem; + } + + ++p_list->i_size; +} + +void* +list_remove_front(List *p_list) { + if (list_empty(p_list)) + return NULL; + + ListElem *p_elem = p_list->p_first; + p_list->p_first = p_elem->p_next; + + if (p_list->p_first) + p_list->p_first->p_prev = NULL; + + void *p_val = p_elem->p_val; + free(p_elem); + + --p_list->i_size; + + return p_val; +} + +void* +list_remove_back(List *p_list) { + if (list_empty(p_list)) + return NULL; + + ListElem *p_elem = p_list->p_last; + p_list->p_last = p_elem->p_prev; + p_list->p_last->p_next = NULL; + + void *p_val = p_elem->p_val; + free(p_elem); + + --p_list->i_size; + + return p_val; +} + +void +list_clear(List *p_list) { + for (;!list_empty(p_list); list_remove_front(p_list)); +} + +void +list_clear_and_free_vals(List *p_list) { + void *p_void = NULL; + for (;!list_empty(p_list); p_void = list_remove_front(p_list)) + if (p_void) + free(p_void); +} + +void +list_delete(List *p_list) { + list_clear(p_list); + free(p_list); +} + +void +list_delete_cb(void *p_list) { + list_delete(p_list); +} + +void +list_delete_and_free_vals(List *p_list) { + list_clear_and_free_vals(p_list); + free(p_list); +} + +unsigned +list_size(List *p_list) { + return p_list->i_size; +} + +void +list_iterate(List *p_list, void (*func)(void *)) { + ListElem *p_elem = p_list->p_first; + + while (p_elem) { + (*func) (p_elem->p_val); + p_elem = p_elem->p_next; + } +} + +void +list_iterate2(List *p_list, void (*func)(void *, void *), void *p_void) { + ListElem *p_elem = p_list->p_first; + + while (p_elem) { + (*func) (p_elem->p_val, p_void); + p_elem = p_elem->p_next; + } +} + +void +list_iterate2_ptr(List *p_list, void (*func)(void *, void *), void *p_void) { + ListElem *p_elem = p_list->p_first; + + while (p_elem) { + (*func) (&p_elem->p_val, p_void); + p_elem = p_elem->p_next; + } +} + +void +list_iterate3(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2) { + ListElem *p_elem = p_list->p_first; + + while (p_elem) { + (*func) (p_elem->p_val, p_void1, p_void2); + p_elem = p_elem->p_next; + } +} + +void +list_iterate3_ptr(List *p_list, void (*func)(void *, void *, void *), + void *p_void1, void *p_void2) { + ListElem *p_elem = p_list->p_first; + + while (p_elem) { + (*func) (&p_elem->p_val, p_void1, p_void2); + p_elem = p_elem->p_next; + } +} + +void +list_remove_elem(List *p_list, ListElem *p_elem_remove) { + ListElem *p_elem = p_list->p_first; + + if (p_elem == p_elem_remove) { + p_list->p_first = p_elem->p_next; + p_list->p_first->p_prev = NULL; + --p_list->i_size; + return; + } + + while ((p_elem = p_elem->p_next)) { + if (p_elem == p_elem_remove) { + ListElem *p_prev = p_elem->p_prev; + ListElem *p_next = p_elem->p_next; + + if (p_next) { + p_prev->p_next = p_next; + p_next->p_prev = p_prev; + + } else { + p_prev->p_next = NULL; + p_list->p_last = p_prev; + } + + --p_list->i_size; + free(p_elem_remove); + return; + } + } +} + +ListIterator* +listiterator_new(List *p_list) { + if (!p_list) + return NULL; + + ListIterator *p_iter = malloc(sizeof(ListIterator)); + + p_iter->p_cur = p_list->p_first; + p_iter->b_reverse = false; + p_iter->func = NULL; + + return p_iter; +} + +ListIterator* +listiterator_new_reverse(List *p_list) { + if (!p_list) + return NULL; + + ListIterator *p_iter = listiterator_new(p_list); + + p_iter->p_cur = p_list->p_last; + p_iter->b_reverse = true; + + return p_iter; +} + +void +listiterator_delete(ListIterator *p_iter) { + if (p_iter) + free(p_iter); +} + +void* +listiterator_next(ListIterator *p_iter) { + if (p_iter->p_cur) { + void *p_ret = p_iter->p_cur->p_val; + + if (p_iter->b_reverse) + p_iter->p_cur = p_iter->p_cur->p_prev; + + else + p_iter->p_cur = p_iter->p_cur->p_next; + + if (p_iter->func) + return ((*p_iter->func) (p_ret)); + + else + return (p_ret); + } + + return (NULL); +} + +void* +listiterator_prev(ListIterator *p_iter) { + if (p_iter->p_cur) { + void *p_ret = p_iter->p_cur->p_val; + + if (!p_iter->b_reverse) + p_iter->p_cur = p_iter->p_cur->p_prev; + + else + p_iter->p_cur = p_iter->p_cur->p_next; + + if (p_iter->func) + return ((*p_iter->func) (p_ret)); + + else + return (p_ret); + } + + return (NULL); +} + +void* +listiterator_current(ListIterator *p_iter) { + if (p_iter->p_cur) + return (p_iter->p_cur->p_val); + + return (NULL); +} + +void* +listiterator_end(ListIterator *p_iter) { + void *p_ret = NULL; + + while (listiterator_has_next(p_iter)) + p_ret = listiterator_next(p_iter); + + return (p_ret); +} + +ListElem* +listiterator_next_elem(ListIterator *p_iter) { + if (p_iter->p_cur) { + ListElem *p_ret = p_iter->p_cur; + + p_iter->p_cur = p_iter->b_reverse ? + p_iter->p_cur->p_prev : p_iter->p_cur->p_next; + + return (p_ret); + } + + return (NULL); +} + +_Bool +listiterator_has_next(ListIterator *p_iter) { + return (p_iter->p_cur != NULL ? true : false); +} + + +ListIteratorState* +listiterator_get_state(ListIterator *p_iter) { + ListIteratorState *p_state = malloc(sizeof(ListIteratorState)); + + p_state->p_cur = p_iter->p_cur; + p_state->b_reverse = p_iter->b_reverse; + + return (p_state); +} + +void +listiterator_set_state(ListIterator *p_iter, ListIteratorState *p_state) { + p_iter->p_cur = p_state->p_cur; + p_iter->b_reverse = p_state->b_reverse; +} + +void +listiteratorstate_delete(ListIteratorState *p_state) { + free(p_state); +} diff --git a/src/data/list.h b/src/data/list.h new file mode 100644 index 0000000..cb22887 --- /dev/null +++ b/src/data/list.h @@ -0,0 +1,105 @@ +/*:* + *: File: ./src/data/list.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef LIST_H +#define LIST_H + +#include + +#include "../defines.h" + +#define list_first(l) l->p_first->p_val +#define list_last(l) l->p_last->p_val +#define listiterator_set_callback(i,cb) i->func = cb + +typedef struct ListElem_ { + struct ListElem_ *p_next; + struct ListElem_ *p_prev; + void *p_val; +} ListElem; + +typedef struct { + ListElem *p_first; + ListElem *p_last; + unsigned i_size; +} List; + +typedef struct { + ListElem *p_cur; + _Bool b_reverse; + void* (*func)(void *); +} ListIterator; + +typedef struct { + ListElem *p_cur; + _Bool b_reverse; +} ListIteratorState; + +List *list_new(); +List *list_copy(List *p_list); +List *list_copy2(List *p_list, void* (*func)(void *)); +ListElem *listelem_new(); +_Bool list_empty(List *p_list); +void list_concat_front(List *p_list1, List *p_list2); +void list_concat_back(List *p_list1, List *p_list2); +void list_add_front(List *p_list, void *p_val); +void list_add_back(List *p_list, void *p_val); +void *list_remove_front(List *p_list); +void *list_remove_back(List *p_list); +void list_clear(List *p_list); +void list_clear_and_free_vals(List *p_list); +void list_delete(List *p_list); +void list_delete_cb(void *p_list); +void list_delete_and_free_vals(List *p_list); +unsigned list_size(List *p_list); +void list_iterate(List *p_list, void (*func)(void *)); +void list_iterate2_ptr(List *p_list, void (*func)(void *, void *), void *p_void); +void list_iterate2(List *p_list, void (*func)(void *, void *), void *p_void); +void list_iterate3(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2); +void list_iterate3_ptr(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2); +ListIterator *listiterator_new(List *p_list); +ListIterator *listiterator_new_reverse(List *p_list); +void listiterator_delete(ListIterator *p_iter); +void *listiterator_next(ListIterator *p_iter); +void *listiterator_prev(ListIterator *p_iter); +void *listiterator_current(ListIterator *p_iter); +void *listiterator_end(ListIterator *p_iter); +_Bool listiterator_has_next(ListIterator *p_iter); +ListElem* listiterator_next_elem(ListIterator *p_iter); +void list_remove_elem(List *p_list, ListElem *p_elem_remove); +ListIteratorState* listiterator_get_state(ListIterator *p_iter); +void listiterator_set_state(ListIterator *p_iter, ListIteratorState *p_state); +void listiteratorstate_delete(ListIteratorState *p_state); + +#endif diff --git a/src/data/map.c b/src/data/map.c new file mode 100644 index 0000000..24c8ac0 --- /dev/null +++ b/src/data/map.c @@ -0,0 +1,283 @@ +/*:* + *: File: ./src/data/map.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "map.h" + +Map* +map_new(int i_max_size) { + return map_new_named(i_max_size, "noname"); +} + +Map* +map_new_named(int i_max_size, char *c_name) { + Map *p_map = malloc(sizeof(Map)); + + p_map->c_name = c_name; + p_map->pc_keys = calloc(i_max_size, sizeof(char*)); + p_map->pp_vals = calloc(i_max_size, sizeof(void*)); + + for (int i = 0; i < i_max_size; ++i) { + p_map->pc_keys[i] = NULL; + p_map->pp_vals[i] = NULL; + } + + p_map->i_size = 0; + p_map->i_max_size = i_max_size; + + return p_map; +} + +_Bool +map_empty(Map *p_map) { + return p_map->i_size == 0; +} + +_Bool +map_full(Map *p_map) { + return p_map->i_size == p_map->i_max_size; +} + +int +map_next_free_addr(Map *p_map) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] == NULL) + return i; + + ERROR("No free space left in the map (%s)", p_map->c_name); + + // This point should not be reached! + return 0; +} + +_Bool +map_insert(Map *p_map, char *c_key, void *p_val) { + int i_free_addr = map_next_free_addr(p_map); + int i_len = strlen(c_key); + + p_map->pc_keys[i_free_addr] = STR_NEW(i_len+1); + strncpy(p_map->pc_keys[i_free_addr], c_key, i_len); + p_map->pp_vals[i_free_addr] = p_val; + + ++p_map->i_size; + return true; +} + +_Bool +map_insert2(Map *p_map, char *c_key1, char *c_key2, void *p_val) { + char c_key[HASH_MKEYLEN]; + sprintf(c_key, "%s%s%s", c_key1, SEP, c_key2); + return map_insert(p_map, c_key, p_val); +} + +_Bool +map_insert_if_not_exists(Map *p_map, char *c_key, void *p_val) { + void *p_void = map_get(p_map, c_key); + + if (p_void) + return false; + + return map_insert(p_map, c_key, p_val); + + return true; +} + +void +map_remove(Map *p_map, char *c_key) { + if (map_empty(p_map)) + return; + + int i_index = map_get_addr(p_map, c_key); + if (i_index < 0) + return; + + free(p_map->pc_keys[i_index]); + p_map->pc_keys[i_index] = NULL; + p_map->pp_vals[i_index] = NULL; + --p_map->i_size; +} + +void* +map_get(Map *p_map, char *c_key) { + if (map_empty(p_map)) + return NULL; + + int i_index = map_get_addr(p_map, c_key); + return i_index >= 0 ? p_map->pp_vals[i_index] : NULL; +} + +void* +map_get2(Map *p_map, char *c_key1, char *c_key2) { + char c_key[HASH_MKEYLEN]; + sprintf(c_key, "%s%s%s", c_key1, SEP, c_key2); + return map_get(p_map, c_key); +} + + +_Bool +map_exists(Map *p_map, char *c_key) { + if (map_empty(p_map)) + return false; + + int i_index = map_get_addr(p_map, c_key); + return i_index >= 0 ? true : false; +} + +_Bool +map_exists2(Map *p_map, char *c_key1, char *c_key2) { + if (map_empty(p_map)) + return false; + + char c_key[HASH_MKEYLEN]; + sprintf(c_key, "%s%s%s:", c_key1, SEP, c_key2); + + int i_index = map_get_addr(p_map, c_key); + return i_index >= 0 ? true : false; +} + +char* +map_get_key(Map *p_map, void *p_val) { + if (map_empty(p_map)) + return NULL; + + for (int i = 0; i < p_map->i_max_size; ++i) + if ((unsigned) p_map->pp_vals[i] == (unsigned) p_val) + return p_map->pc_keys[i]; + + return NULL; +} + +int +map_get_addr(Map *p_map, char *c_key) { + if (map_empty(p_map)) + return -1; + + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL && strcmp(p_map->pc_keys[i], c_key) == 0) + return i; + + return -1; +} + +void +map_clear(Map *p_map) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) { + free(p_map->pc_keys[i]); + p_map->pc_keys[i] = NULL; + p_map->pp_vals[i] = NULL; + } + + p_map->i_size = 0; +} + +void +map_clear_and_free_vals(Map *p_map) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) { + free(p_map->pc_keys[i]); + + if (p_map->pp_vals[i]) + free(p_map->pp_vals[i]); + + p_map->pc_keys[i] = NULL; + p_map->pp_vals[i] = NULL; + } + + p_map->i_size = 0; +} + +void +map_delete(Map *p_map) { + map_clear(p_map); + free(p_map); +} + +void +map_delete_and_free_vals(Map *p_map) { + map_clear_and_free_vals(p_map); + free(p_map); +} + +void +map_print(Map *p_map) { + printf("Map:", + map_get_size(p_map), map_get_max_size(p_map)); + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + printf("(%d,%s)", i, p_map->pc_keys[i]); + puts(""); +} + +void +map_iterate(Map *p_map, void (*func) (void *)) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i]); +} + +void +map_iterate_keys(Map *p_map, void (*func) (void *, char *)) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i], p_map->pc_keys[i]); +} + +void +map_iterate2(Map *p_map, void (*func) (void *, void *), void *p_void) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i], p_void); +} + +void +map_iterate2_keys(Map *p_map, void (*func) (void *, void *, char *), void *p_void) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i], p_void, p_map->pc_keys[i]); +} + +void +map_iterate3(Map *p_map, void (*func) (void *, void *, void *), void *p_void1, void *p_void2) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i], p_void1, p_void2); +} + +void +map_iterate3_keys(Map *p_map, void (*func) (void *, void *, void *, char *), void *p_void1, void *p_void2) { + for (int i = 0; i < p_map->i_max_size; ++i) + if (p_map->pc_keys[i] != NULL) + (*func) (p_map->pp_vals[i], p_void1, p_void2, p_map->pc_keys[i]); +} + diff --git a/src/data/map.h b/src/data/map.h new file mode 100644 index 0000000..4ea6184 --- /dev/null +++ b/src/data/map.h @@ -0,0 +1,82 @@ +/*:* + *: File: ./src/data/map.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef MAP_H +#define MAP_H + +#include +#include + +#include "../defines.h" +#define SEP "::" + +typedef struct { + char *c_name; + char **pc_keys; + void **pp_vals; + int i_size; + int i_max_size; +} Map; + +Map *map_new(int i_max_size); +Map *map_new_named(int i_max_size, char *c_name); +_Bool map_empty(Map *p_map); +_Bool map_full(Map *p_map); +int map_next_free_addr(Map *p_map); +_Bool map_insert(Map *p_map, char *c_key, void *p_val); +_Bool map_insert2(Map *p_map, char *c_key1, char *c_key2, void *p_val); +_Bool map_insert_if_not_exists(Map *p_map, char *c_key, void *p_val); +void map_remove(Map *p_map, char *c_key); +void *map_get(Map *p_map, char *c_key); +void *map_get2(Map *p_map, char *c_key1, char *c_key2); +_Bool map_exists(Map *p_map, char *c_key); +_Bool map_exists2(Map *p_map, char *c_key1, char *c_key2); +char *map_get_key(Map *p_map, void *p_val); +int map_get_addr(Map *p_map, char *c_key); +void map_clear(Map *p_map); +void map_clear_and_free_vals(Map *p_map); +void map_delete(Map *p_map); +void map_delete_and_free_vals(Map *p_map); +void map_print(Map *p_map); +void map_iterate(Map *p_map, void (*func) (void *)); +void map_iterate_keys(Map *p_map, void (*func) (void *, char *)); +void map_iterate2(Map *p_map, void (*func) (void *, void *), void *p_void); +void map_iterate2_keys(Map *p_map, void (*func) (void *, void *, char *), void *p_void); +void map_iterate3(Map *p_map, void (*func) (void *, void *, void *), void *p_void1, void *p_void2); +void map_iterate3_keys(Map *p_map, void (*func) (void *, void *, void *, char *), void *p_void1, void *p_void2); + +#define map_get_size(map) map->i_size +#define map_get_max_size(map) map->i_max_size + +#endif diff --git a/src/data/queue.c b/src/data/queue.c new file mode 100644 index 0000000..c9eb29f --- /dev/null +++ b/src/data/queue.c @@ -0,0 +1,210 @@ +/*:* + *: File: ./src/data/queue.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "queue.h" + +#include + +Queue* +queue_new() { + Queue *p_queue = (Queue *) malloc(sizeof(Queue)); + + p_queue->p_first = 0; + p_queue->p_last = 0; + p_queue->i_size = 0; + + return p_queue; +} + +QueueElem* +queueelem_new() { + return queueelem_new_t(TYPE_UNKNOWN); +} + +QueueElem* +queueelem_new_t(TYPE type) { + QueueElem *p_elem = (QueueElem *) malloc(sizeof(QueueElem)); + + p_elem->p_next = 0; + p_elem->p_val = 0; + p_elem->type = type; + + return p_elem; +} + +_Bool +queue_empty(Queue *p_queue) { + if (p_queue == NULL) + return 0; + + return p_queue->i_size == 0; +} + +void +queue_push(Queue *p_queue, void *p_val) { + queue_push_t(p_queue, p_val, TYPE_UNKNOWN); +} + +void +queue_push_t(Queue *p_queue, void *p_val, TYPE type) { + QueueElem *p_elem = queueelem_new_t(type); + p_elem->p_val = p_val; + + if (0 == p_queue->i_size++) + p_queue->p_first = p_elem; + else + p_queue->p_last->p_next = p_elem; + + p_queue->p_last = p_elem; +} + +void* +queue_pop(Queue *p_queue) { + TYPE type; + return queue_pop_t(p_queue, &type); +} + +void* +queue_pop_t(Queue *p_queue, TYPE *p_type) { + if (queue_empty(p_queue)) + return 0; + + QueueElem *p_elem = p_queue->p_first; + p_queue->p_first = p_elem->p_next; + + --p_queue->i_size; + + void *p_ret = p_elem->p_val; + *p_type = p_elem->type; + free(p_elem); + return p_ret; +} + +void +queue_clear(Queue *p_queue) { + for (;!queue_empty(p_queue); queue_pop(p_queue)); +} + +void +queue_delete(Queue *p_queue) { + queue_clear(p_queue); + free(p_queue); +} + +unsigned +queue_size(Queue *p_queue) { + return p_queue->i_size; +} + +void +queue_iterate(Queue *p_queue, void (*func)(void *)) { + QueueElem *p_elem = p_queue->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val); + + p_elem = p_elem->p_next; + } +} + +void +queue_iterate_t(Queue *p_queue, void (*func)(void *, TYPE)) { + QueueElem *p_elem = p_queue->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val, p_elem->type); + + p_elem = p_elem->p_next; + } +} + +void +queue_iterate_tl(Queue *p_queue, void (*func)(void *, TYPE, _Bool)) { + QueueElem *p_elem = p_queue->p_first; + while (p_elem) { + if (p_elem->p_val) + (*func) (p_elem->p_val, p_elem->type, p_elem->p_next == NULL); + + p_elem = p_elem->p_next; + } +} + +QueueIter* +queueiter_new(Queue *p_queue) { + QueueIter *p_iter = + (QueueIter *) malloc(sizeof(QueueIter)); + + p_iter->p_current = NULL; + p_iter->p_next = p_queue->p_first; + p_iter->i_left = queue_size(p_queue); + p_iter->p_queue = p_queue; + + return p_iter; +} + +void +queueiter_delete(QueueIter *p_iter) { + free(p_iter); +} + +void* +queueiter_next(QueueIter *p_iter) { + TYPE type; + return queueiter_next_t(p_iter, &type); +} + +void* +queueiter_next_t(QueueIter *p_iter, TYPE *p_type) { + if (p_iter->p_next == NULL) + return NULL; + + void *p_ret = p_iter->p_next->p_val; + *p_type = p_iter->p_next->type; + p_iter->p_current = p_iter->p_next; + p_iter->p_next = p_iter->p_next->p_next; + --p_iter->i_left; + + return p_ret; +} + +unsigned +queueiter_left(QueueIter *p_iter) { + return p_iter->i_left; +} + +Queue* +queueiter_queue(QueueIter *p_iter) { + return p_iter->p_queue; +} + diff --git a/src/data/queue.h b/src/data/queue.h new file mode 100644 index 0000000..950be07 --- /dev/null +++ b/src/data/queue.h @@ -0,0 +1,81 @@ +/*:* + *: File: ./src/data/queue.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef QUEUE_H +#define QUEUE_H + +#include "types.h" + +typedef struct QueueElem_ { + struct QueueElem_ *p_next; + void *p_val; + TYPE type; +} QueueElem; + +typedef struct { + QueueElem *p_first; + QueueElem *p_last; + unsigned i_size; +} Queue; + +typedef struct { + unsigned i_left; + Queue *p_queue; + QueueElem *p_current; + QueueElem *p_next; +} QueueIter; + +Queue *queue_new(); +QueueElem *queueelem_new(); +QueueElem *queueelem_new_t(TYPE type); +_Bool queue_empty(Queue *p_queue); +void queue_push(Queue *p_queue, void *p_val); +void queue_push_t(Queue *p_queue, void *p_val, TYPE type); +void *queue_pop(Queue *p_queue); +void *queue_pop_t(Queue *p_queue, TYPE *p_type); +void queue_clear(Queue *p_queue); +void queue_delete(Queue *p_queue); +unsigned queue_size(Queue *p_queue); +void queue_iterate(Queue *p_queue, void (*func)(void *)); +void queue_iterate_t(Queue *p_queue, void (*func)(void *, TYPE)); +void queue_iterate_tl(Queue *p_queue, void (*func)(void *, TYPE, _Bool)); + +QueueIter *queueiter_new(Queue *p_queue); +void queueiter_delete(QueueIter *p_iter); +void *queueiter_next(QueueIter *p_iter); +void *queueiter_next_t(QueueIter *p_iter, TYPE *p_type); +unsigned queueiter_left(QueueIter *p_iter); +Queue *queueiter_queue(QueueIter *p_iter); + +#endif diff --git a/src/data/stack.c b/src/data/stack.c new file mode 100644 index 0000000..f0392d0 --- /dev/null +++ b/src/data/stack.c @@ -0,0 +1,234 @@ +/*:* + *: File: ./src/data/stack.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "stack.h" + +#include "../defines.h" + +Stack* +stack_new() { + Stack *p_stack = (Stack *) malloc(sizeof(Stack)); + + p_stack->p_first = p_stack->p_last = NULL; + p_stack->i_size = 0; + + return (p_stack); +} + +StackElem* +stackelem_new() { + StackElem *p_elem = (StackElem *) malloc(sizeof(StackElem)); + + p_elem->p_next = NULL; + p_elem->p_val = NULL; + + return (p_elem); +} + +_Bool +stack_empty(Stack *p_stack) { + return (p_stack->i_size == 0); +} + +void +stack_push(Stack *p_stack, void *p_val) { + StackElem *p_elem = stackelem_new(); + + p_elem->p_val = p_val; + p_elem->p_next = p_stack->p_first; + p_stack->p_first = p_elem; + + if (p_stack->p_last == NULL) + p_stack->p_last = p_stack->p_first; + + ++p_stack->i_size; +} + +void* +stack_pop(Stack *p_stack) { + if (stack_empty(p_stack)) + return (NULL); + + StackElem *p_elem = p_stack->p_first; + p_stack->p_first = p_elem->p_next; + + void *p_val = p_elem->p_val; + free(p_elem); + --p_stack->i_size; + + if (p_stack->i_size == 0) + p_stack->p_last = NULL; + + return (p_val); +} + +void +stack_clear(Stack *p_stack) { + for (;!stack_empty(p_stack); stack_pop(p_stack)); +} + +void +stack_delete(Stack *p_stack) { + stack_clear(p_stack); + free(p_stack); +} + +void +stack_delete_and_free(Stack *p_stack) { + for (;!stack_empty(p_stack); free(stack_pop(p_stack))); + stack_delete(p_stack); +} + +unsigned +stack_size(Stack *p_stack) { + if (!p_stack) + return (0); + + return (p_stack->i_size); +} + +void +stack_merge(Stack *p_stack, Stack *p_stack_merge) { + if (stack_empty(p_stack_merge)) + return; + + if (stack_empty(p_stack)) { + p_stack->p_first = p_stack_merge->p_first; + p_stack->p_last = p_stack_merge->p_last; + p_stack->i_size = p_stack_merge->i_size; + + } else { + StackElem *p_old_first = p_stack->p_first; + + p_stack->p_first = p_stack_merge->p_first; + p_stack_merge->p_last->p_next = p_old_first; + p_stack->i_size += p_stack_merge->i_size; + } + + p_stack_merge->p_first = p_stack_merge->p_last = NULL; + p_stack_merge->i_size = 0; +} + +void +stack_concat(Stack *p_stack, Stack *p_stack_concat) { + if (stack_empty(p_stack_concat)) + return; + + Stack *p_stack_tmp = stack_new(); + + StackIterator *p_iter = stackiterator_new(p_stack_concat); + + while (stackiterator_has_next(p_iter)) + stack_push(p_stack_tmp, stackiterator_next(p_iter)); + + stackiterator_delete(p_iter); + + while (!stack_empty(p_stack_tmp)) + stack_push(p_stack, stack_pop(p_stack_tmp)); + + stack_delete(p_stack_tmp); +} + +void +stack_iterate(Stack *p_stack, void (*func)(void *p_void)) { + if (!p_stack) + return; + + StackElem *p_elem = p_stack->p_first; + + while (p_elem) { + (*func)(p_elem->p_val); + p_elem = p_elem->p_next; + } +} + +StackIterator* +stackiterator_new(Stack *p_stack) { + StackIterator *p_iter = malloc(sizeof(StackIterator)); + + p_iter->p_current = p_stack->p_first; + p_iter->p_prev = NULL; + + return (p_iter); +} + +void +stackiterator_delete(StackIterator *p_iter) { + free(p_iter); +} + +void* +stackiterator_next(StackIterator *p_iter) { + if (!p_iter) + return (NULL); + + StackElem *p_elem = p_iter->p_current; + + if (!p_elem) + return (NULL); + + p_iter->p_prev = p_iter->p_current; + p_iter->p_current = p_elem->p_next; + + return (p_elem->p_val); +} + +_Bool +stackiterator_has_next(StackIterator *p_iter) { + return (p_iter->p_current ? true : false); +} + +_Bool +stackiterator_remove_prev(StackIterator *p_iter) { + StackElem *p_prev = p_iter->p_prev; + + if (p_prev == NULL) + return (false); + + StackElem *p_next = p_prev->p_next; + + if (p_next == NULL) + return (false); + + p_prev->p_val = p_next->p_val; + p_prev->p_next = p_next->p_next; + + + free(p_next); + + p_iter->p_current = p_prev; + p_iter->p_prev = NULL; + + return (true); +} diff --git a/src/data/stack.h b/src/data/stack.h new file mode 100644 index 0000000..f5f91c2 --- /dev/null +++ b/src/data/stack.h @@ -0,0 +1,76 @@ +/*:* + *: File: ./src/data/stack.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef STACK_H +#define STACK_H + +#define stack_top(s) s->p_first->p_val; + +#include + +typedef struct StackElem_ { + struct StackElem_ *p_next; + void *p_val; +} StackElem; + +typedef struct { + StackElem *p_first; + StackElem *p_last; // Only needed for stack_merge + unsigned i_size; +} Stack; + +typedef struct { + StackElem *p_current; + StackElem *p_prev; +} StackIterator; + +Stack *stack_new(); +StackElem *stackelem_new(); +_Bool stack_empty(Stack *p_stack); +void stack_iterate(Stack *p_stack, void (*func)(void *p_void)); +void stack_push(Stack *p_stack, void *p_val); +void *stack_pop(Stack *p_stack); +void stack_clear(Stack *p_stack); +void stack_delete(Stack *p_stack); +void stack_delete_and_free(Stack *p_stack); +unsigned stack_size(Stack *p_stack); +void stack_merge(Stack *p_stack, Stack *p_stack_merge); +void stack_concat(Stack *p_stack, Stack *p_stack_concat); +StackIterator* stackiterator_new(Stack *p_stack); +void stackiterator_delete(StackIterator *p_iter); +_Bool stackiterator_has_next(StackIterator *p_iter); +void* stackiterator_next(StackIterator *p_iter); +_Bool stackiterator_remove_prev(StackIterator *p_iter); + +#endif diff --git a/src/data/tree.c b/src/data/tree.c new file mode 100644 index 0000000..c1f01c1 --- /dev/null +++ b/src/data/tree.c @@ -0,0 +1,250 @@ +/*:* + *: File: ./src/data/tree.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "tree.h" + +Tree* +tree_new() { + Tree *p_tree = malloc(sizeof(Tree)); + + p_tree->p_treenode_root = NULL; + + return p_tree; +} + + +void +tree_delete(Tree *p_tree) { + if (!p_tree) + return; + + if (p_tree->p_treenode_root) + treenode_delete(p_tree->p_treenode_root); + + free(p_tree); +} + +void _tree_print(TreeNode *p_treenode, int i_indent); + +void _indent(int i_indent) { + for (int i = 0; i < i_indent; ++i) + if (i % TREE_PRINT_INDENT) + printf(" "); + else + printf("|"); +} + +void +_tree_print_cb2(void *p_void, void *p_indent) { + _tree_print(p_void, (int) p_indent); +} + +void +_tree_print_cb(void *p_void, void *p_indent) { + TreeNode *ptn = p_void; + _indent((int) p_indent); + +#ifdef FYPE + TokenType tt = (TokenType) treenode_get_val(ptn); + + if (IS_NOT_TERMINAL(tt)) + goto no_token_val; + + Token *p_token = treenode_get_val2(ptn); + + if (!p_token) + goto no_token_val; + + char *c_token_val = token_get_val(p_token); + TokenType tt_token = token_get_tt(p_token); + + if (!c_token_val) + c_token_val = ""; + + printf(" %s=%s", tt_get_name(tt_token), c_token_val); + return; + +no_token_val: + printf(" %s", tt_get_name(tt)); + +#else + printf(" %d", (int) treenode_get_val(ptn)); +#endif +} + +void +_tree_print(TreeNode *p_treenode, int i_indent) { + TokenType tt = (TokenType)treenode_get_val(p_treenode); + +#ifdef FYPE + _Bool b_print_nl = false; + if (IS_NOT_TERMINAL(tt)) { + _indent(i_indent); + printf("%s:", tt_get_name(tt)); + b_print_nl = true; + } +#else + _indent(i_indent); + printf("%s:", tt_get_name(tt)); +#endif + + array_iterate2(p_treenode->p_array_childs, _tree_print_cb, (void*) 0); + +#ifdef FYPE + if (b_print_nl) +#endif + printf("\nTree "); + + array_iterate2(p_treenode->p_array_childs, _tree_print_cb2, (void*) (i_indent + TREE_PRINT_INDENT)); +} + +void +tree_print(Tree *p_tree) { + if (!p_tree) + return; + + printf("\nTree "); + _tree_print(tree_get_root(p_tree), 0); + printf("\n"); +} + +TreeNode* +treenode_new(void *p_val) { + return treenode_new2(p_val, NULL); +} + +TreeNode* +treenode_new2(void *p_val, void *p_val2) { + TreeNode *p_treenode = malloc(sizeof(TreeNode)); + + p_treenode->tnt = IS_LEAF; + p_treenode->p_array_childs = array_new(); + p_treenode->p_val = p_val; + p_treenode->p_val2 = p_val2; + + return p_treenode; +} + +void +treenode_delete(TreeNode *p_treenode) { + if (!p_treenode) + return; + + int i_size = array_get_size(p_treenode->p_array_childs); + + for (int i = 0; i < i_size; ++i) + treenode_delete(array_get(p_treenode->p_array_childs, i)); + + array_delete(p_treenode->p_array_childs); + + free(p_treenode); +} + +void +treenode_insert_left(TreeNode *p_treenode, TreeNode *p_treenode2) { + array_unshift(p_treenode->p_array_childs, p_treenode2); +} + +void +treenode_insert_right(TreeNode *p_treenode, TreeNode *p_treenode2) { + array_push(p_treenode->p_array_childs, p_treenode2); +} + +TreeIteratorState* +treeiteratorstate_new(TreeNode *ptn) { + TreeIteratorState *p_state = malloc(sizeof(TreeIteratorState)); + + p_state->ptn = ptn; + p_state->i_pos = 0; + + return p_state; +} + +void +treeiteratorstate_delete(TreeIteratorState *p_state) { + free(p_state); +} + +TreeIterator* +treeiterator_new(Tree *p_tree) { + TreeIterator *p_iter = malloc(sizeof(TreeIterator)); + + p_iter->p_stack = stack_new(); + p_iter->p_state = treeiteratorstate_new(tree_get_root(p_tree)); + + return p_iter; +} + +void +treeiterator_delete(TreeIterator *p_iter) { + while (!stack_empty(p_iter->p_stack)) + treeiteratorstate_delete(stack_pop(p_iter->p_stack)); + + stack_delete(p_iter->p_stack); + + if (p_iter->p_state) + treeiteratorstate_delete(p_iter->p_state); +} + +_Bool +treeiterator_has_next(TreeIterator *p_iter) { + return p_iter->p_state != NULL; +} + +TreeNode* +treeiterator_next(TreeIterator *p_iter) { + if (!treeiterator_has_next(p_iter)) + return NULL; + + TreeNode *ptn = p_iter->p_state->ptn; + + Array *p_array_childs = treenode_get_childs(ptn); + int i_num_childs = array_get_size(p_array_childs); + + if (p_iter->p_state->i_pos >= i_num_childs) { + treeiteratorstate_delete(p_iter->p_state); + + p_iter->p_state = + stack_empty(p_iter->p_stack) ? NULL : stack_pop(p_iter->p_stack); + + return ptn; + } + + TreeNode *ptn_next = array_get(p_array_childs, p_iter->p_state->i_pos++); + stack_push(p_iter->p_stack, p_iter->p_state); + p_iter->p_state = treeiteratorstate_new(ptn_next); + + return ptn; +} + diff --git a/src/data/tree.h b/src/data/tree.h new file mode 100644 index 0000000..9b98d86 --- /dev/null +++ b/src/data/tree.h @@ -0,0 +1,106 @@ +/*:* + *: File: ./src/data/tree.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef TREE_H +#define TREE_H + +#include "../defines.h" +#include "array.h" +#include "stack.h" + +#ifdef FYPE +#include "../core/token.h" +#endif + +#define TREE_PRINT_INDENT 3 + +#define tree_get_root(t) t->p_treenode_root +#define tree_set_root(t,tn) t->p_treenode_root = tn +#define treenode_get_num_childs(tn) array_get_size(tn->p_array_childs) +#define treenode_get_tnt(tn) tn->tnt +#define treenode_get_val(tn) tn->p_val +#define treenode_get_val2(tn) tn->p_val2 +#define treenode_set_tnt(tn,t) tn->tnt = t +#define treenode_set_val(tn,v) tn->p_val = v +#define treenode_set_val2(tn,v) tn->p_val2 = v +#define treenode_insert_child treenode_insert_right +#define treenode_get_childs(tn) tn->p_array_childs +#define treenode_get_child(tn,i) array_get(tn->p_array_childs,i) +#define treenode_get_first_child(tn) array_get_first(tn->p_array_childs) +#define treenode_get_last_child(tn) array_get_last(tn->p_array_childs) + +typedef enum { + IS_NOTLEAF, + IS_LEAF, +} TreeNodeType; + +typedef struct { + TreeNodeType tnt; + Array *p_array_childs; + void *p_val; + void *p_val2; +} TreeNode; + +typedef struct { + TreeNode *p_treenode_root; +} Tree; + +typedef struct { + TreeNode *ptn; + int i_pos; +} TreeIteratorState; + +typedef struct { + Stack *p_stack; + TreeIteratorState *p_state; +} TreeIterator; + +Tree* tree_new(); +void tree_delete(Tree *p_tree); +void tree_print(Tree *p_tree); +TreeNode* treenode_new(void *p_val); +TreeNode* treenode_new2(void *p_val, void *p_val2); +void treenode_delete(TreeNode *p_treenode); +void treenode_insert_left(TreeNode *p_treenode, TreeNode *p_treenode2); +void treenode_insert_right(TreeNode *p_treenode, TreeNode *p_treenode2); + +TreeIteratorState* treeiteratorstate_new(TreeNode *ptn); +void treeiteratorstate_delete(TreeIteratorState *p_state); + +TreeIterator* treeiterator_new(Tree *p_tree); +void treeiterator_delete(TreeIterator *p_iter); +_Bool treeiterator_has_next(TreeIterator *p_iter); +TreeNode* treeiterator_next(TreeIterator *p_iter); + +#endif diff --git a/src/data/tupel.c b/src/data/tupel.c new file mode 100644 index 0000000..c5ec5a4 --- /dev/null +++ b/src/data/tupel.c @@ -0,0 +1,53 @@ +/*:* + *: File: ./src/data/tupel.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "tupel.h" + +#include + +Tupel* +tupel_new() { + Tupel *p_tupel = (Tupel *) malloc(sizeof(Tupel)); + + p_tupel->a = NULL; + p_tupel->b = NULL; + p_tupel->c = NULL; + + return p_tupel; +} + +void +tupel_delete(Tupel *p_tupel) { + free(p_tupel); +} diff --git a/src/data/tupel.h b/src/data/tupel.h new file mode 100644 index 0000000..ae5bdcc --- /dev/null +++ b/src/data/tupel.h @@ -0,0 +1,47 @@ +/*:* + *: File: ./src/data/tupel.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef TUPEL_H +#define TUPEL_H + +typedef struct { + void *a; + void *b; + void *c; +} Tupel; + +Tupel *tupel_new(); +void tupel_delete(Tupel *p_tupel); + +#endif diff --git a/src/data/types.h b/src/data/types.h new file mode 100644 index 0000000..f47f258 --- /dev/null +++ b/src/data/types.h @@ -0,0 +1,64 @@ +/*:* + *: File: ./src/data/types.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef TYPES_H +#define TYPES_H + +typedef enum { + TYPE_UNKNOWN, + TYPE_NUMBER, + TYPE_STRING, + TYPE_VOIDP, + TYPE_SYMVAR, + TYPE_VARIABLE, + TYPE_REGEXPR, + TYPE_OPERATOR, + TYPE_STACK, + TYPE_TUPEL, + TYPE_HASH, + TYPE_DAT, + TYPE_ARG_DAT, + TYPE_ARGS_DAT, + TYPE_STATEMENT_DAT, + TYPE_CODE_DAT +} TYPE; + +typedef enum { + RET_OK, + RET_ERROR = -1, + RET_NO_SPACE = -2, + RET_OCCUPIED = -3 +} RETCODE; + +#endif diff --git a/src/defines.h b/src/defines.h new file mode 100644 index 0000000..83887b2 --- /dev/null +++ b/src/defines.h @@ -0,0 +1,99 @@ +/*:* + *: File: ./src/defines.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#ifndef DEFINES_H +#define DEFINES_H + +#include +#include +#include +#include + +#include "build.h" + +#define COPYRIGHT "Copyright by Paul C. Buetow (2005 - 2008) " +#define FYPE +#define GRAMMAR_MAP_SIZES 128 +#define HASH_MAXOCC 5 +#define HASH_MKEYLEN 32 +#define HASH_SCALE 10 +#define NAME "Fype" +#define ASSEMBLER "yasm" +#define LINKER "cc" +#define SCANNER_BUFSIZE 512 +#define URL "" +#define VERSION "v0.0-devel Build" + + + +#ifndef false +#define false (_Bool)0 +#endif + +#ifndef true +#define true (_Bool)1 +#endif + +// Makes the compiler always happy (end of switch statements) :) +#define NO_DEFAULT default: if (0) + +#define EPRINTF(...) fprintf(stdout, __VA_ARGS__) +#define ERROR(...) { fprintf(stdout, __VA_ARGS__); \ + fprintf(stdout, " (%s @ %s line %d)\n", NAME, __FILE__, __LINE__); \ + exit(1); } +#define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n"); + +/* +#define DEBUG_TOKEN_REFCOUNT +#define DEBUG_FUNCTION_PROCESS +#define DEBUG_TRACK +#define DEBUG_BLOCK_GET +#define DEBUG_EXPRESSION_GET +*/ + +#ifdef DEBUG_TRACK +#define TRACK \ + DPRINTF("Track: %s:%s:%d", \ + __FILE__, __FUNCTION__, __LINE__); \ + if (p_interpret && p_interpret->p_token) \ + DPRINTF("Token: %s", token_get_val(p_interpret->p_token)); +#else +#define TRACK +#endif /* DEBUG_TRACK */ + +#define STR_NEW(len) (char *) calloc(len, sizeof(char)) +#define STR_RESIZE(str, len) (char *) realloc(str, len *sizeof(char)) +#define STRLST(str) str[strlen(str)-1] + +#endif diff --git a/src/fype.c b/src/fype.c new file mode 100644 index 0000000..206cf17 --- /dev/null +++ b/src/fype.c @@ -0,0 +1,91 @@ +/*:* + *: File: ./src/fype.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include "fype.h" + +#include "argv.h" +#include "core/garbage.h" +#include "core/interpret.h" +#include "core/scanner.h" +#include "core/symbol.h" + +Fype* +fype_new() { + Fype *p_fype = malloc(sizeof(Fype)); + + p_fype->p_hash_syms = hash_new(512); + p_fype->p_list_token = list_new(); + p_fype->p_tupel_argv = tupel_new(); + p_fype->c_basename = NULL; + + garbage_init(); + + return (p_fype); +} + +void +fype_delete(Fype *p_fype) { + argv_tupel_delete(p_fype->p_tupel_argv); + + hash_iterate(p_fype->p_hash_syms, symbol_cleanup_hash_syms_cb); + hash_delete(p_fype->p_hash_syms); + + //list_iterate(p_fype->p_list_token, token_print_cb); + list_iterate(p_fype->p_list_token, token_ref_down_cb); + //list_iterate(p_fype->p_list_token, token_print_cb); + list_delete(p_fype->p_list_token); + + if (p_fype->c_basename) + free(p_fype->c_basename); + + garbage_destroy(); +} + +int +fype_run(int i_argc, char **pc_argv) { + Fype *p_fype = fype_new(); + + // argv: Maintains command line options + argv_run(p_fype, i_argc, pc_argv); + + // scanner: Creates a list of token + scanner_run(p_fype); + + // interpret: Interpret the list of token + interpret_run(p_fype); + + fype_delete(p_fype); + + return (0); +} diff --git a/src/fype.h b/src/fype.h new file mode 100644 index 0000000..5a4df9c --- /dev/null +++ b/src/fype.h @@ -0,0 +1,57 @@ +/*:* + *: File: ./src/fype.h + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include +#include + +#include "argv.h" +#include "data/hash.h" +#include "data/list.h" +#include "data/tupel.h" + +#ifndef FYPE_H +#define FYPE_H + +typedef struct { + Tupel *p_tupel_argv; // Contains command line options + List *p_list_token; // Initial list of token + Hash *p_hash_syms; // Symbol table + char *c_basename; +} Fype; + +Fype *fype_new(); +void fype_delete(Fype *p_fype); +int fype_run(int i_argc, char **pc_argv); + +#endif /* FYPE_H */ diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e6a528c --- /dev/null +++ b/src/main.c @@ -0,0 +1,45 @@ +/*:* + *: File: ./src/main.c + *: A simple interpreter + *: + *: WWW : http://fype.buetow.org + *: E-Mail : fype@dev.buetow.org + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: All rights reserved. + *: + *: Redistribution and use in source and binary forms, with or without modi- + *: fication, are permitted provided that the following conditions are met: + *: * Redistributions of source code must retain the above copyright + *: notice, this list of conditions and the following disclaimer. + *: * Redistributions in binary form must reproduce the above copyright + *: notice, this list of conditions and the following disclaimer in the + *: documentation and/or other materials provided with the distribution. + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software + *: without specific prior written permission. + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: POSSIBILITY OF SUCH DAMAGE. + *:*/ + +#include +#include + +#include "fype.h" +#include "./data/list.h" + +int +main(int i_argc, char **pc_argv) { + return (fype_run(i_argc, pc_argv)); +} + diff --git a/tmp/Makefile b/tmp/Makefile new file mode 100644 index 0000000..eece6e4 --- /dev/null +++ b/tmp/Makefile @@ -0,0 +1,10 @@ +all: + cd ../ && yasm -f elf ./tmp/test2.s -o ./tmp/test2.o && \ + cc -lc ./tmp/test2.o -o ./tmp/test2 +run: all + ./test2 +clean: + for i in test2.o test2; do \ + if [ -f $$i ]; then rm $$i; fi; \ + done + diff --git a/tmp/test.fy b/tmp/test.fy new file mode 100644 index 0000000..bef7188 --- /dev/null +++ b/tmp/test.fy @@ -0,0 +1,5 @@ +my foo = 0; + +say foo; + +say 2 * 4.5 + 1 + gc; diff --git a/tmp/test.out b/tmp/test.out new file mode 100644 index 0000000..56166da --- /dev/null +++ b/tmp/test.out @@ -0,0 +1,25 @@ +my foo = 0; + +say foo; + +say 2 * 4.5 + 1 + gc; +Token (id=00000, line=00001, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (id=00001, line=00001, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00002, line=00001, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00003, line=00001, pos=0011, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=1) +Token (id=00004, line=00001, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00005, line=00003, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00006, line=00003, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00007, line=00003, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00008, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00009, line=00005, pos=0006, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1) +Token (id=00010, line=00005, pos=0008, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1) +Token (id=00013, line=00005, pos=0012, type=TT_DOUBLE, val=4.5, ival=5, dval=4.500000, refs=1) +Token (id=00014, line=00005, pos=0014, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) +Token (id=00015, line=00005, pos=0016, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (id=00016, line=00005, pos=0018, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) +Token (id=00017, line=00005, pos=0021, type=TT_IDENT, val=gc, ival=0, dval=0.000000, refs=1) +Token (id=00018, line=00005, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +0 +ICOUNT 6 +11 -- cgit v1.2.3 From e4689bbb20dade47b98061d48ba73436c856f3ff Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 8 Aug 2008 09:31:58 +0000 Subject: changed header. --- docs/header.txt | 2 +- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- src/argv.c | 30 +++++++++++++++--------------- src/argv.h | 30 +++++++++++++++--------------- src/build.h | 32 ++++++++++++++++---------------- src/core/convert.c | 30 +++++++++++++++--------------- src/core/convert.h | 30 +++++++++++++++--------------- src/core/function.c | 30 +++++++++++++++--------------- src/core/function.h | 30 +++++++++++++++--------------- src/core/garbage.c | 30 +++++++++++++++--------------- src/core/garbage.h | 30 +++++++++++++++--------------- src/core/interpret.c | 30 +++++++++++++++--------------- src/core/interpret.h | 30 +++++++++++++++--------------- src/core/scanner.c | 30 +++++++++++++++--------------- src/core/scanner.h | 30 +++++++++++++++--------------- src/core/scope.c | 30 +++++++++++++++--------------- src/core/scope.h | 30 +++++++++++++++--------------- src/core/symbol.c | 30 +++++++++++++++--------------- src/core/symbol.h | 30 +++++++++++++++--------------- src/core/token.c | 30 +++++++++++++++--------------- src/core/token.h | 30 +++++++++++++++--------------- src/data/array.c | 30 +++++++++++++++--------------- src/data/array.h | 30 +++++++++++++++--------------- src/data/dat.c | 30 +++++++++++++++--------------- src/data/dat.h | 30 +++++++++++++++--------------- src/data/hash.c | 30 +++++++++++++++--------------- src/data/hash.h | 30 +++++++++++++++--------------- src/data/list.c | 30 +++++++++++++++--------------- src/data/list.h | 30 +++++++++++++++--------------- src/data/map.c | 30 +++++++++++++++--------------- src/data/map.h | 30 +++++++++++++++--------------- src/data/queue.c | 30 +++++++++++++++--------------- src/data/queue.h | 30 +++++++++++++++--------------- src/data/stack.c | 30 +++++++++++++++--------------- src/data/stack.h | 30 +++++++++++++++--------------- src/data/tree.c | 30 +++++++++++++++--------------- src/data/tree.h | 30 +++++++++++++++--------------- src/data/tupel.c | 30 +++++++++++++++--------------- src/data/tupel.h | 30 +++++++++++++++--------------- src/data/types.h | 30 +++++++++++++++--------------- src/defines.h | 30 +++++++++++++++--------------- src/fype.c | 30 +++++++++++++++--------------- src/fype.h | 30 +++++++++++++++--------------- src/main.c | 30 +++++++++++++++--------------- tmp/test.out | 4 ++-- 47 files changed, 637 insertions(+), 637 deletions(-) diff --git a/docs/header.txt b/docs/header.txt index 80e026d..0b508d9 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -4,7 +4,7 @@ A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org -Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) +Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) All rights reserved. Redistribution and use in source and binary forms, with or without modi- diff --git a/docs/help.txt b/docs/help.txt index 4d952af..e25397a 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 8865 +Fype v0.0-devel Build 8868 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index f9acef3..3823e6c 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7213 +===> Num of C source lines : 7215 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 320 diff --git a/docs/version.txt b/docs/version.txt index 7376a66..a7bdd50 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 8865 +Fype v0.0-devel Build 8868 diff --git a/src/argv.c b/src/argv.c index 07a3ea0..ab22d64 100644 --- a/src/argv.c +++ b/src/argv.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/argv.h b/src/argv.h index bcf7eb4..769475c 100644 --- a/src/argv.h +++ b/src/argv.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/build.h b/src/build.h index a4066a3..c0feb55 100644 --- a/src/build.h +++ b/src/build.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/build.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,27 +15,27 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 8867 +#define BUILDNR 8870 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index 0d63619..bddbf1e 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/convert.h b/src/core/convert.h index c4e0b1d..fc7f3bd 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.c b/src/core/function.c index fd18ba0..134024b 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.h b/src/core/function.h index 9f12bb4..024b05a 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.c b/src/core/garbage.c index b4dad22..ec01dc6 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.h b/src/core/garbage.h index 6a8007d..522bdd8 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.c b/src/core/interpret.c index 97e19c2..4eb26b1 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.h b/src/core/interpret.h index e2f4cb7..5f9e6d2 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.c b/src/core/scanner.c index 85f0780..7159881 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.h b/src/core/scanner.h index fc07a28..9a83f9c 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.c b/src/core/scope.c index f1ca006..e0b9fcd 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.h b/src/core/scope.h index 63a4373..ac24edc 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.c b/src/core/symbol.c index 721603a..71e9012 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.h b/src/core/symbol.h index 5744383..9224d43 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.c b/src/core/token.c index 1573371..593ae5e 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.h b/src/core/token.h index b363279..2117fa2 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.c b/src/data/array.c index e893a6d..5afaf10 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.h b/src/data/array.h index a60fa03..bfca3c2 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.c b/src/data/dat.c index 1becf25..462faf5 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.h b/src/data/dat.h index 82264e4..426eaa0 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.c b/src/data/hash.c index cc32a6b..d2e3b20 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.h b/src/data/hash.h index 8616549..1c1db37 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.c b/src/data/list.c index 00e5a72..3aca167 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.h b/src/data/list.h index cb22887..cd8bd1e 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.c b/src/data/map.c index 24c8ac0..605c053 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.h b/src/data/map.h index 4ea6184..eee9183 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.c b/src/data/queue.c index c9eb29f..ab02c6d 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.h b/src/data/queue.h index 950be07..a9a4b5e 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.c b/src/data/stack.c index f0392d0..7fb6402 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.h b/src/data/stack.h index f5f91c2..99571b0 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.c b/src/data/tree.c index c1f01c1..36da485 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.h b/src/data/tree.h index 9b98d86..da37658 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.c b/src/data/tupel.c index c5ec5a4..c4fed76 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.h b/src/data/tupel.h index ae5bdcc..81c1337 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/types.h b/src/data/types.h index f47f258..2d5d6c3 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/types.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/defines.h b/src/defines.h index 83887b2..e3fb3de 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/defines.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.c b/src/fype.c index 206cf17..c34d2ae 100644 --- a/src/fype.c +++ b/src/fype.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.h b/src/fype.h index 5a4df9c..bf24339 100644 --- a/src/fype.h +++ b/src/fype.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/main.c b/src/main.c index e6a528c..6e7be70 100644 --- a/src/main.c +++ b/src/main.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/main.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pblabs.net) + *: + *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/tmp/test.out b/tmp/test.out index 56166da..080145f 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -21,5 +21,5 @@ Token (id=00016, line=00005, pos=0018, type=TT_ADD, val=+, ival=0, dval=0.000000 Token (id=00017, line=00005, pos=0021, type=TT_IDENT, val=gc, ival=0, dval=0.000000, refs=1) Token (id=00018, line=00005, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) 0 -ICOUNT 6 -11 +ICOUNT 4 +9 -- cgit v1.2.3 From da52f90a73abd653cfe9726bcf5c96338db0b7a2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 23 Aug 2008 01:46:47 +0000 Subject: some enhancements --- COPYING | 6 +-- NEW | 2 + TODO | 3 +- docs/header.txt | 2 +- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- src/argv.c | 2 +- src/argv.h | 2 +- src/build.h | 4 +- src/core/convert.c | 2 +- src/core/convert.h | 2 +- src/core/function.c | 2 +- src/core/function.h | 2 +- src/core/garbage.c | 2 +- src/core/garbage.h | 2 +- src/core/interpret.c | 2 +- src/core/interpret.h | 2 +- src/core/scanner.c | 110 ++++++++++++++++++++++----------------------------- src/core/scanner.h | 5 +-- src/core/scope.c | 2 +- src/core/scope.h | 2 +- src/core/symbol.c | 2 +- src/core/symbol.h | 2 +- src/core/token.c | 2 +- src/core/token.h | 2 +- src/data/array.c | 2 +- src/data/array.h | 2 +- src/data/dat.c | 2 +- src/data/dat.h | 2 +- src/data/hash.c | 2 +- src/data/hash.h | 2 +- src/data/list.c | 2 +- src/data/list.h | 2 +- src/data/map.c | 2 +- src/data/map.h | 2 +- src/data/queue.c | 2 +- src/data/queue.h | 2 +- src/data/stack.c | 2 +- src/data/stack.h | 2 +- src/data/tree.c | 2 +- src/data/tree.h | 2 +- src/data/tupel.c | 2 +- src/data/tupel.h | 2 +- src/data/types.h | 2 +- src/defines.h | 14 +++---- src/fype.c | 2 +- src/fype.h | 2 +- src/main.c | 2 +- tmp/test.out | 3 -- 50 files changed, 106 insertions(+), 125 deletions(-) diff --git a/COPYING b/COPYING index 46cf5f7..9b3ddb4 100644 --- a/COPYING +++ b/COPYING @@ -1,6 +1,6 @@ -Fype (http://www.fype.org) is ... -... Copyright (c) 2005 2006 2007 2008 by Paul Buetow (http://www.pblabs.net) -All rights reserved. +Fype (http://fype.buetow.org) is ... +... Copyright (c) 2005 2006 2007 2008 by Paul C. Buetow +(http://www.pb-labs.com) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/NEW b/NEW index 1fee9a5..e2c5c01 100644 --- a/NEW +++ b/NEW @@ -1,2 +1,4 @@ Undocumented new features: undef keyword + No more segfault: fype -e '1' + Spaces are not needed any more diff --git a/TODO b/TODO index 75aafba..f3c9905 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,10 @@ Todo's (not in any specific order) -Segfault: fype -e '1' +Scanner: separate between token (e.g. allow 1+2) Arrays Closures Function arguments and return values Interactive shell Labels -Scanner: separate between token (e.g. allow 1+2) String operators/functions loop, next, break, do diff --git a/docs/header.txt b/docs/header.txt index 0b508d9..18bc48e 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -4,7 +4,7 @@ A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org -Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) +Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) All rights reserved. Redistribution and use in source and binary forms, with or without modi- diff --git a/docs/help.txt b/docs/help.txt index e25397a..8c52ff4 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 8868 +Fype v0.0-devel Build 8978 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index 3823e6c..940e9f3 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7215 +===> Num of C source lines : 7202 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 320 diff --git a/docs/version.txt b/docs/version.txt index a7bdd50..3179b53 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 8868 +Fype v0.0-devel Build 8978 diff --git a/src/argv.c b/src/argv.c index ab22d64..384c14e 100644 --- a/src/argv.c +++ b/src/argv.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/argv.h b/src/argv.h index 769475c..1a71fac 100644 --- a/src/argv.h +++ b/src/argv.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/build.h b/src/build.h index c0feb55..a770852 100644 --- a/src/build.h +++ b/src/build.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 8870 +#define BUILDNR 8992 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index bddbf1e..ff0fcb2 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/convert.h b/src/core/convert.h index fc7f3bd..632283e 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/function.c b/src/core/function.c index 134024b..4225309 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/function.h b/src/core/function.h index 024b05a..e7cfe48 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/garbage.c b/src/core/garbage.c index ec01dc6..3d39d71 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/garbage.h b/src/core/garbage.h index 522bdd8..d7f6609 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/interpret.c b/src/core/interpret.c index 4eb26b1..340b80a 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/interpret.h b/src/core/interpret.h index 5f9e6d2..743a24a 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scanner.c b/src/core/scanner.c index 7159881..a202bc3 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- @@ -37,45 +37,10 @@ #include #include -const char const *KEYWORDS[] = { - "if", - "else", - "elsif", - "while", - "ret", - "const", -}; - -const char const *OPERATORS[] = { - "!", - "!=", - "(", - ")", - "*", - "+", - "++", - ",", - "-", - "--", - ".", - "/", - "\\", - ":", - "==", - ";", - "<<", - "<", - "<=", - "=", - ">=", - ">>", - ">", - "{", - "}", -}; - -const char TOKENENDS[] = "{}();:,."; -int CODESTRING_INDEX = 0; +const char const *_TOKENENDS2[] = { "==", "!=", "<=", ">=", }; +const char _TOKENENDS[] = "})+-*/={(<>;:,.!"; +#define _ADD_SEMICOLON_INDEX 2 +int _CODESTR_INDEX = 0; Scanner* scanner_new(List *p_list_token, Tupel *p_tupel_argv) { @@ -105,9 +70,8 @@ scanner_new(List *p_list_token, Tupel *p_tupel_argv) { p_scanner->i_current_line_nr = 1; p_scanner->i_current_pos_nr = 0; - p_scanner->i_num_keywords = sizeof(KEYWORDS) / sizeof(char const *); - p_scanner->i_num_operators = sizeof(OPERATORS) / sizeof(char const *); - p_scanner->i_num_tokenends = strlen(TOKENENDS); + p_scanner->i_num_tokenends2 = sizeof(_TOKENENDS2) / sizeof(char const *); + p_scanner->i_num_tokenends = strlen(_TOKENENDS); return p_scanner; } @@ -119,6 +83,15 @@ scanner_delete(Scanner *p_scanner) { free(p_scanner); } +void +_add_semicolon_to_list(Scanner *p_scanner) { + int i_token_len = 1; + char *c_token = calloc(2, sizeof(char*)); + c_token[0] = ';'; + c_token[1] = '\0'; + scanner_add_token(p_scanner, &c_token, &i_token_len, TT_SEMICOLON); +} + void scanner_post_task(Scanner *p_scanner) { List *p_list_token = scanner_get_list_token(p_scanner); @@ -157,7 +130,7 @@ scanner_post_task(Scanner *p_scanner) { pt_last[0] = pt_last[1] = NULL; tt_last[0] = tt_last[1] = TT_NONE; - } + } } tt_last[0] = tt_last[1]; @@ -175,7 +148,7 @@ _scanner_has_next_char(Scanner *p_scanner) { if (p_scanner->fp) return !feof(p_scanner->fp); - return p_scanner->c_codestring[CODESTRING_INDEX] != 0; + return p_scanner->c_codestring[_CODESTR_INDEX] != 0; } char @@ -183,7 +156,7 @@ _scanner_get_next_char(Scanner *p_scanner) { if (p_scanner->fp) return fgetc(p_scanner->fp); - return (p_scanner->c_codestring[CODESTRING_INDEX++]); + return (p_scanner->c_codestring[_CODESTR_INDEX++]); } void @@ -196,7 +169,6 @@ scanner_run(Fype *p_fype) { c_token[0] = 0; while ( _scanner_has_next_char(p_scanner) ) { - //char c = fgetc(fp); char c = _scanner_get_next_char(p_scanner); ++p_scanner->i_current_pos_nr; @@ -238,8 +210,8 @@ scanner_run(Fype *p_fype) { } { int i_num_nl = 0; + _Bool flag = false; do { - // c = fgetc(fp); c = _scanner_get_next_char(p_scanner); if ( c == '\n' ) { ++i_num_nl; @@ -252,11 +224,13 @@ scanner_run(Fype *p_fype) { c_token[i_token_len] = 0; } else if (c == '"') { - if (i_token_len && c_token[i_token_len-1] == '\\') + if (i_token_len && c_token[i_token_len-1] == '\\') { c_token[i_token_len-1] = '"'; - else + } else { + flag = true; break; + } } else { ++i_token_len; @@ -265,13 +239,15 @@ scanner_run(Fype *p_fype) { c_token[i_token_len] = 0; } - //} while ( !feof(fp) ); } while ( _scanner_has_next_char(p_scanner) ); scanner_add_token(p_scanner, &c_token, &i_token_len, TT_STRING); if (i_num_nl) p_scanner->i_current_line_nr += i_num_nl; + + if (flag) + _add_semicolon_to_list(p_scanner); } break; @@ -301,10 +277,23 @@ scanner_run(Fype *p_fype) { scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); } else { + for (int i = 0; i < p_scanner->i_num_tokenends2; ++i) { + if (_TOKENENDS2[i][0] == c) { + /* + TokenType tt_cur = scanner_get_tt_cur(c_token); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + if (i < _ADD_SEMICOLON_INDEX) + _add_semicolon_to_list(p_scanner); + break; + */ + } + } for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { - if (TOKENENDS[i] == c) { + if (_TOKENENDS[i] == c) { TokenType tt_cur = scanner_get_tt_cur(c_token); - scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + if (i < _ADD_SEMICOLON_INDEX) + _add_semicolon_to_list(p_scanner); break; } } @@ -323,6 +312,12 @@ scanner_run(Fype *p_fype) { scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); } + /* Check if there is a ; missing */ + List *p_list_token = scanner_get_list_token(p_scanner); + Token *p_last_token = list_last(p_list_token); + if (token_get_tt(p_last_token) != TT_SEMICOLON) + _add_semicolon_to_list(p_scanner); + scanner_post_task(p_scanner); char *c_filename = scanner_get_filename(p_scanner); @@ -344,15 +339,6 @@ scanner_run(Fype *p_fype) { } p_fype->c_basename = c_basename; - - /* - c_token = calloc(2, sizeof(char*)); - c_token[0] = ';'; - c_token[1] = '\0'; - i_token_len = 1; - - scanner_add_token(p_scanner, &c_token, &i_token_len, TT_STRING); - */ } void diff --git a/src/core/scanner.h b/src/core/scanner.h index 9a83f9c..e760bc6 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- @@ -50,8 +50,7 @@ typedef struct { int i_current_line_nr; int i_current_pos_nr; - int i_num_keywords; - int i_num_operators; + int i_num_tokenends2; int i_num_tokenends; char *c_filename; char *c_codestring; diff --git a/src/core/scope.c b/src/core/scope.c index e0b9fcd..f372a6a 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scope.h b/src/core/scope.h index ac24edc..6e74e64 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/symbol.c b/src/core/symbol.c index 71e9012..c6733f5 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/symbol.h b/src/core/symbol.h index 9224d43..755c3f7 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/token.c b/src/core/token.c index 593ae5e..58b334a 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/token.h b/src/core/token.h index 2117fa2..bb57a64 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/array.c b/src/data/array.c index 5afaf10..33afb39 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/array.h b/src/data/array.h index bfca3c2..7d24dc0 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/dat.c b/src/data/dat.c index 462faf5..e82db75 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/dat.h b/src/data/dat.h index 426eaa0..58cc686 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/hash.c b/src/data/hash.c index d2e3b20..3a5a686 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/hash.h b/src/data/hash.h index 1c1db37..a783359 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/list.c b/src/data/list.c index 3aca167..00e9b95 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/list.h b/src/data/list.h index cd8bd1e..332b2a6 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/map.c b/src/data/map.c index 605c053..0668b17 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/map.h b/src/data/map.h index eee9183..eb4bdc6 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/queue.c b/src/data/queue.c index ab02c6d..fa080a8 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/queue.h b/src/data/queue.h index a9a4b5e..b5d8dfe 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/stack.c b/src/data/stack.c index 7fb6402..610d139 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/stack.h b/src/data/stack.h index 99571b0..41574b0 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tree.c b/src/data/tree.c index 36da485..425c9df 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tree.h b/src/data/tree.h index da37658..f97be52 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tupel.c b/src/data/tupel.c index c4fed76..0ff45dd 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tupel.h b/src/data/tupel.h index 81c1337..71e1f55 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/types.h b/src/data/types.h index 2d5d6c3..5a396c4 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/defines.h b/src/defines.h index e3fb3de..507d3b4 100644 --- a/src/defines.h +++ b/src/defines.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- @@ -74,13 +74,11 @@ exit(1); } #define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n"); -/* -#define DEBUG_TOKEN_REFCOUNT -#define DEBUG_FUNCTION_PROCESS -#define DEBUG_TRACK -#define DEBUG_BLOCK_GET -#define DEBUG_EXPRESSION_GET -*/ +//#define DEBUG_TOKEN_REFCOUNT +//#define DEBUG_FUNCTION_PROCESS +//#define DEBUG_TRACK +//#define DEBUG_BLOCK_GET +//#define DEBUG_EXPRESSION_GET #ifdef DEBUG_TRACK #define TRACK \ diff --git a/src/fype.c b/src/fype.c index c34d2ae..dbc480a 100644 --- a/src/fype.c +++ b/src/fype.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/fype.h b/src/fype.h index bf24339..643762f 100644 --- a/src/fype.h +++ b/src/fype.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/main.c b/src/main.c index 6e7be70..a51a234 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/tmp/test.out b/tmp/test.out index 080145f..5385798 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -20,6 +20,3 @@ Token (id=00015, line=00005, pos=0016, type=TT_INTEGER, val=1, ival=1, dval=0.00 Token (id=00016, line=00005, pos=0018, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) Token (id=00017, line=00005, pos=0021, type=TT_IDENT, val=gc, ival=0, dval=0.000000, refs=1) Token (id=00018, line=00005, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -0 -ICOUNT 4 -9 -- cgit v1.2.3 From e9a9ad33583c49df48ae99cab9ba0fd80f150a9e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 23 Aug 2008 02:03:40 +0000 Subject: changed headers --- COPYING | 4 ++-- docs/header.txt | 2 +- src/argv.c | 2 +- src/argv.h | 2 +- src/build.h | 2 +- src/core/convert.c | 2 +- src/core/convert.h | 2 +- src/core/function.c | 2 +- src/core/function.h | 2 +- src/core/garbage.c | 2 +- src/core/garbage.h | 2 +- src/core/interpret.c | 2 +- src/core/interpret.h | 2 +- src/core/scanner.c | 2 +- src/core/scanner.h | 2 +- src/core/scope.c | 2 +- src/core/scope.h | 2 +- src/core/symbol.c | 2 +- src/core/symbol.h | 2 +- src/core/token.c | 2 +- src/core/token.h | 2 +- src/data/array.c | 2 +- src/data/array.h | 2 +- src/data/dat.c | 2 +- src/data/dat.h | 2 +- src/data/hash.c | 2 +- src/data/hash.h | 2 +- src/data/list.c | 2 +- src/data/list.h | 2 +- src/data/map.c | 2 +- src/data/map.h | 2 +- src/data/queue.c | 2 +- src/data/queue.h | 2 +- src/data/stack.c | 2 +- src/data/stack.h | 2 +- src/data/tree.c | 2 +- src/data/tree.h | 2 +- src/data/tupel.c | 2 +- src/data/tupel.h | 2 +- src/data/types.h | 2 +- src/defines.h | 2 +- src/fype.c | 2 +- src/fype.h | 2 +- src/main.c | 2 +- 44 files changed, 45 insertions(+), 45 deletions(-) diff --git a/COPYING b/COPYING index 9b3ddb4..ef7c913 100644 --- a/COPYING +++ b/COPYING @@ -1,6 +1,6 @@ Fype (http://fype.buetow.org) is ... -... Copyright (c) 2005 2006 2007 2008 by Paul C. Buetow -(http://www.pb-labs.com) All rights reserved. +... Copyright (c) 2005 2006 2007 2008 by Dipl.-Inf. (FH) Paul C. Buetow +All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/docs/header.txt b/docs/header.txt index 18bc48e..d673a17 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -4,7 +4,7 @@ A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org -Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) +Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow All rights reserved. Redistribution and use in source and binary forms, with or without modi- diff --git a/src/argv.c b/src/argv.c index 384c14e..c7f43f7 100644 --- a/src/argv.c +++ b/src/argv.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/argv.h b/src/argv.h index 1a71fac..ae690b7 100644 --- a/src/argv.h +++ b/src/argv.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/build.h b/src/build.h index a770852..4a94ed1 100644 --- a/src/build.h +++ b/src/build.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/convert.c b/src/core/convert.c index ff0fcb2..af36c34 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/convert.h b/src/core/convert.h index 632283e..e38f0e6 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/function.c b/src/core/function.c index 4225309..7912cf7 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/function.h b/src/core/function.h index e7cfe48..7355190 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/garbage.c b/src/core/garbage.c index 3d39d71..8d78344 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/garbage.h b/src/core/garbage.h index d7f6609..8d13f5b 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/interpret.c b/src/core/interpret.c index 340b80a..6053f17 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/interpret.h b/src/core/interpret.h index 743a24a..4fc79e2 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scanner.c b/src/core/scanner.c index a202bc3..f4c6b81 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scanner.h b/src/core/scanner.h index e760bc6..69703b0 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scope.c b/src/core/scope.c index f372a6a..7f8ecad 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/scope.h b/src/core/scope.h index 6e74e64..95b8c9a 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/symbol.c b/src/core/symbol.c index c6733f5..5bfca53 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/symbol.h b/src/core/symbol.h index 755c3f7..e6d7fa1 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/token.c b/src/core/token.c index 58b334a..56ecb80 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/core/token.h b/src/core/token.h index bb57a64..a14f04c 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/array.c b/src/data/array.c index 33afb39..1fbf9d5 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/array.h b/src/data/array.h index 7d24dc0..866903f 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/dat.c b/src/data/dat.c index e82db75..dd565f9 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/dat.h b/src/data/dat.h index 58cc686..9ad81e9 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/hash.c b/src/data/hash.c index 3a5a686..0ede2fa 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/hash.h b/src/data/hash.h index a783359..38f4fcf 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/list.c b/src/data/list.c index 00e9b95..16469cb 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/list.h b/src/data/list.h index 332b2a6..95a58a2 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/map.c b/src/data/map.c index 0668b17..e9f9fae 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/map.h b/src/data/map.h index eb4bdc6..269439a 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/queue.c b/src/data/queue.c index fa080a8..7d10105 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/queue.h b/src/data/queue.h index b5d8dfe..f00664e 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/stack.c b/src/data/stack.c index 610d139..877a8b6 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/stack.h b/src/data/stack.h index 41574b0..66cca50 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tree.c b/src/data/tree.c index 425c9df..15b0cbb 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tree.h b/src/data/tree.h index f97be52..e4682d7 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tupel.c b/src/data/tupel.c index 0ff45dd..95280d6 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/tupel.h b/src/data/tupel.h index 71e1f55..d2f0901 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/data/types.h b/src/data/types.h index 5a396c4..565c1a6 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/defines.h b/src/defines.h index 507d3b4..664438f 100644 --- a/src/defines.h +++ b/src/defines.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/fype.c b/src/fype.c index dbc480a..653588a 100644 --- a/src/fype.c +++ b/src/fype.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/fype.h b/src/fype.h index 643762f..f75ed93 100644 --- a/src/fype.h +++ b/src/fype.h @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- diff --git a/src/main.c b/src/main.c index a51a234..aaff7e6 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow (http://www.pb-labs.com) + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. *: *: Redistribution and use in source and binary forms, with or without modi- -- cgit v1.2.3 From e95e69c55c8e38c39e7ded141272e5e793d05623 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 24 Aug 2008 00:28:17 +0000 Subject: few mods --- Makefile | 2 +- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- src/build.h | 2 +- src/core/scanner.c | 38 +++++++++++++++++++++++++------------- tmp/test.out | 3 +++ 7 files changed, 33 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 8f8cb62..375de0f 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -DEBUG=-g3 -ggdb3 +#DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt diff --git a/docs/help.txt b/docs/help.txt index 8c52ff4..6cd5d48 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 8978 +Fype v0.0-devel Build 9003 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index 940e9f3..4292895 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7202 +===> Num of C source lines : 7201 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 320 diff --git a/docs/version.txt b/docs/version.txt index 3179b53..64c40e6 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 8978 +Fype v0.0-devel Build 9003 diff --git a/src/build.h b/src/build.h index 4a94ed1..9be69e8 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 8992 +#define BUILDNR 9029 #define OS_FREEBSD #endif diff --git a/src/core/scanner.c b/src/core/scanner.c index f4c6b81..9e49557 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -37,7 +37,12 @@ #include #include -const char const *_TOKENENDS2[] = { "==", "!=", "<=", ">=", }; +const TokenType _TOKENENDS2[] = { + TT_ASSIGN, TT_ASSIGN, TT_EQ, + TT_NOT, TT_ASSIGN, TT_NEQ, + TT_LT, TT_ASSIGN, TT_LE, + TT_GT, TT_ASSIGN, TT_GE, +}; const char _TOKENENDS[] = "})+-*/={(<>;:,.!"; #define _ADD_SEMICOLON_INDEX 2 int _CODESTR_INDEX = 0; @@ -70,8 +75,8 @@ scanner_new(List *p_list_token, Tupel *p_tupel_argv) { p_scanner->i_current_line_nr = 1; p_scanner->i_current_pos_nr = 0; - p_scanner->i_num_tokenends2 = sizeof(_TOKENENDS2) / sizeof(char const *); p_scanner->i_num_tokenends = strlen(_TOKENENDS); + p_scanner->i_num_tokenends2 = sizeof(_TOKENENDS2) / sizeof(TokenType); return p_scanner; } @@ -130,6 +135,24 @@ scanner_post_task(Scanner *p_scanner) { pt_last[0] = pt_last[1] = NULL; tt_last[0] = tt_last[1] = TT_NONE; + } else { + for (int i = 0; i < p_scanner->i_num_tokenends2; i += 3) { + if (tt_cur == _TOKENENDS2[i+1] + && tt_last[1] == _TOKENENDS2[i]) { + /* + token_ref_down(pt_last[1]); + list_remove_elem(p_list_token, p_le->p_prev); + + pt_last[0] = pt_last[1] = NULL; + tt_last[0] = tt_last[1] = TT_NONE; + + token_set_val(p_token, c_new); + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, atof(c_new)); + */ + break; + } + } } } @@ -277,17 +300,6 @@ scanner_run(Fype *p_fype) { scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); } else { - for (int i = 0; i < p_scanner->i_num_tokenends2; ++i) { - if (_TOKENENDS2[i][0] == c) { - /* - TokenType tt_cur = scanner_get_tt_cur(c_token); - scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); - if (i < _ADD_SEMICOLON_INDEX) - _add_semicolon_to_list(p_scanner); - break; - */ - } - } for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { if (_TOKENENDS[i] == c) { TokenType tt_cur = scanner_get_tt_cur(c_token); diff --git a/tmp/test.out b/tmp/test.out index 5385798..080145f 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -20,3 +20,6 @@ Token (id=00015, line=00005, pos=0016, type=TT_INTEGER, val=1, ival=1, dval=0.00 Token (id=00016, line=00005, pos=0018, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) Token (id=00017, line=00005, pos=0021, type=TT_IDENT, val=gc, ival=0, dval=0.000000, refs=1) Token (id=00018, line=00005, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +0 +ICOUNT 4 +9 -- cgit v1.2.3 From 7f3055c1f4429a81de3715d5d4173353382e2de2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 24 Aug 2008 19:30:11 +0000 Subject: some mods --- Makefile | 2 +- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- examples/conditionals.fy | 24 +++---- src/argv.c | 30 ++++----- src/argv.h | 30 ++++----- src/build.h | 32 ++++----- src/core/convert.c | 30 ++++----- src/core/convert.h | 30 ++++----- src/core/function.c | 166 +++++++++++++++++++++++++++++++---------------- src/core/function.h | 34 +++++----- src/core/garbage.c | 30 ++++----- src/core/garbage.h | 30 ++++----- src/core/interpret.c | 72 ++++++++++++-------- src/core/interpret.h | 30 ++++----- src/core/scanner.c | 89 +++++++++---------------- src/core/scanner.h | 31 +++++---- src/core/scope.c | 30 ++++----- src/core/scope.h | 30 ++++----- src/core/symbol.c | 30 ++++----- src/core/symbol.h | 30 ++++----- src/core/token.c | 30 ++++----- src/core/token.h | 30 ++++----- src/data/array.c | 30 ++++----- src/data/array.h | 30 ++++----- src/data/dat.c | 30 ++++----- src/data/dat.h | 30 ++++----- src/data/hash.c | 30 ++++----- src/data/hash.h | 30 ++++----- src/data/list.c | 30 ++++----- src/data/list.h | 30 ++++----- src/data/map.c | 30 ++++----- src/data/map.h | 30 ++++----- src/data/queue.c | 30 ++++----- src/data/queue.h | 30 ++++----- src/data/stack.c | 30 ++++----- src/data/stack.h | 30 ++++----- src/data/tree.c | 30 ++++----- src/data/tree.h | 30 ++++----- src/data/tupel.c | 30 ++++----- src/data/tupel.h | 30 ++++----- src/data/types.h | 30 ++++----- src/defines.h | 30 ++++----- src/fype.c | 30 ++++----- src/fype.h | 30 ++++----- src/main.c | 30 ++++----- 47 files changed, 791 insertions(+), 745 deletions(-) diff --git a/Makefile b/Makefile index 375de0f..8f8cb62 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -#DEBUG=-g3 -ggdb3 +DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt diff --git a/docs/help.txt b/docs/help.txt index 6cd5d48..d96ea80 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 9003 +Fype v0.0-devel Build 9116 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index 4292895..92e699d 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7201 +===> Num of C source lines : 7256 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 320 diff --git a/docs/version.txt b/docs/version.txt index 64c40e6..37e045d 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 9003 +Fype v0.0-devel Build 9116 diff --git a/examples/conditionals.fy b/examples/conditionals.fy index 1260ae2..38bd46d 100644 --- a/examples/conditionals.fy +++ b/examples/conditionals.fy @@ -21,21 +21,21 @@ assert 0 == (put 0 == 1); assert 1 == (say 0 == 0); # "0110\n" -assert 0 == (put 1 != 1); -assert 1 == (put 1 != 0); -assert 1 == (put 0 != 1); -assert 0 == (say 0 != 0); +assert 0 == (put 1 =! 1); +assert 1 == (put 1 =! 0); +assert 1 == (put 0 =! 1); +assert 0 == (say 0 =! 0); # "1011\n" -assert 1 == (put 1 <= 1); -assert 0 == (put 1 <= 0); -assert 1 == (put 0 <= 1); -assert 1 == (say 0 <= 0); +assert 1 == (put 1 =< 1); +assert 0 == (put 1 =< 0); +assert 1 == (put 0 =< 1); +assert 1 == (say 0 =< 0); ## "1101\n" -assert 1 == (put 1 >= 1); -assert 1 == (put 1 >= 0); -assert 0 == (put 0 >= 1); -assert 1 == (say 0 >= 0); +assert 1 == (put 1 => 1); +assert 1 == (put 1 => 0); +assert 0 == (put 0 => 1); +assert 1 == (say 0 => 0); diff --git a/src/argv.c b/src/argv.c index c7f43f7..426e364 100644 --- a/src/argv.c +++ b/src/argv.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/argv.h b/src/argv.h index ae690b7..745228d 100644 --- a/src/argv.h +++ b/src/argv.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/build.h b/src/build.h index 9be69e8..b5cb296 100644 --- a/src/build.h +++ b/src/build.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/build.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,27 +15,27 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9029 +#define BUILDNR 9120 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index af36c34..73fb8a2 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/convert.h b/src/core/convert.h index e38f0e6..0c8b7da 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.c b/src/core/function.c index 7912cf7..06e89bb 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -53,12 +53,19 @@ void _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, - Token *p_token_next) { + Token *p_token_op2, Token *p_token_next) { TokenType tt_op = token_get_tt(p_token_op); + TokenType tt_op2 = p_token_op2 == NULL + ? TT_NONE + : token_get_tt(p_token_op2); #ifdef DEBUG_FUNCTION_PROCESS - printf("PROCESS OPERATOR %s\n", tt_get_name(tt_op)); + if (p_token_op2 == NULL) + printf("PROCESS OPERATOR %s\n", tt_get_name(tt_op)); + else + printf("PROCESS OPERATOR %s %s\n", tt_get_name(tt_op), + tt_get_name(tt_op2)); token_print(p_token_next); printf("\n"); @@ -66,34 +73,79 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, printf("\n"); #endif /* DEBUG_FUNCTION_PROCESS */ + if (p_token_op2 != NULL) { +#ifdef DEBUG_FUNCTION_PROCESS + printf("===> %s %s %s %s\n", + tt_get_name(tt_highest), + tt_get_name(tt_op), + tt_get_name(tt_op2), + tt_get_name(tt_highest)); +#endif /* DEBUG_FUNCTION_PROCESS */ - switch (tt_op) { - case TT_ASSIGN: - { - Token *p_token_assign = p_interpret->p_token_temp; - TokenType tt_assign = token_get_tt(p_token_assign); - - if (tt_assign != TT_IDENT) { - _FUNCTION_ERROR("Can only assign to symbols", - p_token_store); + switch (tt_op) { + case TT_NOT: + switch (tt_op2) { + case TT_ASSIGN: + tt_op = TT_NEQ; + default: + break; + } + case TT_ASSIGN: + switch (tt_op2) { + case TT_ASSIGN: + tt_op = TT_EQ; + break; + default: + break; + } + case TT_LT: + switch (tt_op2) { + case TT_ASSIGN: + tt_op = TT_LE; + break; + default: + break; + } + case TT_GT: + switch (tt_op2) { + case TT_ASSIGN: + tt_op = TT_GE; + break; + default: + break; + } + default: + break; } + } else { + switch (tt_op) { + case TT_ASSIGN: + { + Token *p_token_assign = p_interpret->p_token_temp; + TokenType tt_assign = token_get_tt(p_token_assign); + + if (tt_assign != TT_IDENT) { + _FUNCTION_ERROR("Can only assign to symbols", + p_token_store); + } - Symbol *p_symbol = scope_get(p_interpret->p_scope, - token_get_val(p_token_assign)); + Symbol *p_symbol = scope_get(p_interpret->p_scope, + token_get_val(p_token_assign)); - if (p_symbol == NULL) { - _FUNCTION_ERROR("No such symbol", - p_token_assign); - } + if (p_symbol == NULL) { + _FUNCTION_ERROR("No such symbol", + p_token_assign); + } - symbol_set_val(p_symbol, p_token_store); - symbol_set_sym(p_symbol, SYM_VARIABLE); + symbol_set_val(p_symbol, p_token_store); + symbol_set_sym(p_symbol, SYM_VARIABLE); - return; - } + return; + } - break; - NO_DEFAULT; + break; + NO_DEFAULT; + } } p_token_next = token_new_copy(p_token_next); @@ -234,89 +286,90 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, NO_DEFAULT; } break; - case TT_LT: + case TT_LE: + printf("DFDF\n"); switch (tt_highest) { case TT_INTEGER: token_set_ival(p_token_store, - (int) token_get_ival(p_token_next) < + (int) token_get_ival(p_token_next) <= token_get_ival(p_token_store)); break; case TT_DOUBLE: token_set_ival(p_token_store, - token_get_dval(p_token_next) < + token_get_dval(p_token_next) <= token_get_dval(p_token_store)); token_set_tt(p_token_store, TT_INTEGER); break; case TT_STRING: token_set_ival(p_token_store, strcmp(token_get_val(p_token_next), - token_get_val(p_token_store)) < 0); + token_get_val(p_token_store)) <= 0); token_set_tt(p_token_store, TT_INTEGER); break; NO_DEFAULT; } break; - case TT_GT: + case TT_GE: switch (tt_highest) { case TT_INTEGER: token_set_ival(p_token_store, - (int) token_get_ival(p_token_next) > + (int) token_get_ival(p_token_next) >= token_get_ival(p_token_store)); break; case TT_DOUBLE: token_set_ival(p_token_store, - token_get_dval(p_token_next) > + token_get_dval(p_token_next) >= token_get_dval(p_token_store)); token_set_tt(p_token_store, TT_INTEGER); break; case TT_STRING: token_set_ival(p_token_store, strcmp(token_get_val(p_token_next), - token_get_val(p_token_store)) > 0); + token_get_val(p_token_store)) >= 0); token_set_tt(p_token_store, TT_INTEGER); break; NO_DEFAULT; } break; - case TT_LE: + case TT_LT: switch (tt_highest) { case TT_INTEGER: token_set_ival(p_token_store, - (int) token_get_ival(p_token_next) <= + (int) token_get_ival(p_token_next) < token_get_ival(p_token_store)); break; case TT_DOUBLE: token_set_ival(p_token_store, - token_get_dval(p_token_next) <= + token_get_dval(p_token_next) < token_get_dval(p_token_store)); token_set_tt(p_token_store, TT_INTEGER); break; case TT_STRING: token_set_ival(p_token_store, strcmp(token_get_val(p_token_next), - token_get_val(p_token_store)) <= 0); + token_get_val(p_token_store)) < 0); token_set_tt(p_token_store, TT_INTEGER); break; NO_DEFAULT; } break; - case TT_GE: + case TT_GT: switch (tt_highest) { case TT_INTEGER: token_set_ival(p_token_store, - (int) token_get_ival(p_token_next) >= + (int) token_get_ival(p_token_next) > token_get_ival(p_token_store)); break; case TT_DOUBLE: token_set_ival(p_token_store, - token_get_dval(p_token_next) >= + token_get_dval(p_token_next) > token_get_dval(p_token_store)); token_set_tt(p_token_store, TT_INTEGER); break; case TT_STRING: token_set_ival(p_token_store, strcmp(token_get_val(p_token_next), - token_get_val(p_token_store)) >= 0); + token_get_val(p_token_store)) > 0); token_set_tt(p_token_store, TT_INTEGER); break; NO_DEFAULT; @@ -336,14 +389,15 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, void function_process(Interpret *p_interpret, Token *p_token_op, - Stack *p_stack_args, int i_args) { + Token *p_token_op2, Stack *p_stack_args, int i_args) { Token *p_token_store = token_new_copy(stack_pop(p_stack_args)); for (int i = 0; i < i_args -1 && !stack_empty(p_stack_args); ++i) { Token *p_token_next = stack_pop(p_stack_args); - _process(p_interpret, p_token_store, p_token_op, p_token_next); + _process(p_interpret, p_token_store, p_token_op, + p_token_op2, p_token_next); } stack_push(p_stack_args, p_token_store); diff --git a/src/core/function.h b/src/core/function.h index 7355190..618ed94 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -40,8 +40,8 @@ #include "interpret.h" #include "../data/stack.h" -void function_process(Interpret *p_interp, Token *p_token_op, Stack - *p_stack_args, int i_args); +void function_process(Interpret *p_interp, Token *p_token_op, + Token *p_token_op2, Stack *p_stack_args, int i_args); _Bool function_is_buildin(Token *p_token_ident); void function_process_buildin(Interpret *p_interpret, Token *p_token_ident, Stack *p_stack_args); _Bool function_is_self_defined(Interpret *p_interpret); diff --git a/src/core/garbage.c b/src/core/garbage.c index 8d78344..aba19c4 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.h b/src/core/garbage.h index 8d13f5b..8a8a820 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.c b/src/core/interpret.c index 6053f17..25f4a0d 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -605,21 +605,35 @@ _compare(Interpret *p_interpret) { _Bool b_flag = true; do { + /* + ! = < > !! != !< !> =! == =< => >! >= >< >> + */ switch (p_interpret->tt) { - case TT_EQ: - case TT_NEQ: + case TT_NOT: + case TT_ASSIGN: case TT_LT: case TT_GT: - case TT_LE: - case TT_GE: { - Token *p_token = p_interpret->p_token; + Token *p_token_op = p_interpret->p_token; + Token *p_token_op2 = NULL; _NEXT + switch (p_interpret->tt) { + case TT_NOT: + case TT_ASSIGN: + case TT_LT: + case TT_GT: + p_token_op2 = p_interpret->p_token; + _NEXT + default: + break; + } + if (!_sum(p_interpret)) _INTERPRET_ERROR("Expected sum", p_interpret->p_token); - function_process(p_interpret, p_token, p_interpret->p_stack, 2); + function_process(p_interpret, p_token_op, p_token_op2, + p_interpret->p_stack, 2); } break; /* case */ @@ -649,13 +663,14 @@ _sum(Interpret *p_interpret) { case TT_ADD: case TT_SUB: { - Token *p_token = p_interpret->p_token; + Token *p_token_op = p_interpret->p_token; _NEXT if (!_product(p_interpret)) - _INTERPRET_ERROR("Expected product", p_token); + _INTERPRET_ERROR("Expected product", p_token_op); - function_process(p_interpret, p_token, p_interpret->p_stack, 2); + function_process(p_interpret, p_token_op, NULL, + p_interpret->p_stack, 2); } break; /* case */ @@ -692,7 +707,8 @@ _product(Interpret *p_interpret) { if (!_product2(p_interpret)) _INTERPRET_ERROR("Expected product2", p_token); - function_process(p_interpret, p_token, p_interpret->p_stack, 2); + function_process(p_interpret, p_token, NULL, + p_interpret->p_stack, 2); } break; /* case */ @@ -730,7 +746,8 @@ _product2(Interpret *p_interpret) { _INTERPRET_ERROR("Expected expression", p_token); p_interpret->p_token_temp = p_token_temp; - function_process(p_interpret, p_token, p_interpret->p_stack, 2); + function_process(p_interpret, p_token, NULL, + p_interpret->p_stack, 2); p_interpret->p_token_temp = NULL; } @@ -778,7 +795,8 @@ _term(Interpret *p_interpret) { _SKIP } - function_process_buildin(p_interpret, p_token, p_interpret->p_stack); + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); stack_merge(p_stack, p_interpret->p_stack); stack_delete(p_interpret->p_stack); diff --git a/src/core/interpret.h b/src/core/interpret.h index 4fc79e2..6e50e8d 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.c b/src/core/scanner.c index 9e49557..2e599eb 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -37,12 +37,6 @@ #include #include -const TokenType _TOKENENDS2[] = { - TT_ASSIGN, TT_ASSIGN, TT_EQ, - TT_NOT, TT_ASSIGN, TT_NEQ, - TT_LT, TT_ASSIGN, TT_LE, - TT_GT, TT_ASSIGN, TT_GE, -}; const char _TOKENENDS[] = "})+-*/={(<>;:,.!"; #define _ADD_SEMICOLON_INDEX 2 int _CODESTR_INDEX = 0; @@ -76,7 +70,6 @@ scanner_new(List *p_list_token, Tupel *p_tupel_argv) { p_scanner->i_current_pos_nr = 0; p_scanner->i_num_tokenends = strlen(_TOKENENDS); - p_scanner->i_num_tokenends2 = sizeof(_TOKENENDS2) / sizeof(TokenType); return p_scanner; } @@ -90,11 +83,11 @@ scanner_delete(Scanner *p_scanner) { void _add_semicolon_to_list(Scanner *p_scanner) { - int i_token_len = 1; - char *c_token = calloc(2, sizeof(char*)); - c_token[0] = ';'; - c_token[1] = '\0'; - scanner_add_token(p_scanner, &c_token, &i_token_len, TT_SEMICOLON); + int i_token_len = 1; + char *c_token = calloc(2, sizeof(char*)); + c_token[0] = ';'; + c_token[1] = '\0'; + scanner_add_token(p_scanner, &c_token, &i_token_len, TT_SEMICOLON); } void @@ -135,25 +128,7 @@ scanner_post_task(Scanner *p_scanner) { pt_last[0] = pt_last[1] = NULL; tt_last[0] = tt_last[1] = TT_NONE; - } else { - for (int i = 0; i < p_scanner->i_num_tokenends2; i += 3) { - if (tt_cur == _TOKENENDS2[i+1] - && tt_last[1] == _TOKENENDS2[i]) { - /* - token_ref_down(pt_last[1]); - list_remove_elem(p_list_token, p_le->p_prev); - - pt_last[0] = pt_last[1] = NULL; - tt_last[0] = tt_last[1] = TT_NONE; - - token_set_val(p_token, c_new); - token_set_tt(p_token, TT_DOUBLE); - token_set_dval(p_token, atof(c_new)); - */ - break; - } - } - } + } } tt_last[0] = tt_last[1]; @@ -233,7 +208,7 @@ scanner_run(Fype *p_fype) { } { int i_num_nl = 0; - _Bool flag = false; + _Bool flag = false; do { c = _scanner_get_next_char(p_scanner); if ( c == '\n' ) { @@ -250,10 +225,10 @@ scanner_run(Fype *p_fype) { if (i_token_len && c_token[i_token_len-1] == '\\') { c_token[i_token_len-1] = '"'; - } else { - flag = true; + } else { + flag = true; break; - } + } } else { ++i_token_len; @@ -269,8 +244,8 @@ scanner_run(Fype *p_fype) { if (i_num_nl) p_scanner->i_current_line_nr += i_num_nl; - if (flag) - _add_semicolon_to_list(p_scanner); + if (flag) + _add_semicolon_to_list(p_scanner); } break; @@ -303,9 +278,9 @@ scanner_run(Fype *p_fype) { for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { if (_TOKENENDS[i] == c) { TokenType tt_cur = scanner_get_tt_cur(c_token); - scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); - if (i < _ADD_SEMICOLON_INDEX) - _add_semicolon_to_list(p_scanner); + scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + if (i < _ADD_SEMICOLON_INDEX) + _add_semicolon_to_list(p_scanner); break; } } @@ -327,8 +302,8 @@ scanner_run(Fype *p_fype) { /* Check if there is a ; missing */ List *p_list_token = scanner_get_list_token(p_scanner); Token *p_last_token = list_last(p_list_token); - if (token_get_tt(p_last_token) != TT_SEMICOLON) - _add_semicolon_to_list(p_scanner); + if (token_get_tt(p_last_token) != TT_SEMICOLON) + _add_semicolon_to_list(p_scanner); scanner_post_task(p_scanner); diff --git a/src/core/scanner.h b/src/core/scanner.h index 69703b0..f5f91ad 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -50,7 +50,6 @@ typedef struct { int i_current_line_nr; int i_current_pos_nr; - int i_num_tokenends2; int i_num_tokenends; char *c_filename; char *c_codestring; diff --git a/src/core/scope.c b/src/core/scope.c index 7f8ecad..1bf8dd2 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.h b/src/core/scope.h index 95b8c9a..59ed3c8 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.c b/src/core/symbol.c index 5bfca53..2343cdb 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.h b/src/core/symbol.h index e6d7fa1..2bd248c 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.c b/src/core/token.c index 56ecb80..437ed6c 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.h b/src/core/token.h index a14f04c..b73398b 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.c b/src/data/array.c index 1fbf9d5..2ae4ece 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.h b/src/data/array.h index 866903f..b343521 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.c b/src/data/dat.c index dd565f9..6d4f10d 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.h b/src/data/dat.h index 9ad81e9..83e24a6 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.c b/src/data/hash.c index 0ede2fa..5555eb1 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.h b/src/data/hash.h index 38f4fcf..196c4a8 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.c b/src/data/list.c index 16469cb..83860c3 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.h b/src/data/list.h index 95a58a2..323f496 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.c b/src/data/map.c index e9f9fae..b5c016e 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.h b/src/data/map.h index 269439a..fe7397f 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.c b/src/data/queue.c index 7d10105..d4697bb 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.h b/src/data/queue.h index f00664e..f345cce 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.c b/src/data/stack.c index 877a8b6..9afb9b4 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.h b/src/data/stack.h index 66cca50..4774cef 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.c b/src/data/tree.c index 15b0cbb..0160eb9 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.h b/src/data/tree.h index e4682d7..1f9b18c 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.c b/src/data/tupel.c index 95280d6..bcb67f6 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.h b/src/data/tupel.h index d2f0901..d70bf9f 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/types.h b/src/data/types.h index 565c1a6..b20d67a 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/types.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/defines.h b/src/defines.h index 664438f..17e4933 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/defines.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.c b/src/fype.c index 653588a..af61c1d 100644 --- a/src/fype.c +++ b/src/fype.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.h b/src/fype.h index f75ed93..b3b140d 100644 --- a/src/fype.h +++ b/src/fype.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/main.c b/src/main.c index aaff7e6..88ca945 100644 --- a/src/main.c +++ b/src/main.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/main.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ -- cgit v1.2.3 From cf9029ee902eda028f3efcb77e8c2aed25205b94 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 24 Aug 2008 19:47:50 +0000 Subject: foo bar baz --- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- examples/conditionals.fy | 24 ++++++++++++------------ src/build.h | 2 +- src/core/function.c | 14 +++++--------- 6 files changed, 21 insertions(+), 25 deletions(-) diff --git a/docs/help.txt b/docs/help.txt index d96ea80..b99b60f 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 9116 +Fype v0.0-devel Build 9136 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index 92e699d..50cfed4 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7256 +===> Num of C source lines : 7252 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 320 diff --git a/docs/version.txt b/docs/version.txt index 37e045d..cb62366 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 9116 +Fype v0.0-devel Build 9136 diff --git a/examples/conditionals.fy b/examples/conditionals.fy index 38bd46d..1260ae2 100644 --- a/examples/conditionals.fy +++ b/examples/conditionals.fy @@ -21,21 +21,21 @@ assert 0 == (put 0 == 1); assert 1 == (say 0 == 0); # "0110\n" -assert 0 == (put 1 =! 1); -assert 1 == (put 1 =! 0); -assert 1 == (put 0 =! 1); -assert 0 == (say 0 =! 0); +assert 0 == (put 1 != 1); +assert 1 == (put 1 != 0); +assert 1 == (put 0 != 1); +assert 0 == (say 0 != 0); # "1011\n" -assert 1 == (put 1 =< 1); -assert 0 == (put 1 =< 0); -assert 1 == (put 0 =< 1); -assert 1 == (say 0 =< 0); +assert 1 == (put 1 <= 1); +assert 0 == (put 1 <= 0); +assert 1 == (put 0 <= 1); +assert 1 == (say 0 <= 0); ## "1101\n" -assert 1 == (put 1 => 1); -assert 1 == (put 1 => 0); -assert 0 == (put 0 => 1); -assert 1 == (say 0 => 0); +assert 1 == (put 1 >= 1); +assert 1 == (put 1 >= 0); +assert 0 == (put 0 >= 1); +assert 1 == (say 0 >= 0); diff --git a/src/build.h b/src/build.h index b5cb296..8be647b 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9120 +#define BUILDNR 9136 #define OS_FREEBSD #endif diff --git a/src/core/function.c b/src/core/function.c index 06e89bb..39971a1 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -74,22 +74,16 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, #endif /* DEBUG_FUNCTION_PROCESS */ if (p_token_op2 != NULL) { -#ifdef DEBUG_FUNCTION_PROCESS - printf("===> %s %s %s %s\n", - tt_get_name(tt_highest), - tt_get_name(tt_op), - tt_get_name(tt_op2), - tt_get_name(tt_highest)); -#endif /* DEBUG_FUNCTION_PROCESS */ - switch (tt_op) { case TT_NOT: switch (tt_op2) { case TT_ASSIGN: tt_op = TT_NEQ; + break; default: break; } + break; case TT_ASSIGN: switch (tt_op2) { case TT_ASSIGN: @@ -98,6 +92,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, default: break; } + break; case TT_LT: switch (tt_op2) { case TT_ASSIGN: @@ -106,6 +101,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, default: break; } + break; case TT_GT: switch (tt_op2) { case TT_ASSIGN: @@ -114,6 +110,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, default: break; } + break; default: break; } @@ -287,7 +284,6 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, } break; case TT_LE: - printf("DFDF\n"); switch (tt_highest) { case TT_INTEGER: token_set_ival(p_token_store, -- cgit v1.2.3 From ec9899c0399f42473d311c7d0a46769d3d933c06 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 25 Aug 2008 18:48:28 +0000 Subject: bugs fixed, initial array --- Makefile | 2 +- NEW | 3 +- README | 14 ++--- TODO | 1 - docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6086 -> 6050 bytes docs/pod/fype.html | 15 +++-- docs/pod/fype.man | 27 ++++----- docs/pod/fype.pod | 16 +++-- docs/pod/fype.tex | 18 +++--- docs/pod/fype.txt | 14 ++--- docs/stats.txt | 6 +- docs/version.txt | 2 +- examples/broken/bitwise.fy | 17 +++--- src/build.h | 2 +- src/core/function.c | 147 +++++++++++++++++++++++++++++++++++++++++++++ src/core/interpret.c | 54 ++++++++++++----- src/core/scanner.c | 19 +++--- src/core/scanner.h | 1 + src/core/token.c | 27 ++++++++- src/core/token.h | 7 +++ src/defines.h | 1 + tmp/test.fy | 4 +- tmp/test.out | 38 +++++------- 24 files changed, 311 insertions(+), 126 deletions(-) diff --git a/Makefile b/Makefile index 8f8cb62..375de0f 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -DEBUG=-g3 -ggdb3 +#DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt diff --git a/NEW b/NEW index e2c5c01..9305f98 100644 --- a/NEW +++ b/NEW @@ -1,4 +1,3 @@ Undocumented new features: undef keyword - No more segfault: fype -e '1' - Spaces are not needed any more + bitwise ops diff --git a/README b/README index 3f61d8b..3cc7d20 100644 --- a/README +++ b/README @@ -223,6 +223,7 @@ BUILT IN FUNCTIONS (*integer*) *any* >= *any* (*integer*) *any* < *any* (*integer*) *any* > *any* + (*integer*) not *any* Definedness (*integer*) defined *identifier* @@ -233,14 +234,11 @@ BUILT IN FUNCTIONS otherwise 0 is returned. Bitwise - Bitwise operators do not work ATM. The fix is on its way! - - (*any*) *any* << *any* - (*any*) *any* >> *any* - (*any*) *any* and *any* - (*any*) *any* or *any* - (*any*) *any* xor *any* - (*any*) not *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric (*number*) neg *number* diff --git a/TODO b/TODO index f3c9905..781e7d0 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,5 @@ Todo's (not in any specific order) -Scanner: separate between token (e.g. allow 1+2) Arrays Closures Function arguments and return values diff --git a/docs/help.txt b/docs/help.txt index b99b60f..987ab7d 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 9136 +Fype v0.0-devel Build 9199 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index c270197..8491141 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index b47abe9..66c2303 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -349,6 +349,8 @@ not.

(integer) any > any +
(integer) not any +

@@ -370,19 +372,16 @@ not.

Bitwise

-

Bitwise operators do not work ATM. The fix is on its way!

-
(any) any << any - -
(any) any >> any +
(integer) any :< any -
(any) any and any +
(integer) any :> any -
(any) any or any +
(integer) any and any -
(any) any xor any +
(integer) any or any -
(any) not any +
(integer) any xor any

diff --git a/docs/pod/fype.man b/docs/pod/fype.man index 0a04c66..22eec38 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-04-25" "Fype v0.0-devel Build 8860" "The Fype Users Manual Page" +.TH FYPE 1 "2008-08-25" "Fype v0.0-devel Build 9175" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBf\fRor \fBy\fRour \fBp\fRrogram \fBe\fRxecution .PP @@ -365,6 +365,8 @@ Special string behavior: A string will get auto convertet into an \fIinteger\fR. .IX Item "(integer) any < any" .IP "(\fIinteger\fR) \fIany\fR \fB>\fR \fIany\fR" 4 .IX Item "(integer) any > any" +.IP "(\fIinteger\fR) \fBnot\fR \fIany\fR" 4 +.IX Item "(integer) not any" .PD .Sh "Definedness" .IX Subsection "Definedness" @@ -376,20 +378,17 @@ Returns 1 if \fIidentifier\fR has been defined. Returns 0 else. Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 is returned. .Sh "Bitwise" .IX Subsection "Bitwise" -Bitwise operators do not work \s-1ATM\s0. The fix is on its way! -.IP "(\fIany\fR) \fIany\fR \fB<<\fR \fIany\fR" 4 -.IX Item "(any) any << any" +.IP "(\fIinteger\fR) \fIany\fR \fB:<\fR \fIany\fR" 4 +.IX Item "(integer) any :< any" .PD 0 -.IP "(\fIany\fR) \fIany\fR \fB>>\fR \fIany\fR" 4 -.IX Item "(any) any >> any" -.IP "(\fIany\fR) \fIany\fR \fBand\fR \fIany\fR" 4 -.IX Item "(any) any and any" -.IP "(\fIany\fR) \fIany\fR \fBor\fR \fIany\fR" 4 -.IX Item "(any) any or any" -.IP "(\fIany\fR) \fIany\fR \fBxor\fR \fIany\fR" 4 -.IX Item "(any) any xor any" -.IP "(\fIany\fR) \fBnot\fR \fIany\fR" 4 -.IX Item "(any) not any" +.IP "(\fIinteger\fR) \fIany\fR \fB:>\fR \fIany\fR" 4 +.IX Item "(integer) any :> any" +.IP "(\fIinteger\fR) \fIany\fR \fBand\fR \fIany\fR" 4 +.IX Item "(integer) any and any" +.IP "(\fIinteger\fR) \fIany\fR \fBor\fR \fIany\fR" 4 +.IX Item "(integer) any or any" +.IP "(\fIinteger\fR) \fIany\fR \fBxor\fR \fIany\fR" 4 +.IX Item "(integer) any xor any" .PD .Sh "Numeric" .IX Subsection "Numeric" diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 6628322..33e50f5 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -251,6 +251,8 @@ Special string behavior: A string will get auto convertet into an I. =item (I) I B> I +=item (I) B I + =back =head2 Definedness @@ -269,21 +271,17 @@ Tries to undefine/delete the I. Returns 1 if success, otherwise 0 is =head2 Bitwise -Bitwise operators do not work ATM. The fix is on its way! - =over -=item (I) I B<<<> I - -=item (I) I BE> I +=item (I) I B<:<> I -=item (I) I B I +=item (I) I B<:E> I -=item (I) I B I +=item (I) I B I -=item (I) I B I +=item (I) I B I -=item (I) B I +=item (I) I B I =back diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index a14a509..0558ff3 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -293,7 +293,8 @@ Special string behavior: A string will get auto convertet into an \textit{intege \item[{(\textit{integer}) \textit{any} \textbf{$<$=}}] \textbf{\textit{any}} \item[{(\textit{integer}) \textit{any} \textbf{$>$=}}] \textbf{\textit{any}} \item[{(\textit{integer}) \textit{any} \textbf{$<$}}] \textbf{\textit{any}} -\item[{(\textit{integer}) \textit{any} \textbf{$>$}}] \textbf{\textit{any}}\end{description} +\item[{(\textit{integer}) \textit{any} \textbf{$>$}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textbf{not} \textit{any}}] \mbox{}\end{description} \subsection*{Definedness\label{Definedness}\index{Definedness}} \begin{description} @@ -308,18 +309,13 @@ Tries to undefine/delete the \textit{identifier}. Returns 1 if success, otherwis \end{description} \subsection*{Bitwise\label{Bitwise}\index{Bitwise}} - - -Bitwise operators do not work ATM. The fix is on its way! - \begin{description} -\item[{(\textit{any}) \textit{any} \textbf{$<$$<$}}] \textbf{\textit{any}} -\item[{(\textit{any}) \textit{any} \textbf{$>$$>$}}] \textbf{\textit{any}} -\item[{(\textit{any}) \textit{any} \textbf{and}}] \textbf{\textit{any}} -\item[{(\textit{any}) \textit{any} \textbf{or}}] \textbf{\textit{any}} -\item[{(\textit{any}) \textit{any} \textbf{xor}}] \textbf{\textit{any}} -\item[{(\textit{any}) \textbf{not} \textit{any}}] \mbox{}\end{description} +\item[{(\textit{integer}) \textit{any} \textbf{:$<$}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{:$>$}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{and}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{or}}] \textbf{\textit{any}} +\item[{(\textit{integer}) \textit{any} \textbf{xor}}] \textbf{\textit{any}}\end{description} \subsection*{Numeric\label{Numeric}\index{Numeric}} \begin{description} diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 3f61d8b..3cc7d20 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -223,6 +223,7 @@ BUILT IN FUNCTIONS (*integer*) *any* >= *any* (*integer*) *any* < *any* (*integer*) *any* > *any* + (*integer*) not *any* Definedness (*integer*) defined *identifier* @@ -233,14 +234,11 @@ BUILT IN FUNCTIONS otherwise 0 is returned. Bitwise - Bitwise operators do not work ATM. The fix is on its way! - - (*any*) *any* << *any* - (*any*) *any* >> *any* - (*any*) *any* and *any* - (*any*) *any* or *any* - (*any*) *any* xor *any* - (*any*) not *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric (*number*) neg *number* diff --git a/docs/stats.txt b/docs/stats.txt index 50cfed4..d6ec4b2 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7252 -===> Num of Fype source examples : 13 -===> Num of Fype source lines : 320 +===> Num of C source lines : 7448 +===> Num of Fype source examples : 14 +===> Num of Fype source lines : 353 diff --git a/docs/version.txt b/docs/version.txt index cb62366..bea7532 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 9136 +Fype v0.0-devel Build 9199 diff --git a/examples/broken/bitwise.fy b/examples/broken/bitwise.fy index b124590..03fda6c 100644 --- a/examples/broken/bitwise.fy +++ b/examples/broken/bitwise.fy @@ -14,18 +14,19 @@ assert 1 == (say 0 or 1); assert 0 == (put 1 xor 1); assert 1 == (say 1 xor 0); -# Prints "-1" (see "not" operator of NASM why so) -assert (neg 1) == (say not 0); - # Prints "82\n" -assert 8 == (put 2 << 2); -assert 2 == (say 8 >> 2); +assert 8 == (put 2 :< 2); +assert 2 == (say 8 :> 2); # A bit more complex, prints "9\n" -assert 9 == (say 1 << 5 >> 5 or 2 and 5 xor 8); +assert 9 == (say 1 :< 5 :> 5 or 2 and 5 xor 8); # Same result, but with parenthesis: -assert 9 == (say ((((1 << 5) >> 5) or 2) and 5) xor 8); +assert 9 == (say ((((1 :< 5) :> 5) or 2) and 5) xor 8); # Different parenthesis, different result: "1\n" -assert 1 == (say 1 << 5 >> 5 or 2 and (5 xor 8)); +assert 1 == (say 1 :< 5 :> 5 or 2 and (5 xor 8)); + +# Prints "-1" +assert (neg 1) == (say neg not 0); + diff --git a/src/build.h b/src/build.h index 8be647b..5da306c 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9136 +#define BUILDNR 9200 #define OS_FREEBSD #endif diff --git a/src/core/function.c b/src/core/function.c index 39971a1..fda40b8 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -111,6 +111,18 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, break; } break; + case TT_DDOT: + switch (tt_op2) { + case TT_LT: + tt_op = TT_LSHIFT; + break; + case TT_GT: + tt_op = TT_RSHIFT; + break; + default: + break; + } + break; default: break; } @@ -371,6 +383,117 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, NO_DEFAULT; } break; + case TT_AND: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) & + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + (int) token_get_dval(p_token_next) & + (int) token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) & + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_OR: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) | + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + (int) token_get_dval(p_token_next) | + (int) token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) | + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_XOR: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) ^ + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + (int) token_get_dval(p_token_next) ^ + (int) token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) ^ + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_LSHIFT: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) << + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + (int) token_get_dval(p_token_next) << + (int) token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) << + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + case TT_RSHIFT: + switch (tt_highest) { + case TT_INTEGER: + token_set_ival(p_token_store, + (int) token_get_ival(p_token_next) >> + token_get_ival(p_token_store)); + break; + case TT_DOUBLE: + token_set_ival(p_token_store, + (int) token_get_dval(p_token_next) >> + (int) token_get_dval(p_token_store)); + token_set_tt(p_token_store, TT_INTEGER); + break; + case TT_STRING: + token_set_ival(p_token_store, + atoi(token_get_val(p_token_next)) >> + atoi(token_get_val(p_token_store))); + token_set_tt(p_token_store, TT_INTEGER); + break; + NO_DEFAULT; + } + break; + default: _FUNCTION_ERROR("No such function/operator", p_token_op); } @@ -449,6 +572,9 @@ function_is_buildin(Token *p_token_ident) { if (strcmp("yes", token_get_val(p_token_ident)) == 0) return (true); + if (strcmp("not", token_get_val(p_token_ident)) == 0) + return (true); + return (false); } @@ -665,6 +791,27 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, } stack_push(p_stack_args, p_token); + + } else if (strcmp("not", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + stack_push(p_stack_args, p_token); + + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, !token_get_ival(p_token)); + break; + case TT_DOUBLE: + token_set_dval(p_token, !token_get_dval(p_token)); + break; + case TT_STRING: + token_set_ival(p_token, !atoi(token_get_val(p_token))); + token_set_tt(p_token, TT_INTEGER); + break; + NO_DEFAULT; + } } } diff --git a/src/core/interpret.c b/src/core/interpret.c index 25f4a0d..5aa07ef 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -174,7 +174,10 @@ int _var_decl(Interpret *p_interpret) { _CHECK TRACK - if (p_interpret->tt == TT_MY) { + switch (p_interpret->tt) { + //case TT_ARR: //TODO cleanup TT_ARR + case TT_MY: + { if (_NEXT_TT != TT_IDENT) _INTERPRET_ERROR("'my' expects identifier", p_interpret->p_token); @@ -196,6 +199,9 @@ _var_decl(Interpret *p_interpret) { _INTERPRET_ERROR("Expected ';' after", p_token_ident); } } + default: + break; + } return (0); } @@ -220,7 +226,8 @@ _var_assign(Interpret *p_interpret) { p_interpret->p_stack = stack_new(); if (_expression_(p_interpret)) { - function_process_buildin(p_interpret, p_token, p_interpret->p_stack); + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); stack_merge(p_stack, p_interpret->p_stack); stack_delete(p_interpret->p_stack); @@ -605,9 +612,6 @@ _compare(Interpret *p_interpret) { _Bool b_flag = true; do { - /* - ! = < > !! != !< !> =! == =< => >! >= >< >> - */ switch (p_interpret->tt) { case TT_NOT: case TT_ASSIGN: @@ -659,17 +663,30 @@ _sum(Interpret *p_interpret) { _Bool b_flag = true; do { + Token *p_token_op2 = NULL, *p_token_tmp = NULL; + switch (p_interpret->tt) { + case TT_DDOT: + p_token_tmp = p_interpret->p_token; + _NEXT case TT_ADD: case TT_SUB: + case TT_AND: + case TT_OR: + case TT_XOR: { Token *p_token_op = p_interpret->p_token; _NEXT + if (p_token_tmp != NULL) { + p_token_op2 = p_token_op; + p_token_op = p_token_tmp;; + } + if (!_product(p_interpret)) _INTERPRET_ERROR("Expected product", p_token_op); - function_process(p_interpret, p_token_op, NULL, + function_process(p_interpret, p_token_op, p_token_op2, p_interpret->p_stack, 2); } @@ -735,9 +752,8 @@ _product2(Interpret *p_interpret) { _Bool b_flag = true; do { - switch (p_interpret->tt) { - case TT_ASSIGN: - { + if (p_interpret->tt == TT_ASSIGN + && IS_NOT_OPERATOR(_NEXT_TT)) { Token *p_token = p_interpret->p_token; Token *p_token_temp = p_interpret->p_token_prev; _NEXT @@ -750,15 +766,10 @@ _product2(Interpret *p_interpret) { p_interpret->p_stack, 2); p_interpret->p_token_temp = NULL; - } - break; /* case */ - - default: + } else { b_flag = false; break; - - } /* switch */ - + } /* if */ } while (b_flag); return (1); @@ -901,6 +912,17 @@ _term(Interpret *p_interpret) { } break; + case TT_PARANT_AL: + { + Token *p_token = p_interpret->p_token; + _NEXT + + Token *p_token_arr = token_new_array(ARRAY_SIZE); + stack_push(p_interpret->p_stack, p_token_arr); + _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); + } + break; + case TT_PARANT_L: { Token *p_token = p_interpret->p_token; diff --git a/src/core/scanner.c b/src/core/scanner.c index 2e599eb..49026c2 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -37,7 +37,7 @@ #include #include -const char _TOKENENDS[] = "})+-*/={(<>;:,.!"; +const char _TOKENENDS[] = "}])+-*/={([<>;:,.!"; #define _ADD_SEMICOLON_INDEX 2 int _CODESTR_INDEX = 0; @@ -70,6 +70,7 @@ scanner_new(List *p_list_token, Tupel *p_tupel_argv) { p_scanner->i_current_pos_nr = 0; p_scanner->i_num_tokenends = strlen(_TOKENENDS); + p_scanner->tt_last = TT_NONE; return p_scanner; } @@ -208,7 +209,7 @@ scanner_run(Fype *p_fype) { } { int i_num_nl = 0; - _Bool flag = false; + //_Bool flag = false; do { c = _scanner_get_next_char(p_scanner); if ( c == '\n' ) { @@ -226,7 +227,7 @@ scanner_run(Fype *p_fype) { c_token[i_token_len-1] = '"'; } else { - flag = true; + //flag = true; break; } @@ -244,8 +245,8 @@ scanner_run(Fype *p_fype) { if (i_num_nl) p_scanner->i_current_line_nr += i_num_nl; - if (flag) - _add_semicolon_to_list(p_scanner); + //if (flag) + // _add_semicolon_to_list(p_scanner); } break; @@ -267,17 +268,19 @@ scanner_run(Fype *p_fype) { default: if (i_token_len) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + if (tt_cur == TT_PARANT_CR && p_scanner->tt_last == TT_STRING) + _add_semicolon_to_list(p_scanner); + char d = c_token[i_token_len-1]; if ((!isalpha(d) && !isdigit(d) /*&& d != '-'*/) && (isalpha(c) || isdigit(c))) { - TokenType tt_cur = scanner_get_tt_cur(c_token); scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); } else { for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { if (_TOKENENDS[i] == c) { - TokenType tt_cur = scanner_get_tt_cur(c_token); scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); if (i < _ADD_SEMICOLON_INDEX) _add_semicolon_to_list(p_scanner); @@ -342,6 +345,8 @@ scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, *cc_token = malloc(sizeof(char)); (*cc_token)[0] = 0; *p_token_len = 0; + + p_scanner->tt_last = tt_cur; } TokenType diff --git a/src/core/scanner.h b/src/core/scanner.h index f5f91ad..4626595 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -55,6 +55,7 @@ typedef struct { char *c_codestring; FILE *fp; List *p_list_token; + TokenType tt_last; } Scanner; Scanner *scanner_new(List *p_list_token, Tupel *p_tupel_argv); diff --git a/src/core/token.c b/src/core/token.c index 437ed6c..1a2aec9 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -57,11 +57,14 @@ get_tt(char *c_token) { CHECK("proc") TT_PROC; CHECK("func") TT_FUNC; CHECK("my") TT_MY; - CHECK("not") TT_NOT; + CHECK("arr") TT_ARR; + CHECK("!") TT_NOT; CHECK("!=") TT_NEQ; CHECK("=~") TT_RE; CHECK("(") TT_PARANT_L; CHECK(")") TT_PARANT_R; + CHECK("[") TT_PARANT_AL; + CHECK("]") TT_PARANT_AR; CHECK("*") TT_MULT; CHECK("+") TT_ADD; CHECK("++") TT_INCR; @@ -102,6 +105,7 @@ tt_get_name(TokenType tt_cur) { CASE(TT_IDENT, "TT_IDENT") CASE(TT_DOUBLE,"TT_DOUBLE") CASE(TT_STRING,"TT_STRING") + CASE(TT_ARRAY,"TT_ARRAY") CASE(TT_INTEGER,"TT_INTEGER") CASE(TT_BOOL,"TT_BOOL") CASE(END_ASSIGNABLES, "END_ASSIGNABLES") @@ -119,6 +123,7 @@ tt_get_name(TokenType tt_cur) { CASE(TT_PROC,"TT_PROC") CASE(TT_FUNC,"TT_FUNC") CASE(TT_MY,"TT_MY") + CASE(TT_ARR,"TT_ARR") CASE(TT_WHILE,"TT_WHILE") CASE(TT_UNTIL,"TT_UNTIL") CASE(TT_NEXT,"TT_NEXT") @@ -131,6 +136,8 @@ tt_get_name(TokenType tt_cur) { CASE(START_PARANTS, "START_PARANTS") CASE(TT_PARANT_CL,"TT_PARANT_CL") CASE(TT_PARANT_CR,"TT_PARANT_CR") + CASE(TT_PARANT_AL,"TT_PARANT_AL") + CASE(TT_PARANT_AR,"TT_PARANT_AR") CASE(TT_PARANT_L,"TT_PARANT_L") CASE(TT_PARANT_R,"TT_PARANT_R") CASE(END_PARANTS, "END_PARANTS") @@ -186,6 +193,7 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi p_token->i_line_nr = i_line_nr; p_token->i_pos_nr = i_pos_nr; p_token->c_filename = c_filename; + p_token->p_array = NULL; switch (tt_cur) { case TT_INTEGER: @@ -196,6 +204,11 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi p_token->d_val = atof(c_val); break; } + case TT_ARRAY: + { + p_token->p_array = array_new(); + break; + } NO_DEFAULT; } @@ -231,6 +244,15 @@ token_new_string(char *c_val) { return (p_token); } +Token* +token_new_array(int i_size) { + Token *p_token = token_new_dummy(); + token_set_tt(p_token, TT_ARRAY); + array_resize(p_token->p_array, i_size); + + return (p_token); +} + Token* token_new_(char *c_val, TokenType tt_cur, char *c_filename) { @@ -322,6 +344,9 @@ token_delete(Token *p_token) { if (p_token->c_val) free(p_token->c_val); + if (p_token->p_array) + array_delete(p_token->p_array); + free(p_token); } #ifdef DEBUG_TOKEN_REFCOUNT diff --git a/src/core/token.h b/src/core/token.h index b73398b..caf4854 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -36,6 +36,7 @@ #define TOKEN_H #include "../defines.h" +#include "../data/array.h" #define IS_TERMINAL(t) (START_TERMINALS < t && t < END_TERMINALS) #define IS_NOT_TERMINAL(t) !IS_TERMINAL(t) @@ -86,6 +87,7 @@ typedef enum { TT_DOUBLE, END_NUMERICAL, TT_STRING, + TT_ARRAY, END_ASSIGNABLES, TT_IDENT, END_TYPES, @@ -101,6 +103,7 @@ typedef enum { TT_PROC, TT_FUNC, TT_MY, + TT_ARR, TT_WHILE, TT_UNTIL, TT_NEXT, @@ -112,6 +115,8 @@ typedef enum { START_PARANTS, TT_PARANT_CL, TT_PARANT_CR, + TT_PARANT_AL, + TT_PARANT_AR, TT_PARANT_L, TT_PARANT_R, END_PARANTS, @@ -160,12 +165,14 @@ typedef struct { char *c_filename; unsigned int u_token_id; int i_ref_count; + Array *p_array; } Token; Token* token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename); Token* token_new_integer(int i_val); Token* token_new_couble(double d_val); Token* token_new_string(char *c_val); +Token* token_new_array(int i_size); Token* token_new_copy(Token *p_token); Token* token_new_(char *c_val, TokenType tt_cur, char *c_filename); Token* token_new_dummy(); diff --git a/src/defines.h b/src/defines.h index 17e4933..a7eabd7 100644 --- a/src/defines.h +++ b/src/defines.h @@ -45,6 +45,7 @@ #define COPYRIGHT "Copyright by Paul C. Buetow (2005 - 2008) " #define FYPE #define GRAMMAR_MAP_SIZES 128 +#define ARRAY_SIZE 16 #define HASH_MAXOCC 5 #define HASH_MKEYLEN 32 #define HASH_SCALE 10 diff --git a/tmp/test.fy b/tmp/test.fy index bef7188..afe2cec 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,5 +1,3 @@ -my foo = 0; -say foo; -say 2 * 4.5 + 1 + gc; +my foo = [1, 2.2, "3"]; diff --git a/tmp/test.out b/tmp/test.out index 080145f..1cd7e60 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,25 +1,17 @@ -my foo = 0; +arr foo = [1, 2.2, "3"]; say foo; - -say 2 * 4.5 + 1 + gc; -Token (id=00000, line=00001, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) -Token (id=00001, line=00001, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (id=00002, line=00001, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) -Token (id=00003, line=00001, pos=0011, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=1) -Token (id=00004, line=00001, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (id=00005, line=00003, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (id=00006, line=00003, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (id=00007, line=00003, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (id=00008, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (id=00009, line=00005, pos=0006, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1) -Token (id=00010, line=00005, pos=0008, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1) -Token (id=00013, line=00005, pos=0012, type=TT_DOUBLE, val=4.5, ival=5, dval=4.500000, refs=1) -Token (id=00014, line=00005, pos=0014, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) -Token (id=00015, line=00005, pos=0016, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (id=00016, line=00005, pos=0018, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) -Token (id=00017, line=00005, pos=0021, type=TT_IDENT, val=gc, ival=0, dval=0.000000, refs=1) -Token (id=00018, line=00005, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -0 -ICOUNT 4 -9 +Token (id=00000, line=00002, pos=0004, type=TT_ARR, val=arr, ival=0, dval=0.000000, refs=1) +Token (id=00001, line=00002, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00002, line=00002, pos=0010, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00003, line=00002, pos=0012, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1) +Token (id=00004, line=00002, pos=0013, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (id=00005, line=00002, pos=0014, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1) +Token (id=00008, line=00002, pos=0018, type=TT_DOUBLE, val=2.2, ival=2, dval=2.200000, refs=1) +Token (id=00009, line=00002, pos=0019, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1) +Token (id=00010, line=00002, pos=0020, type=TT_STRING, val=3, ival=0, dval=0.000000, refs=1) +Token (id=00011, line=00002, pos=0022, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1) +Token (id=00012, line=00002, pos=0023, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00013, line=00003, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00014, line=00003, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00015, line=00003, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -- cgit v1.2.3 From 3206d602859f5572b958fcc36ba56c9596ecb292 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 25 Aug 2008 18:49:42 +0000 Subject: butwis --- examples/bitwise.fy | 32 ++++++++++++++++++++++++++++++++ examples/broken/bitwise.fy | 32 -------------------------------- 2 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 examples/bitwise.fy delete mode 100644 examples/broken/bitwise.fy diff --git a/examples/bitwise.fy b/examples/bitwise.fy new file mode 100644 index 0000000..03fda6c --- /dev/null +++ b/examples/bitwise.fy @@ -0,0 +1,32 @@ +#* + * Examples of how to use bitwise operators + *# + +# Prints "01\n" +assert 0 == (put 1 and 0); +assert 1 == (say 1 and 1); + +# Prints "01\n" +assert 0 == (put 0 or 0); +assert 1 == (say 0 or 1); + +# Prints "01\n" +assert 0 == (put 1 xor 1); +assert 1 == (say 1 xor 0); + +# Prints "82\n" +assert 8 == (put 2 :< 2); +assert 2 == (say 8 :> 2); + +# A bit more complex, prints "9\n" +assert 9 == (say 1 :< 5 :> 5 or 2 and 5 xor 8); + +# Same result, but with parenthesis: +assert 9 == (say ((((1 :< 5) :> 5) or 2) and 5) xor 8); + +# Different parenthesis, different result: "1\n" +assert 1 == (say 1 :< 5 :> 5 or 2 and (5 xor 8)); + +# Prints "-1" +assert (neg 1) == (say neg not 0); + diff --git a/examples/broken/bitwise.fy b/examples/broken/bitwise.fy deleted file mode 100644 index 03fda6c..0000000 --- a/examples/broken/bitwise.fy +++ /dev/null @@ -1,32 +0,0 @@ -#* - * Examples of how to use bitwise operators - *# - -# Prints "01\n" -assert 0 == (put 1 and 0); -assert 1 == (say 1 and 1); - -# Prints "01\n" -assert 0 == (put 0 or 0); -assert 1 == (say 0 or 1); - -# Prints "01\n" -assert 0 == (put 1 xor 1); -assert 1 == (say 1 xor 0); - -# Prints "82\n" -assert 8 == (put 2 :< 2); -assert 2 == (say 8 :> 2); - -# A bit more complex, prints "9\n" -assert 9 == (say 1 :< 5 :> 5 or 2 and 5 xor 8); - -# Same result, but with parenthesis: -assert 9 == (say ((((1 :< 5) :> 5) or 2) and 5) xor 8); - -# Different parenthesis, different result: "1\n" -assert 1 == (say 1 :< 5 :> 5 or 2 and (5 xor 8)); - -# Prints "-1" -assert (neg 1) == (say neg not 0); - -- cgit v1.2.3 From a62098eabb8d2fab97e6eed035d7a0661b01ea7b Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 26 Aug 2008 08:17:55 +0000 Subject: added v0.1 branch --- INSTALL | 11 +++++++++++ NEW | 3 --- docs/help.txt | 2 +- docs/stats.txt | 6 +++--- docs/version.txt | 2 +- src/build.h | 2 +- src/defines.h | 4 ++-- tmp/test.out | 18 ++---------------- 8 files changed, 21 insertions(+), 27 deletions(-) create mode 100644 INSTALL diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..669dabf --- /dev/null +++ b/INSTALL @@ -0,0 +1,11 @@ +How to install fype: + + make + sudo make install + make clean + +How to read the docu: + + man fype + +Examples can be found in the ./examples directory. diff --git a/NEW b/NEW index 9305f98..e69de29 100644 --- a/NEW +++ b/NEW @@ -1,3 +0,0 @@ -Undocumented new features: - undef keyword - bitwise ops diff --git a/docs/help.txt b/docs/help.txt index 987ab7d..e676e64 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 9199 +Fype v0.0-devel Build 9201 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index d6ec4b2..b49fcc8 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7448 -===> Num of Fype source examples : 14 -===> Num of Fype source lines : 353 +===> Num of C source lines : 7460 +===> Num of Fype source examples : 13 +===> Num of Fype source lines : 321 diff --git a/docs/version.txt b/docs/version.txt index bea7532..fb83624 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 9199 +Fype v0.0-devel Build 9201 diff --git a/src/build.h b/src/build.h index 5da306c..3955c32 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9200 +#define BUILDNR 9203 #define OS_FREEBSD #endif diff --git a/src/defines.h b/src/defines.h index a7eabd7..bfed1ae 100644 --- a/src/defines.h +++ b/src/defines.h @@ -53,8 +53,8 @@ #define ASSEMBLER "yasm" #define LINKER "cc" #define SCANNER_BUFSIZE 512 -#define URL "" -#define VERSION "v0.0-devel Build" +#define URL "" +#define VERSION "v0.3-devel Build" diff --git a/tmp/test.out b/tmp/test.out index 1cd7e60..afe2cec 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,17 +1,3 @@ -arr foo = [1, 2.2, "3"]; -say foo; -Token (id=00000, line=00002, pos=0004, type=TT_ARR, val=arr, ival=0, dval=0.000000, refs=1) -Token (id=00001, line=00002, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (id=00002, line=00002, pos=0010, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) -Token (id=00003, line=00002, pos=0012, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1) -Token (id=00004, line=00002, pos=0013, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (id=00005, line=00002, pos=0014, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1) -Token (id=00008, line=00002, pos=0018, type=TT_DOUBLE, val=2.2, ival=2, dval=2.200000, refs=1) -Token (id=00009, line=00002, pos=0019, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1) -Token (id=00010, line=00002, pos=0020, type=TT_STRING, val=3, ival=0, dval=0.000000, refs=1) -Token (id=00011, line=00002, pos=0022, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1) -Token (id=00012, line=00002, pos=0023, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (id=00013, line=00003, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (id=00014, line=00003, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (id=00015, line=00003, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) + +my foo = [1, 2.2, "3"]; -- cgit v1.2.3 From 71b276d458f9fd655865a4ba54967ca65ef511d8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 26 Aug 2008 08:55:46 +0000 Subject: oh no --- src/defines.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/defines.h b/src/defines.h index bfed1ae..569d20a 100644 --- a/src/defines.h +++ b/src/defines.h @@ -54,7 +54,7 @@ #define LINKER "cc" #define SCANNER_BUFSIZE 512 #define URL "" -#define VERSION "v0.3-devel Build" +#define VERSION "v0.1-devel Build" -- cgit v1.2.3 From c738c27ae49964efcad859d522b1ac0badf4a16e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 5 Sep 2008 10:03:41 +0000 Subject: Yack -> Yak --- README | 2 +- docs/pod/fype.1.gz | Bin 6050 -> 6051 bytes docs/pod/fype.html | 2 +- docs/pod/fype.man | 4 ++-- docs/pod/fype.pod | 2 +- docs/pod/fype.tex | 2 +- docs/pod/fype.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README b/README index 3cc7d20..be020d9 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ NAME Fype is for your program execution - Fype is free yack programed for ELF + Fype is free yak programed for ELF It's not a hype - it's Fype! diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index 8491141..bf89a36 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 66c2303..a489e26 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -70,7 +70,7 @@

NAME

Fype is for your program execution

-

Fype is free yack programed for ELF

+

Fype is free yak programed for ELF

It's not a hype - it's Fype!

diff --git a/docs/pod/fype.man b/docs/pod/fype.man index 22eec38..789f1b2 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,11 +129,11 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-08-25" "Fype v0.0-devel Build 9175" "The Fype Users Manual Page" +.TH FYPE 1 "2008-09-05" "Fype v0.0-devel Build 9201" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBf\fRor \fBy\fRour \fBp\fRrogram \fBe\fRxecution .PP -\&\fBFype\fR is \fBf\fRree \fBy\fRack \fBp\fRrogramed for \fBE\fRLF +\&\fBFype\fR is \fBf\fRree \fBy\fRak \fBp\fRrogramed for \fBE\fRLF .PP It's not a hype \- it's Fype! .SH "SYNOPSES" diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 33e50f5..181f39f 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -2,7 +2,7 @@ B is Bor Bour B

rogram Bxecution -B is Bree Back B

rogramed for BLF +B is Bree Bak B

rogramed for BLF It's not a hype - it's Fype! diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index 0558ff3..c6804f8 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -5,7 +5,7 @@ -\textbf{Fype} is \textbf{f}ree \textbf{y}ack \textbf{p}rogramed for \textbf{E}LF +\textbf{Fype} is \textbf{f}ree \textbf{y}ak \textbf{p}rogramed for \textbf{E}LF diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 3cc7d20..be020d9 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -1,7 +1,7 @@ NAME Fype is for your program execution - Fype is free yack programed for ELF + Fype is free yak programed for ELF It's not a hype - it's Fype! -- cgit v1.2.3 From cd6b13ef50dee85b9c89c6ee47e14e8b04302715 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Sep 2008 06:07:13 +0000 Subject: docu ypdate --- README | 13 +++++++++++-- docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6051 -> 6093 bytes docs/pod/fype.html | 13 ++++++++++--- docs/pod/fype.man | 18 ++++++++++++++---- docs/pod/fype.pod | 14 +++++++++++--- docs/pod/fype.tex | 17 ++++++++++++++--- docs/pod/fype.txt | 13 +++++++++++-- docs/version.txt | 2 +- src/build.h | 2 +- 10 files changed, 74 insertions(+), 20 deletions(-) diff --git a/README b/README index be020d9..92e62d6 100644 --- a/README +++ b/README @@ -41,7 +41,8 @@ PARSING / CODE GENERATION REQUIREMENTS Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows - support is not planned. But may work using Cygwin or SFU. + support is not planned. But may work using Cygwin or SFU. Linux users + have to install pmake before compiling Fype! You will also need: @@ -49,7 +50,15 @@ REQUIREMENTS NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) GETTING STARTED - Extract, compile and install Fype: + On Linux: Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + pmake + sudo pmake install + pmake clean + + On FreeBSD: Extract, compile and install Fype: tar xvjf fype.tar.bz2 cd fype diff --git a/docs/help.txt b/docs/help.txt index e676e64..d7163e6 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.0-devel Build 9201 +Fype v0.1-devel Build 9208 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index bf89a36..997c2f5 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index a489e26..65bb572 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -71,7 +71,7 @@

NAME

Fype is for your program execution

Fype is free yak programed for ELF

-

It's not a hype - it's Fype!

+

It's not a hype - it's Fype!


@@ -101,7 +101,7 @@ TODO file of the source distribution of Fype!


REQUIREMENTS

-

Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU.

+

Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype!

You will also need:

         GNU GCC C Compiler (gcc.gnu.org)
@@ -110,7 +110,14 @@ TODO file of the source distribution of Fype!


GETTING STARTED

-

Extract, compile and install Fype:

+

On Linux: Extract, compile and install Fype:

+
+        tar xvjf fype.tar.bz2
+        cd fype
+        pmake
+        sudo pmake install 
+        pmake clean
+

On FreeBSD: Extract, compile and install Fype:

         tar xvjf fype.tar.bz2
         cd fype
diff --git a/docs/pod/fype.man b/docs/pod/fype.man
index 789f1b2..de7e5e4 100644
--- a/docs/pod/fype.man
+++ b/docs/pod/fype.man
@@ -129,13 +129,13 @@
 .\" ========================================================================
 .\"
 .IX Title "FYPE 1"
-.TH FYPE 1 "2008-09-05" "Fype v0.0-devel Build 9201" "The Fype Users Manual Page"
+.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9207" "The Fype Users Manual Page"
 .SH "NAME"
 \&\fBFype\fR is \fBf\fRor \fBy\fRour \fBp\fRrogram \fBe\fRxecution
 .PP
 \&\fBFype\fR is \fBf\fRree \fBy\fRak \fBp\fRrogramed for \fBE\fRLF
 .PP
-It's not a hype \- it's Fype!
+It's not a hype \- it's \fBFype\fR!
 .SH "SYNOPSES"
 .IX Header "SYNOPSES"
 .IP "\fBfype\fR [\-[hsvTV]] file.fy" 4
@@ -162,7 +162,7 @@ Fancy stuff like \s-1OOP\s0 or unicode or threading is not yet planed. But fancy
 The Fype syntax is very simple and is using a maximum look ahead of 1 and a very easy top down parsing. Fype is parsing and interpreting its code simultaneous. This means, that syntax errors are only detected during program runtime. 
 .SH "REQUIREMENTS"
 .IX Header "REQUIREMENTS"
-Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or \s-1SFU\s0.
+Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or \s-1SFU\s0. Linux users have to install pmake before compiling Fype!
 .PP
 You will also need:
 .PP
@@ -172,7 +172,17 @@ You will also need:
 .Ve
 .SH "GETTING STARTED"
 .IX Header "GETTING STARTED"
-Extract, compile and install Fype:
+On Linux: Extract, compile and install Fype:
+.PP
+.Vb 5
+\&        tar xvjf fype.tar.bz2
+\&        cd fype
+\&        pmake
+\&        sudo pmake install 
+\&        pmake clean
+.Ve
+.PP
+On FreeBSD: Extract, compile and install Fype:
 .PP
 .Vb 5
 \&        tar xvjf fype.tar.bz2
diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod
index 181f39f..c795c89 100644
--- a/docs/pod/fype.pod
+++ b/docs/pod/fype.pod
@@ -4,7 +4,7 @@ B is Bor Bour B

rogram Bxecution B is Bree Bak B

rogramed for BLF -It's not a hype - it's Fype! +It's not a hype - it's B! =head1 SYNOPSES @@ -35,7 +35,7 @@ The Fype syntax is very simple and is using a maximum look ahead of 1 and a very =head1 REQUIREMENTS -Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. +Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype! You will also need: @@ -44,7 +44,15 @@ You will also need: =head1 GETTING STARTED -Extract, compile and install Fype: +On Linux: Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + pmake + sudo pmake install + pmake clean + +On FreeBSD: Extract, compile and install Fype: tar xvjf fype.tar.bz2 cd fype diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index c6804f8..f344138 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -9,7 +9,7 @@ -It's not a hype - it's Fype! +It's not a hype - it's \textbf{Fype}! \section{SYNOPSES\label{SYNOPSES}\index{SYNOPSES}} \begin{description} @@ -46,7 +46,7 @@ The Fype syntax is very simple and is using a maximum look ahead of 1 and a very \section{REQUIREMENTS\label{REQUIREMENTS}\index{REQUIREMENTS}} -Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. +Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype! @@ -59,7 +59,18 @@ You will also need: \section{GETTING STARTED\label{GETTING_STARTED}\index{GETTING STARTED}} -Extract, compile and install Fype: +On Linux: Extract, compile and install Fype: + +\begin{verbatim} + tar xvjf fype.tar.bz2 + cd fype + pmake + sudo pmake install + pmake clean +\end{verbatim} + + +On FreeBSD: Extract, compile and install Fype: \begin{verbatim} tar xvjf fype.tar.bz2 diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index be020d9..92e62d6 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -41,7 +41,8 @@ PARSING / CODE GENERATION REQUIREMENTS Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows - support is not planned. But may work using Cygwin or SFU. + support is not planned. But may work using Cygwin or SFU. Linux users + have to install pmake before compiling Fype! You will also need: @@ -49,7 +50,15 @@ REQUIREMENTS NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) GETTING STARTED - Extract, compile and install Fype: + On Linux: Extract, compile and install Fype: + + tar xvjf fype.tar.bz2 + cd fype + pmake + sudo pmake install + pmake clean + + On FreeBSD: Extract, compile and install Fype: tar xvjf fype.tar.bz2 cd fype diff --git a/docs/version.txt b/docs/version.txt index fb83624..8493ac9 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.0-devel Build 9201 +Fype v0.1-devel Build 9208 diff --git a/src/build.h b/src/build.h index 3955c32..0d3980f 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9203 +#define BUILDNR 9208 #define OS_FREEBSD #endif -- cgit v1.2.3 From 7620bb7fd1e8af8359dfead5485630503f0e7195 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Sep 2008 06:08:05 +0000 Subject: highlight --- README | 4 ++-- docs/pod/fype.1.gz | Bin 6093 -> 6093 bytes docs/pod/fype.html | 4 ++-- docs/pod/fype.man | 6 +++--- docs/pod/fype.pod | 4 ++-- docs/pod/fype.tex | 4 ++-- docs/pod/fype.txt | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README b/README index 92e62d6..4276b8c 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ NAME - Fype is for your program execution + Fype is For Your Program Execution - Fype is free yak programed for ELF + Fype is Free Yak Programed for ELF It's not a hype - it's Fype! diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index 997c2f5..f26d28f 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 65bb572..7519767 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -69,8 +69,8 @@

NAME

-

Fype is for your program execution

-

Fype is free yak programed for ELF

+

Fype is For Your Program Execution

+

Fype is Free Yak Programed for ELF

It's not a hype - it's Fype!

diff --git a/docs/pod/fype.man b/docs/pod/fype.man index de7e5e4..d1f6937 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,11 +129,11 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9207" "The Fype Users Manual Page" +.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9208" "The Fype Users Manual Page" .SH "NAME" -\&\fBFype\fR is \fBf\fRor \fBy\fRour \fBp\fRrogram \fBe\fRxecution +\&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution .PP -\&\fBFype\fR is \fBf\fRree \fBy\fRak \fBp\fRrogramed for \fBE\fRLF +\&\fBFype\fR is \fBF\fRree \fBY\fRak \fBP\fRrogramed for \fBE\fRLF .PP It's not a hype \- it's \fBFype\fR! .SH "SYNOPSES" diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index c795c89..c242dfd 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -1,8 +1,8 @@ =head1 NAME -B is Bor Bour B

rogram Bxecution +B is Bor Bour B

rogram Bxecution -B is Bree Bak B

rogramed for BLF +B is Bree Bak B

rogramed for BLF It's not a hype - it's B! diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index f344138..67c92b9 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -1,11 +1,11 @@ \section{NAME\label{NAME}\index{NAME}} -\textbf{Fype} is \textbf{f}or \textbf{y}our \textbf{p}rogram \textbf{e}xecution +\textbf{Fype} is \textbf{F}or \textbf{Y}our \textbf{P}rogram \textbf{E}xecution -\textbf{Fype} is \textbf{f}ree \textbf{y}ak \textbf{p}rogramed for \textbf{E}LF +\textbf{Fype} is \textbf{F}ree \textbf{Y}ak \textbf{P}rogramed for \textbf{E}LF diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 92e62d6..4276b8c 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -1,7 +1,7 @@ NAME - Fype is for your program execution + Fype is For Your Program Execution - Fype is free yak programed for ELF + Fype is Free Yak Programed for ELF It's not a hype - it's Fype! -- cgit v1.2.3 From 4acc4ebf5f8aec6d259bb4ed738326c2449ea8d5 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Sep 2008 06:17:56 +0000 Subject: comments and documentings. --- Makefile | 28 +--------------------------- docs/pod/Makefile | 1 + docs/pod/fype.pod | 6 ++++-- src/build.h | 2 +- 4 files changed, 7 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 375de0f..5624b2e 100644 --- a/Makefile +++ b/Makefile @@ -1,30 +1,4 @@ -# File: ./Makefile -# -# Copyright (c) 2005 2006 2007, Paul Buetow (http://www.pblabs.net) -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modi- -# fication, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of P. B. Labs nor the names of its contributors may -# be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# THIS MAKEFILE ONLY WORKS WITH (NET)BSD MAKE AKA PMAKE! BIN=fype SRCS!=find ./src -name '*.c' diff --git a/docs/pod/Makefile b/docs/pod/Makefile index d6f56fe..ddc6de4 100644 --- a/docs/pod/Makefile +++ b/docs/pod/Makefile @@ -1,3 +1,4 @@ +# THIS MAKEFILE MAY WORK ONLY WITH (NET)BSD MAKE AKA PMAKE! all: man html latex txt html: diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index c242dfd..2e41645 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -37,10 +37,12 @@ The Fype syntax is very simple and is using a maximum look ahead of 1 and a very Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype! -You will also need: +You will need: GNU GCC C Compiler (gcc.gnu.org) - NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + NetBSD Make aka pmake (GNU Make will not work) + +NetBSD Make is included in any *BSD and can be run with just B. =head1 GETTING STARTED diff --git a/src/build.h b/src/build.h index 0d3980f..b717a22 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9208 +#define BUILDNR 9209 #define OS_FREEBSD #endif -- cgit v1.2.3 From 8b31b18a43dea55489e70d5b2ea6fc183cc67533 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Sep 2008 06:19:23 +0000 Subject: documentation recompiled. --- README | 6 ++++-- docs/pod/fype.1.gz | Bin 6093 -> 6105 bytes docs/pod/fype.html | 5 +++-- docs/pod/fype.man | 6 ++++-- docs/pod/fype.tex | 8 ++++++-- docs/pod/fype.txt | 6 ++++-- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/README b/README index 4276b8c..66a9695 100644 --- a/README +++ b/README @@ -44,10 +44,12 @@ REQUIREMENTS support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype! - You will also need: + You will need: GNU GCC C Compiler (gcc.gnu.org) - NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + NetBSD Make aka pmake (GNU Make will not work) + + NetBSD Make is included in any *BSD and can be run with just make. GETTING STARTED On Linux: Extract, compile and install Fype: diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index f26d28f..e05d4c5 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 7519767..b88a1b4 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -102,10 +102,11 @@ TODO file of the source distribution of Fype!


REQUIREMENTS

Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype!

-

You will also need:

+

You will need:

         GNU GCC C Compiler (gcc.gnu.org)
-        NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD)
+ NetBSD Make aka pmake (GNU Make will not work)
+

NetBSD Make is included in any *BSD and can be run with just make.


diff --git a/docs/pod/fype.man b/docs/pod/fype.man index d1f6937..b3d89bf 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -164,12 +164,14 @@ The Fype syntax is very simple and is using a maximum look ahead of 1 and a very .IX Header "REQUIREMENTS" Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is not planned. But may work using Cygwin or \s-1SFU\s0. Linux users have to install pmake before compiling Fype! .PP -You will also need: +You will need: .PP .Vb 2 \& GNU GCC C Compiler (gcc.gnu.org) -\& NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) +\& NetBSD Make aka pmake (GNU Make will not work) .Ve +.PP +NetBSD Make is included in any *BSD and can be run with just \fBmake\fR. .SH "GETTING STARTED" .IX Header "GETTING STARTED" On Linux: Extract, compile and install Fype: diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index 67c92b9..bcdea5f 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -50,12 +50,16 @@ Fype only has been tested on FreeBSD 7.0. Linux may work too. Windows support is -You will also need: +You will need: \begin{verbatim} GNU GCC C Compiler (gcc.gnu.org) - NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + NetBSD Make aka pmake (GNU Make will not work) \end{verbatim} + + +NetBSD Make is included in any *BSD and can be run with just \textbf{make}. + \section{GETTING STARTED\label{GETTING_STARTED}\index{GETTING STARTED}} diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 4276b8c..66a9695 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -44,10 +44,12 @@ REQUIREMENTS support is not planned. But may work using Cygwin or SFU. Linux users have to install pmake before compiling Fype! - You will also need: + You will need: GNU GCC C Compiler (gcc.gnu.org) - NetBSD Make aka pmake (GNU Make will not work) (it's included in any *BSD) + NetBSD Make aka pmake (GNU Make will not work) + + NetBSD Make is included in any *BSD and can be run with just make. GETTING STARTED On Linux: Extract, compile and install Fype: -- cgit v1.2.3 From 71185ab0ab0b08b4d5bb2e750ff85e11f105a453 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 16 Sep 2008 17:05:51 +0000 Subject: array progress --- Makefile | 2 +- README | 392 +++++++++++++++++++++++++++------------------------ docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6105 -> 6302 bytes docs/pod/fype.html | 191 ++++++++++++++----------- docs/pod/fype.man | 157 +++++++++++++-------- docs/pod/fype.pod | 142 +++++++++++-------- docs/pod/fype.tex | 154 +++++++++++--------- docs/pod/fype.txt | 392 +++++++++++++++++++++++++++------------------------ docs/stats.txt | 4 +- docs/version.txt | 2 +- examples/types.fy | 4 + src/build.h | 2 +- src/core/convert.c | 23 +++ src/core/function.c | 86 +++++++---- src/core/interpret.c | 65 ++++++--- src/core/symbol.c | 14 ++ src/core/token.c | 53 +++++-- src/core/token.h | 6 +- src/data/array.c | 50 +++++-- src/data/array.h | 2 + src/defines.h | 1 + tmp/test.fy | 11 +- tmp/test.out | 28 +++- 24 files changed, 1065 insertions(+), 718 deletions(-) diff --git a/Makefile b/Makefile index 5624b2e..719200c 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -#DEBUG=-g3 -ggdb3 +DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt diff --git a/README b/README index 66a9695..b6f6969 100644 --- a/README +++ b/README @@ -75,42 +75,6 @@ GETTING STARTED See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. -DATA TYPES - Fype uses auto type conversion. However, if you want to know what's - going on you may take a look at the provided basic datatypes. - - The basic data types - *integer* - Specifies an integer number - - *double* - Specifies a double number - - *string* - Specifies a string - - *number* - May be an integer or a double number - - *any* - May be of any type above - - *void* - No type - - *identifier* - It's a variable name or a procedure name or a function name - - Explicit type conversions - (*integer*) integer *any* - Converts any type to an integer - - (*double*) double *any* - Converts any type to a double - - (*string*) string *any* - Converts any type to a string - SYNTAX Comments Text from a # character until the end of the current line is considered @@ -126,8 +90,8 @@ SYNTAX say foo; exit foo - bar; - Paranthesis - All paranthesis of function calls are optional. They help to make the + Parenthesis + All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. @@ -175,216 +139,270 @@ SYNTAX Runs the statements as long as the the expression evaluates to a false value. +DATA TYPES + Fype uses auto type conversion. However, if you want to know what's + going on you may take a look at the provided basic datatypes. + + The basic data types + *integer* + (Internal name TT_INTEGER) + + *double* + (Internal name TT_DOUBLE) + + *string* + (Internal name TT_STRING) + + *array* + (Internal name TT_ARRAY) + + *number* + May be an integer or a double number + + *any* + May be of any type above + + *void* + No type + + *identifier* + It's a variable name or a procedure name or a function name + + Explicit type conversions + The data types inside the brackets are only showing the return types of + each function. + + (*integer*) integer *any* + Converts any type to an integer. + + (*double*) double *any* + Converts any type to a double. + + (*string*) string *any* + Converts any type to a string. + + (*array*) array *any* + Converts any type to an array. This function is not yet implemented. + + More functions for data types + (*string*) type *any* + Returns the name of the current type. Examples: + + my foo = 1; + put type foo; # Prints "TT_INTEGER" + put type 1.2; # Prints "TT_DOUBLE" + VARIABLES - Variables can be defined with the my keyword. If you don't assign a - value during declaration, then it's using the default integer value 0. - Variables may be changed during program runtime. Variables may be - deleted using the undef keyword! Example of defining variables: + Variables can be defined with the my keyword. If you don't assign a + value during declaration, then it's using the default integer value + 0. Variables may be changed during program runtime. Variables may be + deleted using the undef keyword! Example of defining variables: - my foo = 1 + 2; - say foo; + my foo = 1 + 2; + say foo; - my bar = 12, baz = foo; - say 1 + bar; - say bar; + my bar = 12, baz = foo; + say 1 + bar; + say bar; - my baz; - say baz; # Will print out 0 + my baz; + say baz; # Will print out 0 - You may use the defined keyword to check if an identifier has been - defined or not. + You may use the defined keyword to check if an identifier has been + defined or not. - ifnot defined foo { - say "No foo yet defined"; - } + ifnot defined foo { + say "No foo yet defined"; + } - my foo = 1; + my foo = 1; - if defined foo { - put "foo is defined and has the value "; - say foo; - } + if defined foo { + put "foo is defined and has the value "; + say foo; + } BUILT IN FUNCTIONS - In Fype, operators are built in functions as well. The difference is, - that they may be written in infix notation instead in front of the - arguments. The types inside the () specify the return types. + In Fype, operators are built in functions as well. The difference + is, that they may be written in infix notation instead in front of + the arguments. The types inside the () specify the return types. Math - (*any*) *any* + *any* - Special string behavior: A string will get auto convertet into an - *integer*. + (*any*) *any* + *any* + Special string behavior: A string will get auto convertet into + an *integer*. - (*any*) *any* - *any* - Special string behavior: A string will get auto convertet into an - *integer*. + (*any*) *any* - *any* + Special string behavior: A string will get auto convertet into + an *integer*. - (*any*) *any* * *any* - Special string behavior: A string will get auto convertet into an - *integer*. + (*any*) *any* * *any* + Special string behavior: A string will get auto convertet into + an *integer*. - (*any*) *any* / *any* - Special string behavior: A string will get auto convertet into an - *integer*. + (*any*) *any* / *any* + Special string behavior: A string will get auto convertet into + an *integer*. Conditional - (*integer*) *any* == *any* - (*integer*) *any* != *any* - (*integer*) *any* <= *any* - (*integer*) *any* >= *any* - (*integer*) *any* < *any* - (*integer*) *any* > *any* - (*integer*) not *any* + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + (*integer*) not *any* Definedness - (*integer*) defined *identifier* - Returns 1 if *identifier* has been defined. Returns 0 else. + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. - (*integer*) undef *identifier* - Tries to undefine/delete the *identifier*. Returns 1 if success, - otherwise 0 is returned. + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. Bitwise - (*integer*) *any* :< *any* - (*integer*) *any* :> *any* - (*integer*) *any* and *any* - (*integer*) *any* or *any* - (*integer*) *any* xor *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric - (*number*) neg *number* - This function returns the negative value of *any* + (*number*) neg *number* + This function returns the negative value of *any* - (*integer*) no [*integer*] - This function returns 1 if the argument is 0, otherwise it will - return 0! If no argument is given, then 0 is returned! + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! - (*integer*) yes [*integer*] - This function always returns 1. The parameter is optional. + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. - # Prints out 1, because foo is not defined - if yes { say no defined foo; } + # Prints out 1, because foo is not defined + if yes { say no defined foo; } System - (*void*) end - Exits the program with the exit status of 0 + (*void*) end + Exits the program with the exit status of 0 - (*void*) exit *integer* - Exits the program with the specified exit status + (*void*) exit *integer* + Exits the program with the specified exit status - (*integer*) fork - Fork forks a subprocess. It returns 0 for the child process and the - pid of the child process otherwise! Example: + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and + the pid of the child process otherwise! Example: - my pid = fork; + my pid = fork; - if pid { - put "I am the parent process; child has the pid "; - say pid; + if pid { + put "I am the parent process; child has the pid "; + say pid; - } ifnot pid { - say "I am the child process"; - } + } ifnot pid { + say "I am the child process"; + } - (*integer*) gc - Executes the garbage collector and returns the number of items - freed! You may wonder why most of the time it will return a value of - 0! Fype tries to free not needed memory asap. This may change in - future versions in order to gain faster execution of scripts! + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a + value of 0! Fype tries to free not needed memory asap. This may + change in future versions in order to gain faster execution of + scripts! I/O - (*any*) put *any* - Prints out the argument + (*any*) put *any* + Prints out the argument - (*any*) say *any* - Same as put, but also includes an ending newline + (*any*) say *any* + Same as put, but also includes an ending newline - (*void*) ln - Just prints a newline + (*void*) ln + Just prints a newline SELF DEFINING PROCEDURES AND FUNCTIONS Procedures - A procedure can be defined with the proc keyword and deleted with the - undef keyword. A procedure does not return any value and does not - support parameter passing. It's using already defined variables (e.g. - global variables). A procedure does not have its own namespace. It's - using the calling namespace. It is possible to define new variabes - inside of a procedure in the current namespace. - - proc foo { - say 1 + a * 3 + b; - my c = 6; - } + A procedure can be defined with the proc keyword and deleted with + the undef keyword. A procedure does not return any value and does + not support parameter passing. It's using already defined variables + (e.g. global variables). A procedure does not have its own + namespace. It's using the calling namespace. It is possible to + define new variabes inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Print out "6\n"; + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; Nested procedures - It's possible to define procedures inside of procedures. Since - procedures don't have its own scope, nested procedures will be available - to the current scope as soon as the main procedure has run the first - time. You may use the defined keyword in order to check if a procedure - has been defined or not. - - proc foo { - say "I am foo"; - - undef bar; - proc bar { - say "I am bar"; - } - } + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be + available to the current scope as soon as the main procedure has run + the first time. You may use the defined keyword in order to check if + a procedure has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } - # Here bar would produce an error because - # the proc is not yet defined! - # bar; + # Here bar would produce an error because + # the proc is not yet defined! + # bar; - foo; # Here the procedure foo will define the procedure bar! - bar; # Now the procedure bar is defined! - foo; # Here the procedure foo will redefine bar again! + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! Functions - A function should be defined with the func keyword and deleted with the - undef keyword. Function not yet return values (will be changed in future - versions) and supports not yet parameter passing (will be changed in - future versions). It's using local (lexical scoped) variables. If a - certain variable does not exist It's using already defined variables - (e.g. one scope above). - - func foo { - say 1 + a * 3 + b; - my c = 6; - } + A function should be defined with the func keyword and deleted with + the undef keyword. Function not yet return values (will be changed + in future versions) and supports not yet parameter passing (will be + changed in future versions). It's using local (lexical scoped) + variables. If a certain variable does not exist It's using already + defined variables (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Will produce an error, because c is out of scoped! + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! Nested functions - Nested functions work the same way the nested procedures work, with the - exception that nested functions will not be available any more after the - function has been left! + Nested functions work the same way the nested procedures work, with + the exception that nested functions will not be available any more + after the function has been left! - func foo { - func bar { - say "Hello i am nested"; - } + func foo { + func bar { + say "Hello i am nested"; + } - bar; # Calling nested - } + bar; # Calling nested + } - foo; - bar; # Will produce an error, because bar is out of scope! + foo; + bar; # Will produce an error, because bar is out of scope! AUTHOR - Paul C. Buetow (http://paul.buetow.org) + Paul C. Buetow (http://paul.buetow.org) WEBSITE - The Fype Language (http://fype.buetow.org) + The Fype Language (http://fype.buetow.org) SEE ALSO - awk(1) cc(1) make(1) + awk(1) cc(1) diff --git a/docs/help.txt b/docs/help.txt index d7163e6..25988ea 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9208 +Fype v0.1-devel Build 9322 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index e05d4c5..29ae39d 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index b88a1b4..47397a4 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -20,23 +20,24 @@
  • PARSING / CODE GENERATION
  • REQUIREMENTS
  • GETTING STARTED
  • -
  • DATA TYPES
  • - -
  • SYNTAX
  • +
  • DATA TYPES
  • + +
  • VARIABLES
  • BUILT IN FUNCTIONS
    • @@ -132,6 +133,81 @@ TODO file of the source distribution of Fype!


      +

      SYNTAX

      +

      +

      +

      Comments

      +

      Text from a # character until the end of the current line is considered being a comment. Multi line comments may start with an #* and and with an *# anywhere. Exceptions are if those signs are inside of strings.

      +

      +

      +

      Statements

      +

      A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example:

      +
      +        my bar = 3, foo = 1 + 2; 
      +        say foo;
      +        exit foo - bar;
      +

      +

      +

      Parenthesis

      +

      All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.

      +

      +

      +

      Scopeing

      +

      A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

      +
      +        my foo = 1;
      +
      +        {
      +                # Prints out 1
      +                put defined foo;
      +                {
      +                        my bar = 2;
      +
      +                        # Prints out 1
      +                        put defined bar;
      +                }
      +
      +                # Prints out 0
      +                put defined bar;
      +
      +                my baz = 3;
      +        }
      +
      +        # Prints out 0
      +        say defined bar;
      +

      +

      +

      Control statements

      +

      Fype knows the following control statements:

      +
      +
      if <expression> { <statements> } + +
      +

      Runs the statements if the expression evaluates to a true value.

      +
      + +
      ifnot <expression> { <statements> } + +
      +

      Runs the statements if the expression evaluates to a false value.

      +
      + +
      while <expression> { <statements> } + +
      +

      Runs the statements as long as the the expression evaluates to a true value.

      +
      + +
      until <expression> { <statements> } + +
      +

      Runs the statements as long as the the expression evaluates to a false value.

      +
      + +
      +

      +

      +

      DATA TYPES

      Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes.

      @@ -141,19 +217,25 @@ TODO file of the source distribution of Fype!

      integer
      -

      Specifies an integer number

      +

      (Internal name TT_INTEGER)

      double
      -

      Specifies a double number

      +

      (Internal name TT_DOUBLE)

      string
      -

      Specifies a string

      +

      (Internal name TT_STRING)

      +
      + +
      array + +
      +

      (Internal name TT_ARRAY)

      number @@ -184,98 +266,47 @@ TODO file of the source distribution of Fype!

      Explicit type conversions

      +

      The data types inside the brackets are only showing the return types of each function.

      (integer) integer any
      -

      Converts any type to an integer

      +

      Converts any type to an integer.

      (double) double any
      -

      Converts any type to a double

      +

      Converts any type to a double.

      (string) string any
      -

      Converts any type to a string

      +

      Converts any type to a string.

      -
      -

      -

      -
      -

      SYNTAX

      -

      -

      -

      Comments

      -

      Text from a # character until the end of the current line is considered being a comment. Multi line comments may start with an #* and and with an *# anywhere. Exceptions are if those signs are inside of strings.

      -

      -

      -

      Statements

      -

      A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example:

      -
      -        my bar = 3, foo = 1 + 2; 
      -        say foo;
      -        exit foo - bar;
      -

      -

      -

      Paranthesis

      -

      All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.

      -

      -

      -

      Scopeing

      -

      A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

      -
      -        my foo = 1;
      -
      -        {
      -                # Prints out 1
      -                put defined foo;
      -                {
      -                        my bar = 2;
      -
      -                        # Prints out 1
      -                        put defined bar;
      -                }
      -
      -                # Prints out 0
      -                put defined bar;
      -
      -                my baz = 3;
      -        }
      -
      -        # Prints out 0
      -        say defined bar;
      -

      -

      -

      Control statements

      -

      Fype knows the following control statements:

      -
      -
      if <expression> { <statements> } - -
      -

      Runs the statements if the expression evaluates to a true value.

      -
      - -
      ifnot <expression> { <statements> } +
      (array) array any
      -

      Runs the statements if the expression evaluates to a false value.

      +

      Converts any type to an array. This function is not yet implemented.

      -
      while <expression> { <statements> } +
      +

      +

      +

      More functions for data types

      +
      +
      (string) type any
      -

      Runs the statements as long as the the expression evaluates to a true value.

      +

      Returns the name of the current type. Examples:

      - -
      until <expression> { <statements> } -
      -

      Runs the statements as long as the the expression evaluates to a false value.

      +
      +        my foo = 1;
      +        put type foo; # Prints "TT_INTEGER"
      +        put type 1.2; # Prints "TT_DOUBLE"
      @@ -580,7 +611,7 @@ keyword in order to check if a procedure has been defined or not.


      SEE ALSO

      -

      awk(1) cc(1) make(1) +

      awk(1) cc(1)

      diff --git a/docs/pod/fype.man b/docs/pod/fype.man index b3d89bf..1be72ec 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9208" "The Fype Users Manual Page" +.TH FYPE 1 "2008-09-16" "Fype v0.1-devel Build 9269" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution .PP @@ -201,43 +201,6 @@ Run a .fy file: .Ve .PP See the ./examples subdir of the Fype source distribution for examples! See also fype \-h for a list of all options. -.SH "DATA TYPES" -.IX Header "DATA TYPES" -Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. -.Sh "The basic data types" -.IX Subsection "The basic data types" -.IP "\fIinteger\fR" 4 -.IX Item "integer" -Specifies an integer number -.IP "\fIdouble\fR" 4 -.IX Item "double" -Specifies a double number -.IP "\fIstring\fR" 4 -.IX Item "string" -Specifies a string -.IP "\fInumber\fR" 4 -.IX Item "number" -May be an integer or a double number -.IP "\fIany\fR" 4 -.IX Item "any" -May be of any type above -.IP "\fIvoid\fR" 4 -.IX Item "void" -No type -.IP "\fIidentifier\fR" 4 -.IX Item "identifier" -It's a variable name or a procedure name or a function name -.Sh "Explicit type conversions" -.IX Subsection "Explicit type conversions" -.IP "(\fIinteger\fR) \fBinteger\fR \fIany\fR" 4 -.IX Item "(integer) integer any" -Converts any type to an integer -.IP "(\fIdouble\fR) \fBdouble\fR \fIany\fR" 4 -.IX Item "(double) double any" -Converts any type to a double -.IP "(\fIstring\fR) \fBstring\fR \fIany\fR" 4 -.IX Item "(string) string any" -Converts any type to a string .SH "SYNTAX" .IX Header "SYNTAX" .Sh "Comments" @@ -252,9 +215,9 @@ A Fype program is a list of statements. Each keyword, expression or function cal \& say foo; \& exit foo - bar; .Ve -.Sh "Paranthesis" -.IX Subsection "Paranthesis" -All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. +.Sh "Parenthesis" +.IX Subsection "Parenthesis" +All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. .Sh "Scopeing" .IX Subsection "Scopeing" A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes: @@ -306,39 +269,94 @@ Runs the statements as long as the the expression evaluates to a true value. .IP "until \fI { \fI }" 4 .IX Item "until { }" Runs the statements as long as the the expression evaluates to a false value. +.SH "DATA TYPES" +.IX Header "DATA TYPES" +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. +.Sh "The basic data types" +.IX Subsection "The basic data types" +.IP "\fIinteger\fR" 4 +.IX Item "integer" +(Internal name \s-1TT_INTEGER\s0) +.IP "\fIdouble\fR" 4 +.IX Item "double" +(Internal name \s-1TT_DOUBLE\s0) +.IP "\fIstring\fR" 4 +.IX Item "string" +(Internal name \s-1TT_STRING\s0) +.IP "\fIarray\fR" 4 +.IX Item "array" +(Internal name \s-1TT_ARRAY\s0) +.IP "\fInumber\fR" 4 +.IX Item "number" +May be an integer or a double number +.IP "\fIany\fR" 4 +.IX Item "any" +May be of any type above +.IP "\fIvoid\fR" 4 +.IX Item "void" +No type +.IP "\fIidentifier\fR" 4 +.IX Item "identifier" +It's a variable name or a procedure name or a function name +.Sh "Explicit type conversions" +.IX Subsection "Explicit type conversions" +The data types inside the brackets are only showing the return types of each function. +.IP "(\fIinteger\fR) \fBinteger\fR \fIany\fR" 4 +.IX Item "(integer) integer any" +Converts any type to an integer. +.IP "(\fIdouble\fR) \fBdouble\fR \fIany\fR" 4 +.IX Item "(double) double any" +Converts any type to a double. +.IP "(\fIstring\fR) \fBstring\fR \fIany\fR" 4 +.IX Item "(string) string any" +Converts any type to a string. +.IP "(\fIarray\fR) \fBarray\fR \fIany\fR" 4 +.IX Item "(array) array any" +Converts any type to an array. This function is not yet implemented. +.Sh "More functions for data types" +.IX Subsection "More functions for data types" +.IP "(\fIstring\fR) \fBtype\fR \fIany\fR" 4 +.IX Item "(string) type any" +Returns the name of the current type. Examples: +.Sp +.Vb 3 +\& my foo = 1; +\& put type foo; # Prints "TT_INTEGER" +\& put type 1.2; # Prints "TT_DOUBLE" +.Ve .SH "VARIABLES" .IX Header "VARIABLES" Variables can be defined with the \fBmy\fR keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the \fBundef\fR keyword! Example of defining variables: -.PP +.Sp .Vb 2 \& my foo = 1 + 2; \& say foo; .Ve -.PP +.Sp .Vb 3 \& my bar = 12, baz = foo; \& say 1 + bar; \& say bar; .Ve -.PP +.Sp .Vb 2 \& my baz; \& say baz; # Will print out 0 .Ve -.PP +.Sp You may use the \fBdefined\fR keyword to check if an identifier has been defined or not. -.PP +.Sp .Vb 3 \& ifnot defined foo { \& say "No foo yet defined"; \& } .Ve -.PP +.Sp .Vb 1 \& my foo = 1; .Ve -.PP +.Sp .Vb 4 \& if defined foo { \& put "foo is defined and has the value "; @@ -350,6 +368,7 @@ not. In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. .Sh "Math" .IX Subsection "Math" +.RS 4 .IP "(\fIany\fR) \fIany\fR \fB+\fR \fIany\fR" 4 .IX Item "(any) any + any" Special string behavior: A string will get auto convertet into an \fIinteger\fR. @@ -362,6 +381,8 @@ Special string behavior: A string will get auto convertet into an \fIinteger\fR. .IP "(\fIany\fR) \fIany\fR \fB/\fR \fIany\fR" 4 .IX Item "(any) any / any" Special string behavior: A string will get auto convertet into an \fIinteger\fR. +.RE +.RS 4 .Sh "Conditional" .IX Subsection "Conditional" .IP "(\fIinteger\fR) \fIany\fR \fB==\fR \fIany\fR" 4 @@ -379,6 +400,8 @@ Special string behavior: A string will get auto convertet into an \fIinteger\fR. .IX Item "(integer) any > any" .IP "(\fIinteger\fR) \fBnot\fR \fIany\fR" 4 .IX Item "(integer) not any" +.RE +.RS 4 .PD .Sh "Definedness" .IX Subsection "Definedness" @@ -388,6 +411,8 @@ Returns 1 if \fIidentifier\fR has been defined. Returns 0 else. .IP "(\fIinteger\fR) \fBundef\fR \fIidentifier\fR" 4 .IX Item "(integer) undef identifier" Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 is returned. +.RE +.RS 4 .Sh "Bitwise" .IX Subsection "Bitwise" .IP "(\fIinteger\fR) \fIany\fR \fB:<\fR \fIany\fR" 4 @@ -401,6 +426,8 @@ Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 .IX Item "(integer) any or any" .IP "(\fIinteger\fR) \fIany\fR \fBxor\fR \fIany\fR" 4 .IX Item "(integer) any xor any" +.RE +.RS 4 .PD .Sh "Numeric" .IX Subsection "Numeric" @@ -419,6 +446,8 @@ This function always returns 1. The parameter is optional. \& # Prints out 1, because foo is not defined \& if yes { say no defined foo; } .Ve +.RE +.RS 4 .Sh "System" .IX Subsection "System" .IP "(\fIvoid\fR) \fBend\fR" 4 @@ -453,6 +482,8 @@ Executes the garbage collector and returns the number of items freed! You may wonder why most of the time it will return a value of 0! Fype tries to free not needed memory asap. This may change in future versions in order to gain faster execution of scripts! +.RE +.RS 4 .Sh "I/O" .IX Subsection "I/O" .IP "(\fIany\fR) \fBput\fR \fIany\fR" 4 @@ -464,23 +495,25 @@ Same as put, but also includes an ending newline .IP "(\fIvoid\fR) \fBln\fR" 4 .IX Item "(void) ln" Just prints a newline +.RE +.RS 4 .SH "SELF DEFINING PROCEDURES AND FUNCTIONS" .IX Header "SELF DEFINING PROCEDURES AND FUNCTIONS" .Sh "Procedures" .IX Subsection "Procedures" A procedure can be defined with the \fBproc\fR keyword and deleted with the \fBundef\fR keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace. -.PP +.Sp .Vb 4 \& proc foo { \& say 1 + a * 3 + b; \& my c = 6; \& } .Ve -.PP +.Sp .Vb 1 \& my a = 2, b = 4; .Ve -.PP +.Sp .Vb 2 \& foo; # Run the procedure. Print out "11\en" \& say c; # Print out "6\en"; @@ -491,12 +524,12 @@ It's possible to define procedures inside of procedures. Since procedures don't have its own scope, nested procedures will be available to the current scope as soon as the main procedure has run the first time. You may use the \fBdefined\fR keyword in order to check if a procedure has been defined or not. -.PP +.Sp .Vb 2 \& proc foo { \& say "I am foo"; .Ve -.PP +.Sp .Vb 5 \& undef bar; \& proc bar { @@ -504,13 +537,13 @@ keyword in order to check if a procedure has been defined or not. \& } \& } .Ve -.PP +.Sp .Vb 3 \& # Here bar would produce an error because \& # the proc is not yet defined! \& # bar; .Ve -.PP +.Sp .Vb 3 \& foo; # Here the procedure foo will define the procedure bar! \& bar; # Now the procedure bar is defined! @@ -519,18 +552,18 @@ keyword in order to check if a procedure has been defined or not. .Sh "Functions" .IX Subsection "Functions" A function should be defined with the \fBfunc\fR keyword and deleted with the \fBundef\fR keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above). -.PP +.Sp .Vb 4 \& func foo { \& say 1 + a * 3 + b; \& my c = 6; \& } .Ve -.PP +.Sp .Vb 1 \& my a = 2, b = 4; .Ve -.PP +.Sp .Vb 2 \& foo; # Run the procedure. Print out "11\en" \& say c; # Will produce an error, because c is out of scoped! @@ -538,19 +571,19 @@ A function should be defined with the \fBfunc\fR keyword and deleted with the \f .Sh "Nested functions" .IX Subsection "Nested functions" Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left! -.PP +.Sp .Vb 4 \& func foo { \& func bar { \& say "Hello i am nested"; \& } .Ve -.PP +.Sp .Vb 2 \& bar; # Calling nested \& } .Ve -.PP +.Sp .Vb 2 \& foo; \& bar; # Will produce an error, because bar is out of scope! @@ -563,4 +596,4 @@ Paul C. Buetow (http://paul.buetow.org) The Fype Language (http://fype.buetow.org) .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIawk\fR\|(1) \fIcc\fR\|(1) \fImake\fR\|(1) +\&\fIawk\fR\|(1) \fIcc\fR\|(1) diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 2e41645..6ec8061 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -68,62 +68,6 @@ Run a .fy file: See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. -=head1 DATA TYPES - -Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. - -=head2 The basic data types - -=over - -=item I - -Specifies an integer number - -=item I - -Specifies a double number - -=item I - -Specifies a string - -=item I - -May be an integer or a double number - -=item I - -May be of any type above - -=item I - -No type - -=item I - -It's a variable name or a procedure name or a function name - -=back - -=head2 Explicit type conversions - -=over - -=item (I) B I - -Converts any type to an integer - -=item (I) B I - -Converts any type to a double - -=item (I) B I - -Converts any type to a string - -=back - =head1 SYNTAX =head2 Comments @@ -138,9 +82,9 @@ A Fype program is a list of statements. Each keyword, expression or function cal say foo; exit foo - bar; -=head2 Paranthesis +=head2 Parenthesis -All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. +All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. =head2 Scopeing @@ -191,6 +135,84 @@ Runs the statements as long as the the expression evaluates to a false value. =back +=head1 DATA TYPES + +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. + +=head2 The basic data types + +=over + +=item I + +(Internal name TT_INTEGER) + +=item I + +(Internal name TT_DOUBLE) + +=item I + +(Internal name TT_STRING) + +=item I + +(Internal name TT_ARRAY) + +=item I + +May be an integer or a double number + +=item I + +May be of any type above + +=item I + +No type + +=item I + +It's a variable name or a procedure name or a function name + +=back + +=head2 Explicit type conversions + +The data types inside the brackets are only showing the return types of each function. + +=over + +=item (I) B I + +Converts any type to an integer. + +=item (I) B I + +Converts any type to a double. + +=item (I) B I + +Converts any type to a string. + +=item (I) B I + +Converts any type to an array. This function is not yet implemented. + +=back + +=head2 More functions for data types + +=over + +=item (I) B I + +Returns the name of the current type. Examples: + + my foo = 1; + put type foo; # Prints "TT_INTEGER" + put type 1.2; # Prints "TT_DOUBLE" + =head1 VARIABLES Variables can be defined with the B keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the B keyword! Example of defining variables: @@ -423,7 +445,7 @@ A function should be defined with the B keyword and deleted with the B= *any* - (*integer*) *any* < *any* - (*integer*) *any* > *any* - (*integer*) not *any* + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + (*integer*) not *any* Definedness - (*integer*) defined *identifier* - Returns 1 if *identifier* has been defined. Returns 0 else. + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. - (*integer*) undef *identifier* - Tries to undefine/delete the *identifier*. Returns 1 if success, - otherwise 0 is returned. + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. Bitwise - (*integer*) *any* :< *any* - (*integer*) *any* :> *any* - (*integer*) *any* and *any* - (*integer*) *any* or *any* - (*integer*) *any* xor *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric - (*number*) neg *number* - This function returns the negative value of *any* + (*number*) neg *number* + This function returns the negative value of *any* - (*integer*) no [*integer*] - This function returns 1 if the argument is 0, otherwise it will - return 0! If no argument is given, then 0 is returned! + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! - (*integer*) yes [*integer*] - This function always returns 1. The parameter is optional. + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. - # Prints out 1, because foo is not defined - if yes { say no defined foo; } + # Prints out 1, because foo is not defined + if yes { say no defined foo; } System - (*void*) end - Exits the program with the exit status of 0 + (*void*) end + Exits the program with the exit status of 0 - (*void*) exit *integer* - Exits the program with the specified exit status + (*void*) exit *integer* + Exits the program with the specified exit status - (*integer*) fork - Fork forks a subprocess. It returns 0 for the child process and the - pid of the child process otherwise! Example: + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and + the pid of the child process otherwise! Example: - my pid = fork; + my pid = fork; - if pid { - put "I am the parent process; child has the pid "; - say pid; + if pid { + put "I am the parent process; child has the pid "; + say pid; - } ifnot pid { - say "I am the child process"; - } + } ifnot pid { + say "I am the child process"; + } - (*integer*) gc - Executes the garbage collector and returns the number of items - freed! You may wonder why most of the time it will return a value of - 0! Fype tries to free not needed memory asap. This may change in - future versions in order to gain faster execution of scripts! + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a + value of 0! Fype tries to free not needed memory asap. This may + change in future versions in order to gain faster execution of + scripts! I/O - (*any*) put *any* - Prints out the argument + (*any*) put *any* + Prints out the argument - (*any*) say *any* - Same as put, but also includes an ending newline + (*any*) say *any* + Same as put, but also includes an ending newline - (*void*) ln - Just prints a newline + (*void*) ln + Just prints a newline SELF DEFINING PROCEDURES AND FUNCTIONS Procedures - A procedure can be defined with the proc keyword and deleted with the - undef keyword. A procedure does not return any value and does not - support parameter passing. It's using already defined variables (e.g. - global variables). A procedure does not have its own namespace. It's - using the calling namespace. It is possible to define new variabes - inside of a procedure in the current namespace. - - proc foo { - say 1 + a * 3 + b; - my c = 6; - } + A procedure can be defined with the proc keyword and deleted with + the undef keyword. A procedure does not return any value and does + not support parameter passing. It's using already defined variables + (e.g. global variables). A procedure does not have its own + namespace. It's using the calling namespace. It is possible to + define new variabes inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Print out "6\n"; + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; Nested procedures - It's possible to define procedures inside of procedures. Since - procedures don't have its own scope, nested procedures will be available - to the current scope as soon as the main procedure has run the first - time. You may use the defined keyword in order to check if a procedure - has been defined or not. - - proc foo { - say "I am foo"; - - undef bar; - proc bar { - say "I am bar"; - } - } + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be + available to the current scope as soon as the main procedure has run + the first time. You may use the defined keyword in order to check if + a procedure has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } - # Here bar would produce an error because - # the proc is not yet defined! - # bar; + # Here bar would produce an error because + # the proc is not yet defined! + # bar; - foo; # Here the procedure foo will define the procedure bar! - bar; # Now the procedure bar is defined! - foo; # Here the procedure foo will redefine bar again! + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! Functions - A function should be defined with the func keyword and deleted with the - undef keyword. Function not yet return values (will be changed in future - versions) and supports not yet parameter passing (will be changed in - future versions). It's using local (lexical scoped) variables. If a - certain variable does not exist It's using already defined variables - (e.g. one scope above). - - func foo { - say 1 + a * 3 + b; - my c = 6; - } + A function should be defined with the func keyword and deleted with + the undef keyword. Function not yet return values (will be changed + in future versions) and supports not yet parameter passing (will be + changed in future versions). It's using local (lexical scoped) + variables. If a certain variable does not exist It's using already + defined variables (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Will produce an error, because c is out of scoped! + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! Nested functions - Nested functions work the same way the nested procedures work, with the - exception that nested functions will not be available any more after the - function has been left! + Nested functions work the same way the nested procedures work, with + the exception that nested functions will not be available any more + after the function has been left! - func foo { - func bar { - say "Hello i am nested"; - } + func foo { + func bar { + say "Hello i am nested"; + } - bar; # Calling nested - } + bar; # Calling nested + } - foo; - bar; # Will produce an error, because bar is out of scope! + foo; + bar; # Will produce an error, because bar is out of scope! AUTHOR - Paul C. Buetow (http://paul.buetow.org) + Paul C. Buetow (http://paul.buetow.org) WEBSITE - The Fype Language (http://fype.buetow.org) + The Fype Language (http://fype.buetow.org) SEE ALSO - awk(1) cc(1) make(1) + awk(1) cc(1) diff --git a/docs/stats.txt b/docs/stats.txt index b49fcc8..f3e5de9 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7460 +===> Num of C source lines : 7620 ===> Num of Fype source examples : 13 -===> Num of Fype source lines : 321 +===> Num of Fype source lines : 325 diff --git a/docs/version.txt b/docs/version.txt index 8493ac9..7595f6e 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9208 +Fype v0.1-devel Build 9322 diff --git a/examples/types.fy b/examples/types.fy index 1b9a0ac..1ac9751 100644 --- a/examples/types.fy +++ b/examples/types.fy @@ -12,3 +12,7 @@ assert 2 == say integer 2.8; # Rounds down to the Integer 2 assert say integer double string put say neg 12; # Nonsense but working :) +assert "TT_INTEGER" == say type 1; +assert "TT_DOUBLE" == say type 1.0; +assert "TT_STRING" == say type "1"; +assert "TT_ARRAY" == say type [1 2 3]; diff --git a/src/build.h b/src/build.h index b717a22..80ea007 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9209 +#define BUILDNR 9330 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index 73fb8a2..081e92e 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -33,6 +33,7 @@ *:*/ #include "convert.h" +#include "../data/array.h" void convert_to_integer(Token *p_token) { @@ -47,6 +48,10 @@ convert_to_integer(Token *p_token) { token_set_tt(p_token, TT_INTEGER); token_set_ival(p_token, atoi(token_get_val(p_token))); break; + case TT_ARRAY: + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, array_get_size(p_token->p_array)-1); + break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); break; @@ -62,6 +67,9 @@ convert_to_integer_get(Token *p_token) { return ((int) token_get_dval(p_token)); case TT_STRING: return (atoi(token_get_val(p_token))); + case TT_ARRAY: + return (array_get_size(p_token->p_array)-1); + break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); } @@ -82,6 +90,10 @@ convert_to_double(Token *p_token) { token_set_tt(p_token, TT_DOUBLE); token_set_dval(p_token, atof(token_get_val(p_token))); break; + case TT_ARRAY: + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, array_get_size(p_token->p_array)-1); + break; default: token_print_val(p_token); ERROR("Datatype conversion error '%s'", token_get_val(p_token)); @@ -115,6 +127,17 @@ convert_to_string(Token *p_token) { } break; case TT_STRING: + break; + case TT_ARRAY: + token_set_tt(p_token, TT_STRING); + char c_tmp[1024]; + sprintf(c_tmp, "%d", array_get_size(p_token->p_array)-1); + int i_len = strlen(c_tmp); + p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); + strcpy(p_token->c_val, c_tmp); + p_token->c_val[i_len] = 0; + array_iterate(p_token->p_array, token_delete_cb); + break; default: ERROR("Datatype conversion error"); diff --git a/src/core/function.c b/src/core/function.c index fda40b8..979454d 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -51,6 +51,34 @@ token_get_val(t) \ ) +void +_print_val(Token *p_token) { + switch (token_get_tt(p_token)) { + case TT_INTEGER: + printf("%d", token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("%f", token_get_dval(p_token)); + break; + case TT_STRING: + printf("%s", token_get_val(p_token)); + break; + case TT_ARRAY: + { + Array *p_array = p_token->p_array; + ArrayIterator *p_iter = arrayiterator_new(p_array); + while (arrayiterator_has_next(p_iter)) { + Token *p_next = arrayiterator_next(p_iter); + _print_val(p_next); + printf(" "); + } + arrayiterator_delete(p_iter); + } + break; + NO_DEFAULT; + } +} + void _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, Token *p_token_op2, Token *p_token_next) { @@ -575,6 +603,9 @@ function_is_buildin(Token *p_token_ident) { if (strcmp("not", token_get_val(p_token_ident)) == 0) return (true); + if (strcmp("type", token_get_val(p_token_ident)) == 0) + return (true); + return (false); } @@ -734,18 +765,7 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, StackIterator *p_iter = stackiterator_new(p_stack_args); while (stackiterator_has_next(p_iter)) { Token *p_token = stackiterator_next(p_iter); - switch (token_get_tt(p_token)) { - case TT_INTEGER: - printf("%d", token_get_ival(p_token)); - break; - case TT_DOUBLE: - printf("%f", token_get_dval(p_token)); - break; - case TT_STRING: - printf("%s", token_get_val(p_token)); - break; - NO_DEFAULT; - } + _print_val(p_token); } stackiterator_delete(p_iter); @@ -753,18 +773,7 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, StackIterator *p_iter = stackiterator_new(p_stack_args); while (stackiterator_has_next(p_iter)) { Token *p_token = stackiterator_next(p_iter); - switch (token_get_tt(p_token)) { - case TT_INTEGER: - printf("%d", token_get_ival(p_token)); - break; - case TT_DOUBLE: - printf("%f", token_get_dval(p_token)); - break; - case TT_STRING: - printf("%s", token_get_val(p_token)); - break; - NO_DEFAULT; - } + _print_val(p_token); } stackiterator_delete(p_iter); printf("\n"); @@ -812,6 +821,35 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, break; NO_DEFAULT; } + } else if (strcmp("not", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = token_new_copy(stack_pop(p_stack_args)); + stack_push(p_stack_args, p_token); + + switch (token_get_tt(p_token)) { + case TT_INTEGER: + token_set_ival(p_token, !token_get_ival(p_token)); + break; + case TT_DOUBLE: + token_set_dval(p_token, !token_get_dval(p_token)); + break; + case TT_STRING: + token_set_ival(p_token, !atoi(token_get_val(p_token))); + token_set_tt(p_token, TT_INTEGER); + break; + NO_DEFAULT; + } + } else if (strcmp("type", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token = stack_pop(p_stack_args); + TokenType tt = token_get_tt(p_token); + + Token *p_token_type = token_new_string(tt_get_name(tt)); + stack_push(p_stack_args, p_token_type); } } diff --git a/src/core/interpret.c b/src/core/interpret.c index 5aa07ef..c3f781c 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -54,15 +54,16 @@ #define _NEXT_TT _next_tt(p_interpret) #define _SKIP _next(p_interpret); -void _print_lookahead(Interpret *p_interpret); +int __expression_get(Interpret *p_interpret, List *p_list_block); +int __array_get(Interpret *p_interpret, Token *p_token_arr); +void __print_lookahead(Interpret *p_interpret); int _next(Interpret *p_interpret); int _program(Interpret *p_interpret); int _var_decl(Interpret *p_interpret); int _var_assign(Interpret *p_interpret); int _var_list(Interpret *p_interpret); -int _expression_get(Interpret *p_interpret, List *p_list_block); int _block_get(Interpret *p_interpret, List *p_list_block); -int _block_skip(Interpret *p_interpret); +int __block_skip(Interpret *p_interpret); int _proc_decl(Interpret *p_interpret); int _func_decl(Interpret *p_interpret); int _statement(Interpret *p_interpret); @@ -114,7 +115,7 @@ interpret_delete(Interpret *p_interpret) { } void -_print_lookahead(Interpret *p_interpret) { +__print_lookahead(Interpret *p_interpret) { ListIterator *p_iter = p_interpret->p_iter; ListIteratorState *p_state = listiterator_get_state(p_iter); @@ -175,7 +176,6 @@ _var_decl(Interpret *p_interpret) { _CHECK TRACK switch (p_interpret->tt) { - //case TT_ARR: //TODO cleanup TT_ARR case TT_MY: { if (_NEXT_TT != TT_IDENT) @@ -200,7 +200,7 @@ _var_decl(Interpret *p_interpret) { } } default: - break; + break; } return (0); @@ -226,8 +226,8 @@ _var_assign(Interpret *p_interpret) { p_interpret->p_stack = stack_new(); if (_expression_(p_interpret)) { - function_process_buildin(p_interpret, p_token, - p_interpret->p_stack); + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); stack_merge(p_stack, p_interpret->p_stack); stack_delete(p_interpret->p_stack); @@ -236,7 +236,6 @@ _var_assign(Interpret *p_interpret) { p_token = stack_top(p_interpret->p_stack); Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); scope_newset(p_interpret->p_scope, c_name, p_symbol); - } else { return (0); } @@ -298,11 +297,10 @@ _block_get(Interpret *p_interpret, List *p_list_block) { } int -_expression_get(Interpret *p_interpret, List *p_list_expression) { +__expression_get(Interpret *p_interpret, List *p_list_expression) { for (;;) { - if (p_interpret->tt == TT_PARANT_CL) { + if (p_interpret->tt == TT_PARANT_CL) break; /* for */ - } list_add_back(p_list_expression, p_interpret->p_token); @@ -319,7 +317,36 @@ _expression_get(Interpret *p_interpret, List *p_list_expression) { } int -_block_skip(Interpret *p_interpret) { +__array_get(Interpret *p_interpret, Token *p_token_arr) { +#ifdef DEBUG_ARRAY_GET + printf("====> ARRAY\n"); +#endif /* DEBUG_ARRAY_GET */ + Array *p_array = p_token_arr->p_array; + + do { + Token *p_token = p_interpret->p_token; + +#ifdef DEBUG_ARRAY_GET + printf("Insert: "); + token_print_ln(p_token); +#endif /* DEBUG_ARRAY_GET */ + + array_unshift(p_array, p_token); + token_ref_up(p_token); + _NEXT + } while (p_interpret->tt != TT_PARANT_AR); + +#ifdef DEBUG_ARRAY_GET + printf("<==== ARRAY\n"); +#endif /* DEBUG_ARRAY_GET */ + /* Ignore TT_PARANT_AR */ + _NEXT + + return (0); +} + +int +__block_skip(Interpret *p_interpret) { if (p_interpret->tt != TT_PARANT_CL) _INTERPRET_ERROR("Expected '{'", p_interpret->p_token); _NEXT @@ -523,7 +550,7 @@ _control(Interpret *p_interpret) { _NEXT - _expression_get(p_interpret, p_list_expr); + __expression_get(p_interpret, p_list_expr); _block_get(p_interpret, p_list_block); Token *p_token_backup = p_interpret->p_token; @@ -541,7 +568,6 @@ _control(Interpret *p_interpret) { Token *p_token_top = stack_pop(p_interpret->p_stack); if (p_token_top == NULL) { - printf("FOO\n"); exit(0); } if (tt == TT_WHILE) { @@ -786,6 +812,7 @@ _term(Interpret *p_interpret) { case TT_INTEGER: case TT_DOUBLE: case TT_STRING: + case TT_ARRAY: stack_push(p_interpret->p_stack, p_interpret->p_token); _NEXT return (1); @@ -917,9 +944,13 @@ _term(Interpret *p_interpret) { Token *p_token = p_interpret->p_token; _NEXT - Token *p_token_arr = token_new_array(ARRAY_SIZE); + Token *p_token_arr = token_new_array(ARRAY_SIZE); stack_push(p_interpret->p_stack, p_token_arr); - _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); + + if (__array_get(p_interpret, p_token_arr) != 0) + _INTERPRET_ERROR("Array syntax error", p_token); + + return (1); } break; diff --git a/src/core/symbol.c b/src/core/symbol.c index 2343cdb..9a98e63 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -33,7 +33,9 @@ *:*/ #include "symbol.h" +#include "token.h" +#include "../data/array.h" #include "../data/list.h" Symbol* @@ -55,8 +57,20 @@ symbol_delete(Symbol *p_symbol) { list_delete(p_list_token); } break; + case SYM_VARIABLE: + { + Token *p_token = symbol_get_val(p_symbol); + switch (token_get_tt(p_token)) { + case TT_ARRAY: + array_iterate(p_token->p_array, token_delete_cb); + break; + NO_DEFAULT; + } + } + break; NO_DEFAULT; } + free(p_symbol); } diff --git a/src/core/token.c b/src/core/token.c index 1a2aec9..49a9721 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -57,7 +57,6 @@ get_tt(char *c_token) { CHECK("proc") TT_PROC; CHECK("func") TT_FUNC; CHECK("my") TT_MY; - CHECK("arr") TT_ARR; CHECK("!") TT_NOT; CHECK("!=") TT_NEQ; CHECK("=~") TT_RE; @@ -123,7 +122,6 @@ tt_get_name(TokenType tt_cur) { CASE(TT_PROC,"TT_PROC") CASE(TT_FUNC,"TT_FUNC") CASE(TT_MY,"TT_MY") - CASE(TT_ARR,"TT_ARR") CASE(TT_WHILE,"TT_WHILE") CASE(TT_UNTIL,"TT_UNTIL") CASE(TT_NEXT,"TT_NEXT") @@ -248,7 +246,11 @@ Token* token_new_array(int i_size) { Token *p_token = token_new_dummy(); token_set_tt(p_token, TT_ARRAY); - array_resize(p_token->p_array, i_size); + + if (p_token->p_array == NULL) + p_token->p_array = array_new(); + + //array_resize(p_token->p_array, i_size); return (p_token); } @@ -305,10 +307,24 @@ void token_copy_vals(Token *p_token_to, Token *p_token_from) { i_len = strlen(p_token_from->c_val); p_token_to->c_val = calloc(i_len+1, sizeof(char)); strcpy(p_token_to->c_val, p_token_from->c_val); + } else { p_token_to->c_val = NULL; } + if (p_token_from->tt_cur == TT_ARRAY) { + p_token_to->p_array = array_new(); + ArrayIterator *p_iter = arrayiterator_new(p_token_from->p_array); + while (arrayiterator_has_next(p_iter)) { + Token *p_token = arrayiterator_next(p_iter); + token_ref_up(p_token); + array_unshift(p_token_to->p_array, p_token); + } + arrayiterator_delete(p_iter); + } else { + p_token_to->p_array = NULL; + } + p_token_to->tt_cur = p_token_from->tt_cur; p_token_to->i_val = p_token_from->i_val; p_token_to->d_val = p_token_from->d_val; @@ -344,8 +360,10 @@ token_delete(Token *p_token) { if (p_token->c_val) free(p_token->c_val); - if (p_token->p_array) - array_delete(p_token->p_array); + if (p_token->p_array) { + array_iterate(p_token->p_array, token_delete_cb); + array_delete(p_token->p_array); + } free(p_token); } @@ -366,16 +384,27 @@ token_delete(Token *p_token) { void token_print(Token *p_token) { - printf("(id=%05u, line=%05d, pos=%04d, type=%s, val=%s, ival=%d, dval=%f," - " refs=%d)", + printf("(id=%05u, line=%05d, pos=%04d, type=%s", p_token->u_token_id, p_token->i_line_nr, p_token->i_pos_nr, - tt_get_name(p_token->tt_cur), - p_token->c_val, - p_token->i_val, - p_token->d_val, - p_token->i_ref_count); + tt_get_name(p_token->tt_cur)); + + if (IS_ARRAY(p_token)) { + } else { + printf(", val=%s, ival=%d, dval=%f", + p_token->c_val, + p_token->i_val, + p_token->d_val); + } + + printf(", refs=%d)", p_token->i_ref_count); +} + +void +token_print_ln(Token *p_token) { + token_print(p_token); + printf("\n"); } void diff --git a/src/core/token.h b/src/core/token.h index caf4854..af74e98 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -53,6 +53,8 @@ #define IS_ASSIGNABLE(t) (START_ASSIGNABLES < t && t < END_ASSIGNABLES) #define IS_NUMERICAL(t) (START_NUMERICAL < t && t < END_NUMERICAL) #define IS_NOT_NUMERICAL(t) !(IS_NUMERICAL(t)) +#define IS_ARRAY(t) (t->tt_cur == TT_ARRAY) +#define IS_NOT_ARRAY(t) !(IS_ARRAY(t)) #define token_get_filename(t) \ (t->c_filename != NULL ? t->c_filename : "Code string") @@ -86,8 +88,8 @@ typedef enum { TT_INTEGER, TT_DOUBLE, END_NUMERICAL, - TT_STRING, TT_ARRAY, + TT_STRING, END_ASSIGNABLES, TT_IDENT, END_TYPES, @@ -103,7 +105,6 @@ typedef enum { TT_PROC, TT_FUNC, TT_MY, - TT_ARR, TT_WHILE, TT_UNTIL, TT_NEXT, @@ -184,6 +185,7 @@ void* token_copy_cb(void *p_token); char* tt_get_name(TokenType tt_cur); void token_print_cb(void *p_void); void token_print(Token *p_token); +void token_print_ln(Token *p_token); void token_print_val(Token *p_token); TokenType get_tt(char *c_token); diff --git a/src/data/array.c b/src/data/array.c index 2ae4ece..da5bee8 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -41,7 +41,7 @@ array_new() { p_array->i_size = 0; p_array->pp_ae = NULL; - return p_array; + return (p_array); } @@ -92,7 +92,7 @@ array_insert(Array *p_array, int i_index, void *p_val) { void* array_remove(Array *p_array, int i_index) { if (p_array->i_size <= i_index) - return NULL; + return (NULL); ArrayElement *p_ae = p_array->pp_ae[i_index]; void *p_ret = p_ae->p_val; @@ -105,7 +105,7 @@ array_remove(Array *p_array, int i_index) { array_resize(p_array, p_array->i_size - 1); - return p_ret; + return (p_ret); } void @@ -147,17 +147,17 @@ array_resize(Array *p_array, int i_size) { void* array_get(Array *p_array, int i_index) { if (p_array->i_size > i_index) - return p_array->pp_ae[i_index]->p_val; + return (p_array->pp_ae[i_index]->p_val); - return NULL; + return (NULL); } _Bool array_defined(Array *p_array, int i_index) { if (i_index >= p_array->i_size) - return false; + return (false); - return p_array->pp_ae[i_index]->p_val != NULL; + return (p_array->pp_ae[i_index]->p_val != NULL); } void @@ -222,7 +222,7 @@ arrayelement_new(void *p_val) { p_ae->p_val = p_val; - return p_ae; + return (p_ae); } void @@ -235,14 +235,27 @@ arrayelement_delete(ArrayElement *p_ae) { ArrayIterator* arrayiterator_new(Array *p_array) { - if (!p_array) - return NULL; + if (p_array == NULL) + return (NULL); ArrayIterator *p_arrayiterator = malloc(sizeof(ArrayIterator)); p_arrayiterator->p_array = p_array; p_arrayiterator->i_cur_pos = 0; + p_arrayiterator->b_is_reverse = false; + + return (p_arrayiterator); +} + +ArrayIterator* +arrayiterator_new_reverse(Array *p_array) { + ArrayIterator *p_arrayiterator = arrayiterator_new(p_array); + if (p_arrayiterator == NULL) + return (NULL); + + p_arrayiterator->b_is_reverse = true; + p_arrayiterator->i_cur_pos = p_array->i_size; - return p_arrayiterator; + return (p_arrayiterator); } void @@ -253,14 +266,21 @@ arrayiterator_delete(ArrayIterator *p_arrayiterator) { _Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator) { - return p_arrayiterator->i_cur_pos < - array_get_size(p_arrayiterator->p_array); + if (p_arrayiterator->b_is_reverse) + return (p_arrayiterator->i_cur_pos >= 0); + + return (p_arrayiterator->i_cur_pos < + array_get_size(p_arrayiterator->p_array)); } void* arrayiterator_next(ArrayIterator *p_arrayiterator) { if (!arrayiterator_has_next(p_arrayiterator)) - return NULL; + return (NULL); + + if (p_arrayiterator->b_is_reverse) + return (array_get(p_arrayiterator->p_array, + p_arrayiterator->i_cur_pos--)); - return array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++); + return (array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++)); } diff --git a/src/data/array.h b/src/data/array.h index b343521..6170c29 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -58,6 +58,7 @@ typedef struct { typedef struct { Array *p_array; int i_cur_pos; + _Bool b_is_reverse; } ArrayIterator; Array *array_new(); @@ -80,6 +81,7 @@ ArrayElement *arrayelement_new(void *p_val); void arrayelement_delete(ArrayElement *p_ae); ArrayIterator *arrayiterator_new(Array *p_array); +ArrayIterator *arrayiterator_new_reverse(Array *p_array); void arrayiterator_delete(ArrayIterator *p_arrayiterator); _Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator); void *arrayiterator_next(ArrayIterator *p_arrayiterator); diff --git a/src/defines.h b/src/defines.h index 569d20a..8cd1114 100644 --- a/src/defines.h +++ b/src/defines.h @@ -80,6 +80,7 @@ //#define DEBUG_TRACK //#define DEBUG_BLOCK_GET //#define DEBUG_EXPRESSION_GET +//#define DEBUG_ARRAY_GET #ifdef DEBUG_TRACK #define TRACK \ diff --git a/tmp/test.fy b/tmp/test.fy index afe2cec..7e030a5 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,3 +1,12 @@ -my foo = [1, 2.2, "3"]; +#my foo = [1 2 3]; +#assert "TT_INTEGER" == type say integer foo; + +#my bar = [1 2 3]; +#assert "TT_DOUBLE" == type say double bar; + +#my baz = [1 2 3]; +#assert "TT_STRING" == type say string baz; +#say [1 3 5 6]; + diff --git a/tmp/test.out b/tmp/test.out index afe2cec..fd06f6e 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,3 +1,29 @@ +#* +my foo = [1 2 3]; +assert "TT_INTEGER" == type say integer foo; +my bar = [1 2 3]; +assert "TT_DOUBLE" == type say double bar; -my foo = [1, 2.2, "3"]; +my baz = [1 2 3]; +assert "TT_STRING" == type say string baz; +*# +say [1 3 5 6]; + +Token (id=00000, line=00011, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00001, line=00011, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1) +Token (id=00002, line=00011, pos=0007, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (id=00003, line=00011, pos=0009, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) +Token (id=00004, line=00011, pos=0011, type=TT_INTEGER, val=5, ival=5, dval=0.000000, refs=1) +Token (id=00005, line=00011, pos=0013, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1) +Token (id=00006, line=00011, pos=0013, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00007, line=00011, pos=0014, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1) +Token (id=00008, line=00011, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +1 3 5 6 +The garbage collector still has 5 registered items which don't have a zero ref count! +(id=00002, line=00011, pos=0007, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +(id=00003, line=00011, pos=0009, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) +(id=00004, line=00011, pos=0011, type=TT_INTEGER, val=5, ival=5, dval=0.000000, refs=1) +(id=00005, line=00011, pos=0013, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1) +(id=00006, line=00011, pos=0013, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Garbage left: Garbage error (Fype @ ./src/core/garbage.c line 82) -- cgit v1.2.3 From d527f50159f056dc165fa7eaf7bf80425a1e758d Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Oct 2008 20:38:27 +0000 Subject: GC removed, temporaly --- docs/header.txt | 2 +- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- src/build.h | 2 +- src/core/convert.c | 2 +- src/core/function.c | 11 ++---- src/core/garbage.c | 15 +++++-- src/core/interpret.c | 13 +++++-- src/core/scanner.c | 12 ++---- src/core/scanner.h | 1 - src/core/scope.c | 2 +- src/core/symbol.c | 16 ++++---- src/core/token.c | 108 ++++++++++++++++++++++++++++++++++----------------- src/core/token.h | 7 +++- src/data/stack.c | 16 ++++++++ src/data/stack.h | 1 + src/fype.c | 4 +- tmp/test.fy | 6 +++ tmp/test.out | 62 ++++++++++++++++------------- 20 files changed, 181 insertions(+), 105 deletions(-) diff --git a/docs/header.txt b/docs/header.txt index d673a17..651e6e9 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -1,5 +1,5 @@ File: ${FILE} -A simple interpreter +A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org diff --git a/docs/help.txt b/docs/help.txt index 25988ea..0a5fa00 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9322 +Fype v0.1-devel Build 9596 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index f3e5de9..c2427da 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7620 +===> Num of C source lines : 7680 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 325 diff --git a/docs/version.txt b/docs/version.txt index 7595f6e..8869d61 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9322 +Fype v0.1-devel Build 9596 diff --git a/src/build.h b/src/build.h index 80ea007..bd5bc76 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9330 +#define BUILDNR 9596 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index 081e92e..fa1282d 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -136,7 +136,7 @@ convert_to_string(Token *p_token) { p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); strcpy(p_token->c_val, c_tmp); p_token->c_val[i_len] = 0; - array_iterate(p_token->p_array, token_delete_cb); + //array_iterate(p_token->p_array, token_delete_cb); break; default: diff --git a/src/core/function.c b/src/core/function.c index 979454d..fdbf308 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -95,10 +95,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, printf("PROCESS OPERATOR %s %s\n", tt_get_name(tt_op), tt_get_name(tt_op2)); - token_print(p_token_next); - printf("\n"); - token_print(p_token_store); - printf("\n"); + token_print_ln(p_token_next); + token_print_ln(p_token_store); #endif /* DEBUG_FUNCTION_PROCESS */ if (p_token_op2 != NULL) { @@ -527,11 +525,10 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, } #ifdef DEBUG_FUNCTION_PROCESS - token_print(p_token_store); - printf("\n\n"); + token_print_ln(p_token_store); #endif /* DEBUG_FUNCTION_PROCESS */ - token_delete(p_token_next); + //token_delete(p_token_next); } void diff --git a/src/core/garbage.c b/src/core/garbage.c index aba19c4..3820144 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -64,6 +64,12 @@ _garbage_print(_Garbage *p_garbage) { } } +void +_garbage_free(_Garbage *p_garbage) { + (*p_garbage->p_func) (p_garbage->p_2free); + free(p_garbage); +} + void garbage_destroy() { garbage_collect(); @@ -87,17 +93,18 @@ garbage_destroy() { int garbage_collect() { + //printf("GARBAGE_COLLECT\n"); ListIterator *p_iter = listiterator_new(LIST_GARBAGE); List *p_list_garbage_new = list_new(); int i_count = 0; + //printf("size %d\n", list_size(LIST_GARBAGE)); while (listiterator_has_next(p_iter)) { _Garbage *p_garbage = listiterator_next(p_iter); if (p_garbage->p_ref_count == NULL || *p_garbage->p_ref_count <= 0) { - // _garbage_print(p_garbage); - (*p_garbage->p_func) (p_garbage->p_2free); - free(p_garbage); + //_garbage_print(p_garbage); + _garbage_free(p_garbage); ++i_count; } else { @@ -106,9 +113,9 @@ garbage_collect() { } listiterator_delete(p_iter); - list_delete(LIST_GARBAGE); LIST_GARBAGE = p_list_garbage_new; + //printf("GARBAGE_COLLECT_END\n"); return (i_count); } diff --git a/src/core/interpret.c b/src/core/interpret.c index c3f781c..a53f193 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -165,8 +165,13 @@ int _program(Interpret *p_interpret) { _CHECK TRACK - while (_statement(p_interpret) == 1) - garbage_collect(); + int i_count = 0; + while (_statement(p_interpret) == 1) { + if (++i_count == 50) { + garbage_collect(); + i_count = 0; + } + } return (1); } @@ -299,7 +304,7 @@ _block_get(Interpret *p_interpret, List *p_list_block) { int __expression_get(Interpret *p_interpret, List *p_list_expression) { for (;;) { - if (p_interpret->tt == TT_PARANT_CL) + if (p_interpret->tt == TT_PARANT_CL) break; /* for */ list_add_back(p_list_expression, p_interpret->p_token); @@ -950,7 +955,7 @@ _term(Interpret *p_interpret) { if (__array_get(p_interpret, p_token_arr) != 0) _INTERPRET_ERROR("Array syntax error", p_token); - return (1); + return (1); } break; diff --git a/src/core/scanner.c b/src/core/scanner.c index 49026c2..5190175 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -108,8 +108,8 @@ scanner_post_task(Scanner *p_scanner) { if (tt_cur == TT_INTEGER && tt_last[1] == TT_DOT && tt_last[0] == TT_INTEGER) { - token_ref_down(pt_last[0]); - token_ref_down(pt_last[1]); + //token_ref_down(pt_last[0]); + //token_ref_down(pt_last[1]); char *c_2 = token_get_val(p_token); char *c_0 = token_get_val(pt_last[0]); @@ -338,9 +338,9 @@ scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, List *p_list_token = scanner_get_list_token(p_scanner); Token *p_token = token_new(*cc_token, tt_cur, p_scanner->i_current_line_nr, p_scanner->i_current_pos_nr, p_scanner->c_filename); + p_token->b_source_token = true; list_add_back(p_list_token, p_token); - token_ref_up(p_token); *cc_token = malloc(sizeof(char)); (*cc_token)[0] = 0; @@ -361,9 +361,3 @@ scanner_get_tt_cur(char *c_token) { return tt_cur == TT_NONE ? TT_IDENT : tt_cur; } - -void -scanner_cleanup_list_token_cb(void *p_void) { - Token *p_token = p_void; - token_delete(p_token); -} diff --git a/src/core/scanner.h b/src/core/scanner.h index 4626595..c4e15fa 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -65,6 +65,5 @@ void scanner_run(Fype *p_fype); void scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, TokenType tt_cur); TokenType scanner_get_tt_cur(char *c_token); -void scanner_cleanup_list_token_cb(void *p_void); #endif diff --git a/src/core/scope.c b/src/core/scope.c index 1bf8dd2..0c65c1d 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -58,7 +58,7 @@ scope_delete(Scope *p_scope) { void scope_up(Scope *p_scope) { - stack_push(p_scope->p_stack_scopes, hash_new(1024)); + stack_push(p_scope->p_stack_scopes, hash_new(24)); } void diff --git a/src/core/symbol.c b/src/core/symbol.c index 9a98e63..7c8a8f7 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -57,15 +57,15 @@ symbol_delete(Symbol *p_symbol) { list_delete(p_list_token); } break; - case SYM_VARIABLE: + case SYM_VARIABLE: { - Token *p_token = symbol_get_val(p_symbol); - switch (token_get_tt(p_token)) { - case TT_ARRAY: - array_iterate(p_token->p_array, token_delete_cb); - break; - NO_DEFAULT; - } + Token *p_token = symbol_get_val(p_symbol); + switch (token_get_tt(p_token)) { + case TT_ARRAY: + //array_iterate(p_token->p_array, token_delete_cb); + break; + NO_DEFAULT; + } } break; NO_DEFAULT; diff --git a/src/core/token.c b/src/core/token.c index 49a9721..9162c4d 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -181,7 +181,8 @@ tt_get_name(TokenType tt_cur) { } Token* -token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename) { +token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, + char *c_filename) { Token *p_token = token_new_dummy(); p_token->c_val = c_val; @@ -192,6 +193,7 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi p_token->i_pos_nr = i_pos_nr; p_token->c_filename = c_filename; p_token->p_array = NULL; + p_token->b_source_token = false; switch (tt_cur) { case TT_INTEGER: @@ -210,7 +212,7 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi NO_DEFAULT; } - return p_token; + return (p_token); } Token* @@ -271,7 +273,7 @@ token_new_dummy() { p_token->i_pos_nr = -1; p_token->c_filename = NULL; p_token->u_token_id = TOKEN_ID_COUNTER++; - p_token->i_ref_count = 0; + p_token->i_ref_count = 1; /* Register the token in the garbage collector */ garbage_add_token(p_token); @@ -282,7 +284,7 @@ token_new_dummy() { Token* token_new_copy(Token *p_token) { Token *p_token_copy = malloc(sizeof(Token)); - p_token->u_token_id = TOKEN_ID_COUNTER++; + p_token_copy->u_token_id = TOKEN_ID_COUNTER++; if (p_token_copy == NULL) ERROR("Memory alloc error"); @@ -296,12 +298,13 @@ token_new_copy(Token *p_token) { return (p_token_copy); } -void token_copy_vals(Token *p_token_to, Token *p_token_from) { +void +token_copy_vals(Token *p_token_to, Token *p_token_from) { int i_len; // TODO: Check against mem leak - // if (p_token_to->c_val) - // free(p_token_to->c_val); + if (p_token_to->c_val) + free(p_token_to->c_val); if (p_token_from->c_val) { i_len = strlen(p_token_from->c_val); @@ -313,16 +316,16 @@ void token_copy_vals(Token *p_token_to, Token *p_token_from) { } if (p_token_from->tt_cur == TT_ARRAY) { - p_token_to->p_array = array_new(); - ArrayIterator *p_iter = arrayiterator_new(p_token_from->p_array); - while (arrayiterator_has_next(p_iter)) { - Token *p_token = arrayiterator_next(p_iter); - token_ref_up(p_token); - array_unshift(p_token_to->p_array, p_token); - } - arrayiterator_delete(p_iter); + p_token_to->p_array = array_new(); + ArrayIterator *p_iter = arrayiterator_new(p_token_from->p_array); + while (arrayiterator_has_next(p_iter)) { + Token *p_token = arrayiterator_next(p_iter); + token_ref_up(p_token); + array_unshift(p_token_to->p_array, p_token); + } + arrayiterator_delete(p_iter); } else { - p_token_to->p_array = NULL; + p_token_to->p_array = NULL; } p_token_to->tt_cur = p_token_from->tt_cur; @@ -338,6 +341,11 @@ token_delete_cb(void *p_void) { token_delete(p_void); } +void +token_delete_force_cb(void *p_void) { + token_delete_force(p_void); +} + void token_ref_down_cb(void *p_void) { Token *p_token = p_void; @@ -349,42 +357,72 @@ token_copy_cb(void *p_void) { return (token_new_copy(p_void)); } +int +token_ref_down(Token *p_token) { +// if (p_token->i_ref_count > 0) + p_token->i_ref_count--; + + return (p_token->i_ref_count); +} + +void +_token_free(Token *p_token) { + if (p_token->c_val) + free(p_token->c_val); + p_token->c_val = NULL; + + if (p_token->p_array) { + array_iterate(p_token->p_array, token_delete_cb); + array_delete(p_token->p_array); + } + p_token->p_array = NULL; + + free(p_token); +} + void token_delete(Token *p_token) { - if (token_ref_down(p_token) <= 0) { - if (p_token->i_ref_count == 0) { + if (IS_SOURCE_TOKEN(p_token)) + return; + + token_ref_down(p_token); + + if (p_token->i_ref_count == 0) { #ifdef DEBUG_TOKEN_REFCOUNT - printf("Token refcount debug: Token ref count is 0 == %d\n", - p_token->i_ref_count); + printf("Token refcount debug: Token ref count is 0 == %d\n", + p_token->i_ref_count); + token_print_ln(p_token); #endif /* DEBUG_TOKEN_REFCOUNT */ - if (p_token->c_val) - free(p_token->c_val); - if (p_token->p_array) { - array_iterate(p_token->p_array, token_delete_cb); - array_delete(p_token->p_array); - } + _token_free(p_token); - free(p_token); - } + } #ifdef DEBUG_TOKEN_REFCOUNT - else { - printf("Token refcount debug: Token ref count is 0 > %d\n", - p_token->i_ref_count); - } -#endif /* DEBUG_TOKEN_REFCOUNT */ + else if (p_token->i_ref_count < 0) { + token_print_ln(p_token); + printf("Token ref count is 0 > %d\n", + p_token->i_ref_count); } -#ifdef DEBUG_TOKEN_REFCOUNT else { printf("Token refcount debug: Token ref count is 0 < %d\n", p_token->i_ref_count); + token_print_ln(p_token); } #endif /* DEBUG_TOKEN_REFCOUNT */ } +void +token_delete_force(Token *p_token) { + token_ref_down(p_token); + //printf("FORCE DEL "); + //token_print_ln(p_token); + _token_free(p_token); +} + void token_print(Token *p_token) { - printf("(id=%05u, line=%05d, pos=%04d, type=%s", + printf("(org=%d, id=%05u, line=%05d, pos=%04d, type=%s", + (int) p_token->b_source_token, p_token->u_token_id, p_token->i_line_nr, p_token->i_pos_nr, diff --git a/src/core/token.h b/src/core/token.h index af74e98..e683e01 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -55,6 +55,8 @@ #define IS_NOT_NUMERICAL(t) !(IS_NUMERICAL(t)) #define IS_ARRAY(t) (t->tt_cur == TT_ARRAY) #define IS_NOT_ARRAY(t) !(IS_ARRAY(t)) +#define IS_SOURCE_TOKEN(t) (t->b_source_token == true) +#define IS_NOT_SOURCE_TOKEN(t) (t->b_source_token == false) #define token_get_filename(t) \ (t->c_filename != NULL ? t->c_filename : "Code string") @@ -72,7 +74,6 @@ #define token_get_posnr(t) t->i_pos_nr #define token_get_linenr(t) t->i_line_nr #define token_ref_up(t) ++t->i_ref_count -#define token_ref_down(t) --t->i_ref_count typedef enum { // Diverse @@ -166,6 +167,7 @@ typedef struct { char *c_filename; unsigned int u_token_id; int i_ref_count; + _Bool b_source_token; Array *p_array; } Token; @@ -179,6 +181,8 @@ Token* token_new_(char *c_val, TokenType tt_cur, char *c_filename); Token* token_new_dummy(); void token_copy_vals(Token *p_token_to, Token *p_token_from); void token_delete(Token *p_token); +void token_delete_force(Token *p_token); +void token_delete_force_cb(void *p_token); void token_delete_cb(void *p_token); void token_ref_down_cb(void *p_token); void* token_copy_cb(void *p_token); @@ -187,6 +191,7 @@ void token_print_cb(void *p_void); void token_print(Token *p_token); void token_print_ln(Token *p_token); void token_print_val(Token *p_token); +int token_ref_down(Token *p_token); TokenType get_tt(char *c_token); #endif diff --git a/src/data/stack.c b/src/data/stack.c index 9afb9b4..778e41e 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -61,6 +61,22 @@ stack_empty(Stack *p_stack) { return (p_stack->i_size == 0); } +void +stack_debug(Stack *p_stack, void *p_val) { + printf("bPUSH %d %d\n", stack_size(p_stack), (int)p_stack); + StackElem *p_elem = stackelem_new(); + + p_elem->p_val = p_val; + p_elem->p_next = p_stack->p_first; + p_stack->p_first = p_elem; + + if (p_stack->p_last == NULL) + p_stack->p_last = p_stack->p_first; + + ++p_stack->i_size; + printf("aPUSH %d %d\n", stack_size(p_stack), (int)p_stack); +} + void stack_push(Stack *p_stack, void *p_val) { StackElem *p_elem = stackelem_new(); diff --git a/src/data/stack.h b/src/data/stack.h index 4774cef..721ed31 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -60,6 +60,7 @@ StackElem *stackelem_new(); _Bool stack_empty(Stack *p_stack); void stack_iterate(Stack *p_stack, void (*func)(void *p_void)); void stack_push(Stack *p_stack, void *p_val); +void stack_debug(Stack *p_stack, void *p_val); void *stack_pop(Stack *p_stack); void stack_clear(Stack *p_stack); void stack_delete(Stack *p_stack); diff --git a/src/fype.c b/src/fype.c index af61c1d..1b6d975 100644 --- a/src/fype.c +++ b/src/fype.c @@ -61,9 +61,7 @@ fype_delete(Fype *p_fype) { hash_iterate(p_fype->p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_fype->p_hash_syms); - //list_iterate(p_fype->p_list_token, token_print_cb); - list_iterate(p_fype->p_list_token, token_ref_down_cb); - //list_iterate(p_fype->p_list_token, token_print_cb); + list_iterate(p_fype->p_list_token, token_delete_force_cb); list_delete(p_fype->p_list_token); if (p_fype->c_basename) diff --git a/tmp/test.fy b/tmp/test.fy index 7e030a5..adb8384 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,12 +1,18 @@ #my foo = [1 2 3]; +# Prints num of elements in foo #assert "TT_INTEGER" == type say integer foo; #my bar = [1 2 3]; +# Prints num of elements in bar #assert "TT_DOUBLE" == type say double bar; #my baz = [1 2 3]; +# Prints num of elements in baz #assert "TT_STRING" == type say string baz; + +# Prints "1 3 5 6\n" #say [1 3 5 6]; +my foo = 2 * 3 + 1.2; diff --git a/tmp/test.out b/tmp/test.out index fd06f6e..4b4fdc1 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,29 +1,39 @@ -#* -my foo = [1 2 3]; -assert "TT_INTEGER" == type say integer foo; -my bar = [1 2 3]; -assert "TT_DOUBLE" == type say double bar; -my baz = [1 2 3]; -assert "TT_STRING" == type say string baz; -*# -say [1 3 5 6]; +#my foo = [1 2 3]; +# Prints num of elements in foo +#assert "TT_INTEGER" == type say integer foo; -Token (id=00000, line=00011, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (id=00001, line=00011, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1) -Token (id=00002, line=00011, pos=0007, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (id=00003, line=00011, pos=0009, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) -Token (id=00004, line=00011, pos=0011, type=TT_INTEGER, val=5, ival=5, dval=0.000000, refs=1) -Token (id=00005, line=00011, pos=0013, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1) -Token (id=00006, line=00011, pos=0013, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (id=00007, line=00011, pos=0014, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1) -Token (id=00008, line=00011, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -1 3 5 6 -The garbage collector still has 5 registered items which don't have a zero ref count! -(id=00002, line=00011, pos=0007, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -(id=00003, line=00011, pos=0009, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) -(id=00004, line=00011, pos=0011, type=TT_INTEGER, val=5, ival=5, dval=0.000000, refs=1) -(id=00005, line=00011, pos=0013, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1) -(id=00006, line=00011, pos=0013, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Garbage left: Garbage error (Fype @ ./src/core/garbage.c line 82) +#my bar = [1 2 3]; +# Prints num of elements in bar +#assert "TT_DOUBLE" == type say double bar; + +#my baz = [1 2 3]; +# Prints num of elements in baz +#assert "TT_STRING" == type say string baz; + +# Prints "1 3 5 6\n" +#say [1 3 5 6]; + +my foo = 2 * 3 + 1.2; +Token (org=1, id=00000, line=00018, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00001, line=00018, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00002, line=00018, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00003, line=00018, pos=0011, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1) +Token (org=1, id=00004, line=00018, pos=0013, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00005, line=00018, pos=0015, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) +Token (org=1, id=00006, line=00018, pos=0017, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00009, line=00018, pos=0021, type=TT_DOUBLE, val=1.2, ival=2, dval=1.200000, refs=1) +Token (org=1, id=00010, line=00018, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +(org=0, id=00011, line=00018, pos=0015, type=TT_INTEGER, val=3, ival=6, dval=0.000000, refs=-1) +Token ref count is 0 > -1 +(org=0, id=00012, line=00018, pos=0011, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=-1) +Token ref count is 0 > -1 +(org=0, id=00013, line=00018, pos=0021, type=TT_INTEGER, val=1.2, ival=4, dval=7.200000, refs=-1) +Token ref count is 0 > -1 +(org=0, id=00014, line=00018, pos=0015, type=TT_DOUBLE, val=3, ival=6, dval=6.000000, refs=-1) +Token ref count is 0 > -1 +The garbage collector still has 2 registered items which don't have a zero ref count! +(org=1, id=00007, line=00018, pos=0019, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +(org=1, id=00008, line=00018, pos=0020, type=TT_DOT, val=., ival=0, dval=0.000000, refs=1) +Garbage left: Garbage error (Fype @ ./src/core/garbage.c line 88) -- cgit v1.2.3 From c25ba0d8ee9e4e6a0432fba2e8606c7e0a35d1cd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Oct 2008 21:10:31 +0000 Subject: added a scope debug flag --- docs/stats.txt | 4 ++-- examples/conditionals.fy | 2 -- src/build.h | 2 +- src/core/scope.c | 31 +++++++++++++++++++++++++++++++ src/defines.h | 2 ++ 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/docs/stats.txt b/docs/stats.txt index c2427da..d390ccd 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7680 +===> Num of C source lines : 7713 ===> Num of Fype source examples : 13 -===> Num of Fype source lines : 325 +===> Num of Fype source lines : 323 diff --git a/examples/conditionals.fy b/examples/conditionals.fy index 1260ae2..2dc027f 100644 --- a/examples/conditionals.fy +++ b/examples/conditionals.fy @@ -37,5 +37,3 @@ assert 1 == (put 1 >= 1); assert 1 == (put 1 >= 0); assert 0 == (put 0 >= 1); assert 1 == (say 0 >= 0); - - diff --git a/src/build.h b/src/build.h index bd5bc76..df9738e 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9596 +#define BUILDNR 9607 #define OS_FREEBSD #endif diff --git a/src/core/scope.c b/src/core/scope.c index 0c65c1d..1eaac8f 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -36,6 +36,9 @@ #include "scope.h" #include "symbol.h" +#define _SCOPE_ERROR(m) \ + ERROR("%s: Scope error", m) + Scope* scope_new(Hash *p_hash_syms) { Scope *p_scope = malloc(sizeof(Scope)); @@ -58,14 +61,42 @@ scope_delete(Scope *p_scope) { void scope_up(Scope *p_scope) { +#ifdef EXTRA_CHECKS + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#elif DEBUG_SCOPE_UPDOWN + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#endif stack_push(p_scope->p_stack_scopes, hash_new(24)); +#ifdef DEBUG_SCOPE_UPDOWN + printf("SCOPE UPPED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); +#endif /* DEBUG_SCOPE_UPDOWN */ +#ifdef EXTRA_CHECKS + if (i_before >= (int) stack_size(p_scope->p_stack_scopes)) + _SCOPE_ERROR("Scope should be higher"); +#endif /* EXTRA_CHECKS */ } void scope_down(Scope *p_scope) { +#ifdef EXTRA_CHECKS + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#elif DEBUG_SCOPE_UPDOWN + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#endif Hash *p_hash_syms = stack_pop(p_scope->p_stack_scopes); hash_iterate(p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_hash_syms); +#ifdef DEBUG_SCOPE_UPDOWN + printf("SCOPE DOWNED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); +#endif /* DEBUG_SCOPE_UPDOWN */ +#ifdef EXTRA_CHECKS + if (i_before <= (int) stack_size(p_scope->p_stack_scopes)) + _SCOPE_ERROR("Scope should be lower"); +#endif /* EXTRA_CHECKS */ } static Hash* diff --git a/src/defines.h b/src/defines.h index 8cd1114..9842c4f 100644 --- a/src/defines.h +++ b/src/defines.h @@ -75,6 +75,8 @@ exit(1); } #define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n"); +#define EXTRA_CHECKS +#define DEBUG_SCOPE_UPDOWN //#define DEBUG_TOKEN_REFCOUNT //#define DEBUG_FUNCTION_PROCESS //#define DEBUG_TRACK -- cgit v1.2.3 From a35ace22b374005c65bda8302761d24f75280170 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Oct 2008 22:05:16 +0000 Subject: run astyle still lots of debugging to do. --- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- src/build.h | 2 +- src/core/interpret.c | 10 ++--- src/core/scope.c | 22 +++++----- src/core/token.c | 6 +-- src/data/hash.c | 4 +- src/data/stack.c | 9 ++-- src/data/stack.h | 2 +- src/defines.h | 2 +- tmp/test.fy | 10 ++++- tmp/test.out | 119 +++++++++++++++++++++++++++++++++++++++++---------- 13 files changed, 137 insertions(+), 55 deletions(-) diff --git a/docs/help.txt b/docs/help.txt index 0a5fa00..66881ef 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9596 +Fype v0.1-devel Build 9640 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index d390ccd..207f2b8 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7713 +===> Num of C source lines : 7714 ===> Num of Fype source examples : 13 ===> Num of Fype source lines : 323 diff --git a/docs/version.txt b/docs/version.txt index 8869d61..549fead 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9596 +Fype v0.1-devel Build 9640 diff --git a/src/build.h b/src/build.h index df9738e..cb7e720 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9607 +#define BUILDNR 9654 #define OS_FREEBSD #endif diff --git a/src/core/interpret.c b/src/core/interpret.c index a53f193..86d5a36 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -104,7 +104,7 @@ interpret_new(List *p_list_token, Hash *p_hash_syms) { void interpret_delete(Interpret *p_interpret) { - if (!p_interpret) + if (p_interpret == NULL) return; if (p_interpret->b_scope_delete) @@ -523,16 +523,16 @@ _control(Interpret *p_interpret) { switch (tt) { case TT_IF: if (convert_to_integer_get(p_token_top)) { - scope_up(p_interpret->p_scope); + //scope_up(p_interpret->p_scope); ret = interpret_subprocess(p_interpret, p_list_block); - scope_down(p_interpret->p_scope); + //scope_down(p_interpret->p_scope); } break; case TT_IFNOT: if (!convert_to_integer_get(p_token_top)) { - scope_up(p_interpret->p_scope); + //scope_up(p_interpret->p_scope); ret = interpret_subprocess(p_interpret, p_list_block); - scope_down(p_interpret->p_scope); + //scope_down(p_interpret->p_scope); } break; NO_DEFAULT; diff --git a/src/core/scope.c b/src/core/scope.c index 1eaac8f..ecf5933 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -61,41 +61,41 @@ scope_delete(Scope *p_scope) { void scope_up(Scope *p_scope) { -#ifdef EXTRA_CHECKS +#ifdef EXTRA_CHECKS int i_before = (int) stack_size(p_scope->p_stack_scopes); #elif DEBUG_SCOPE_UPDOWN int i_before = (int) stack_size(p_scope->p_stack_scopes); #endif stack_push(p_scope->p_stack_scopes, hash_new(24)); #ifdef DEBUG_SCOPE_UPDOWN - printf("SCOPE UPPED %d => %d\n", - i_before, - (int) stack_size(p_scope->p_stack_scopes)); + printf("SCOPE UPPED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); #endif /* DEBUG_SCOPE_UPDOWN */ #ifdef EXTRA_CHECKS if (i_before >= (int) stack_size(p_scope->p_stack_scopes)) - _SCOPE_ERROR("Scope should be higher"); + _SCOPE_ERROR("Scope should be higher"); #endif /* EXTRA_CHECKS */ } void scope_down(Scope *p_scope) { -#ifdef EXTRA_CHECKS +#ifdef EXTRA_CHECKS int i_before = (int) stack_size(p_scope->p_stack_scopes); #elif DEBUG_SCOPE_UPDOWN int i_before = (int) stack_size(p_scope->p_stack_scopes); -#endif +#endif Hash *p_hash_syms = stack_pop(p_scope->p_stack_scopes); hash_iterate(p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_hash_syms); #ifdef DEBUG_SCOPE_UPDOWN - printf("SCOPE DOWNED %d => %d\n", - i_before, - (int) stack_size(p_scope->p_stack_scopes)); + printf("SCOPE DOWNED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); #endif /* DEBUG_SCOPE_UPDOWN */ #ifdef EXTRA_CHECKS if (i_before <= (int) stack_size(p_scope->p_stack_scopes)) - _SCOPE_ERROR("Scope should be lower"); + _SCOPE_ERROR("Scope should be lower"); #endif /* EXTRA_CHECKS */ } diff --git a/src/core/token.c b/src/core/token.c index 9162c4d..4bed0e0 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -396,10 +396,10 @@ token_delete(Token *p_token) { _token_free(p_token); - } + } #ifdef DEBUG_TOKEN_REFCOUNT - else if (p_token->i_ref_count < 0) { - token_print_ln(p_token); + else if (p_token->i_ref_count < 0) { + token_print_ln(p_token); printf("Token ref count is 0 > %d\n", p_token->i_ref_count); } diff --git a/src/data/hash.c b/src/data/hash.c index 5555eb1..d3f7634 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -44,13 +44,13 @@ hash_new(unsigned i_size) { p_hash->i_size = i_size; p_hash->i_cur_size = 0; - p_hash->p_elems = (HashElem *) calloc(i_size, sizeof(HashElem)); + p_hash->p_elems = (HashElem *) calloc((int)i_size, sizeof(HashElem)); /*Set all positions as "free" */ for (int i = 0; i < i_size; ++i) p_hash->p_elems[i].flag = 'f'; - return p_hash; + return (p_hash); } void diff --git a/src/data/stack.c b/src/data/stack.c index 778e41e..0f5f58e 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -63,7 +63,7 @@ stack_empty(Stack *p_stack) { void stack_debug(Stack *p_stack, void *p_val) { - printf("bPUSH %d %d\n", stack_size(p_stack), (int)p_stack); + printf("bPUSH %d %d\n", stack_size(p_stack), (int)p_stack); StackElem *p_elem = stackelem_new(); p_elem->p_val = p_val; @@ -74,13 +74,12 @@ stack_debug(Stack *p_stack, void *p_val) { p_stack->p_last = p_stack->p_first; ++p_stack->i_size; - printf("aPUSH %d %d\n", stack_size(p_stack), (int)p_stack); + printf("aPUSH %d %d\n", stack_size(p_stack), (int)p_stack); } -void +unsigned stack_push(Stack *p_stack, void *p_val) { StackElem *p_elem = stackelem_new(); - p_elem->p_val = p_val; p_elem->p_next = p_stack->p_first; p_stack->p_first = p_elem; @@ -88,7 +87,7 @@ stack_push(Stack *p_stack, void *p_val) { if (p_stack->p_last == NULL) p_stack->p_last = p_stack->p_first; - ++p_stack->i_size; + return (++p_stack->i_size); } void* diff --git a/src/data/stack.h b/src/data/stack.h index 721ed31..e9fafea 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -59,7 +59,7 @@ Stack *stack_new(); StackElem *stackelem_new(); _Bool stack_empty(Stack *p_stack); void stack_iterate(Stack *p_stack, void (*func)(void *p_void)); -void stack_push(Stack *p_stack, void *p_val); +unsigned stack_push(Stack *p_stack, void *p_val); void stack_debug(Stack *p_stack, void *p_val); void *stack_pop(Stack *p_stack); void stack_clear(Stack *p_stack); diff --git a/src/defines.h b/src/defines.h index 9842c4f..29df2c2 100644 --- a/src/defines.h +++ b/src/defines.h @@ -79,7 +79,7 @@ #define DEBUG_SCOPE_UPDOWN //#define DEBUG_TOKEN_REFCOUNT //#define DEBUG_FUNCTION_PROCESS -//#define DEBUG_TRACK +#define DEBUG_TRACK //#define DEBUG_BLOCK_GET //#define DEBUG_EXPRESSION_GET //#define DEBUG_ARRAY_GET diff --git a/tmp/test.fy b/tmp/test.fy index adb8384..da59a2a 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,4 +1,12 @@ +my foo = 1; + +if 1 { + say foo; +} + +say 1 + 1; + #my foo = [1 2 3]; # Prints num of elements in foo @@ -15,4 +23,4 @@ # Prints "1 3 5 6\n" #say [1 3 5 6]; -my foo = 2 * 3 + 1.2; +#my foo = 2 * 3 + 1.2; diff --git a/tmp/test.out b/tmp/test.out index 4b4fdc1..9028487 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,4 +1,12 @@ +my foo = 1; + +if 1 { + say foo; +} + +say 1 + 1; + #my foo = [1 2 3]; # Prints num of elements in foo @@ -15,25 +23,92 @@ # Prints "1 3 5 6\n" #say [1 3 5 6]; -my foo = 2 * 3 + 1.2; -Token (org=1, id=00000, line=00018, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00001, line=00018, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00002, line=00018, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00003, line=00018, pos=0011, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1) -Token (org=1, id=00004, line=00018, pos=0013, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00005, line=00018, pos=0015, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1) -Token (org=1, id=00006, line=00018, pos=0017, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00009, line=00018, pos=0021, type=TT_DOUBLE, val=1.2, ival=2, dval=1.200000, refs=1) -Token (org=1, id=00010, line=00018, pos=0022, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -(org=0, id=00011, line=00018, pos=0015, type=TT_INTEGER, val=3, ival=6, dval=0.000000, refs=-1) -Token ref count is 0 > -1 -(org=0, id=00012, line=00018, pos=0011, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=-1) -Token ref count is 0 > -1 -(org=0, id=00013, line=00018, pos=0021, type=TT_INTEGER, val=1.2, ival=4, dval=7.200000, refs=-1) -Token ref count is 0 > -1 -(org=0, id=00014, line=00018, pos=0015, type=TT_DOUBLE, val=3, ival=6, dval=6.000000, refs=-1) -Token ref count is 0 > -1 -The garbage collector still has 2 registered items which don't have a zero ref count! -(org=1, id=00007, line=00018, pos=0019, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -(org=1, id=00008, line=00018, pos=0020, type=TT_DOT, val=., ival=0, dval=0.000000, refs=1) -Garbage left: Garbage error (Fype @ ./src/core/garbage.c line 88) +#my foo = 2 * 3 + 1.2; +Token (org=1, id=00000, line=00002, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00001, line=00002, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00002, line=00002, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00003, line=00002, pos=0011, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (org=1, id=00004, line=00002, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00005, line=00004, pos=0003, type=TT_IF, val=if, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00006, line=00004, pos=0005, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (org=1, id=00007, line=00004, pos=0007, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00008, line=00005, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00009, line=00005, pos=0009, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00010, line=00005, pos=0010, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00011, line=00006, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00012, line=00008, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00013, line=00008, pos=0006, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (org=1, id=00014, line=00008, pos=0008, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) +Token (org=1, id=00015, line=00008, pos=0010, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (org=1, id=00016, line=00008, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +DEBUG(Track: ./src/core/interpret.c:_program:166) +DEBUG(Token: my) +DEBUG(Track: ./src/core/interpret.c:_statement:448) +DEBUG(Token: my) +DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) +DEBUG(Token: my) +DEBUG(Track: ./src/core/interpret.c:_func_decl:414) +DEBUG(Token: my) +DEBUG(Track: ./src/core/interpret.c:_var_decl:181) +DEBUG(Token: my) +DEBUG(Track: ./src/core/interpret.c:_var_assign:216) +DEBUG(Token: foo) +DEBUG(Track: ./src/core/interpret.c:_compare:640) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_sum:691) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_product:742) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_product2:780) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_term:814) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_var_list:260) +DEBUG(Token: ;) +DEBUG(Track: ./src/core/interpret.c:_statement:448) +DEBUG(Token: if) +DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) +DEBUG(Token: if) +DEBUG(Track: ./src/core/interpret.c:_func_decl:414) +DEBUG(Token: if) +DEBUG(Track: ./src/core/interpret.c:_var_decl:181) +DEBUG(Token: if) +DEBUG(Track: ./src/core/interpret.c:_control:507) +DEBUG(Token: if) +DEBUG(Track: ./src/core/interpret.c:_compare:640) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_sum:691) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_product:742) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_product2:780) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_term:814) +DEBUG(Token: 1) +DEBUG(Track: ./src/core/interpret.c:_program:166) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_statement:448) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_func_decl:414) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_var_decl:181) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_control:507) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_expression:483) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_compare:640) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_sum:691) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_product:742) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_product2:780) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_term:814) +DEBUG(Token: say) +DEBUG(Track: ./src/core/interpret.c:_compare:640) +DEBUG(Token: foo) +DEBUG(Track: ./src/core/ \ No newline at end of file -- cgit v1.2.3 From cb1450b796eff3c8830616e2e9a3d83d4dfb4900 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 18 Oct 2008 22:47:31 +0000 Subject: backdowngrade --- Makefile | 2 +- README | 392 ++++++++++++++++++++++------------------------ docs/header.txt | 2 +- docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6302 -> 6105 bytes docs/pod/fype.html | 191 ++++++++++------------ docs/pod/fype.man | 157 ++++++++----------- docs/pod/fype.pod | 142 +++++++---------- docs/pod/fype.tex | 154 ++++++++---------- docs/pod/fype.txt | 392 ++++++++++++++++++++++------------------------ docs/stats.txt | 4 +- docs/version.txt | 2 +- examples/all-examples.txt | 335 +++++++++++++++++++++++++++++++++++++++ examples/conditionals.fy | 2 + examples/types.fy | 4 - fype | Bin 0 -> 47628 bytes src/build.h | 2 +- src/core/convert.c | 23 --- src/core/function.c | 97 ++++-------- src/core/garbage.c | 15 +- src/core/interpret.c | 84 +++------- src/core/scanner.c | 12 +- src/core/scanner.h | 1 + src/core/scope.c | 33 +--- src/core/symbol.c | 14 -- src/core/token.c | 133 ++++------------ src/core/token.h | 13 +- src/data/array.c | 50 ++---- src/data/array.h | 2 - src/data/hash.c | 4 +- src/data/stack.c | 17 +- src/data/stack.h | 3 +- src/defines.h | 5 +- src/fype.c | 4 +- tags | 289 ++++++++++++++++++++++++++++++++++ tmp/test.fy | 25 +-- tmp/test.out | 113 +------------ 37 files changed, 1404 insertions(+), 1316 deletions(-) create mode 100644 examples/all-examples.txt create mode 100755 fype create mode 100644 tags diff --git a/Makefile b/Makefile index 719200c..5624b2e 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -DEBUG=-g3 -ggdb3 +#DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt diff --git a/README b/README index b6f6969..66a9695 100644 --- a/README +++ b/README @@ -75,6 +75,42 @@ GETTING STARTED See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. +DATA TYPES + Fype uses auto type conversion. However, if you want to know what's + going on you may take a look at the provided basic datatypes. + + The basic data types + *integer* + Specifies an integer number + + *double* + Specifies a double number + + *string* + Specifies a string + + *number* + May be an integer or a double number + + *any* + May be of any type above + + *void* + No type + + *identifier* + It's a variable name or a procedure name or a function name + + Explicit type conversions + (*integer*) integer *any* + Converts any type to an integer + + (*double*) double *any* + Converts any type to a double + + (*string*) string *any* + Converts any type to a string + SYNTAX Comments Text from a # character until the end of the current line is considered @@ -90,8 +126,8 @@ SYNTAX say foo; exit foo - bar; - Parenthesis - All parenthesis of function calls are optional. They help to make the + Paranthesis + All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. @@ -139,270 +175,216 @@ SYNTAX Runs the statements as long as the the expression evaluates to a false value. -DATA TYPES - Fype uses auto type conversion. However, if you want to know what's - going on you may take a look at the provided basic datatypes. - - The basic data types - *integer* - (Internal name TT_INTEGER) - - *double* - (Internal name TT_DOUBLE) - - *string* - (Internal name TT_STRING) - - *array* - (Internal name TT_ARRAY) - - *number* - May be an integer or a double number - - *any* - May be of any type above - - *void* - No type - - *identifier* - It's a variable name or a procedure name or a function name - - Explicit type conversions - The data types inside the brackets are only showing the return types of - each function. - - (*integer*) integer *any* - Converts any type to an integer. - - (*double*) double *any* - Converts any type to a double. - - (*string*) string *any* - Converts any type to a string. - - (*array*) array *any* - Converts any type to an array. This function is not yet implemented. - - More functions for data types - (*string*) type *any* - Returns the name of the current type. Examples: - - my foo = 1; - put type foo; # Prints "TT_INTEGER" - put type 1.2; # Prints "TT_DOUBLE" - VARIABLES - Variables can be defined with the my keyword. If you don't assign a - value during declaration, then it's using the default integer value - 0. Variables may be changed during program runtime. Variables may be - deleted using the undef keyword! Example of defining variables: + Variables can be defined with the my keyword. If you don't assign a + value during declaration, then it's using the default integer value 0. + Variables may be changed during program runtime. Variables may be + deleted using the undef keyword! Example of defining variables: - my foo = 1 + 2; - say foo; + my foo = 1 + 2; + say foo; - my bar = 12, baz = foo; - say 1 + bar; - say bar; + my bar = 12, baz = foo; + say 1 + bar; + say bar; - my baz; - say baz; # Will print out 0 + my baz; + say baz; # Will print out 0 - You may use the defined keyword to check if an identifier has been - defined or not. + You may use the defined keyword to check if an identifier has been + defined or not. - ifnot defined foo { - say "No foo yet defined"; - } + ifnot defined foo { + say "No foo yet defined"; + } - my foo = 1; + my foo = 1; - if defined foo { - put "foo is defined and has the value "; - say foo; - } + if defined foo { + put "foo is defined and has the value "; + say foo; + } BUILT IN FUNCTIONS - In Fype, operators are built in functions as well. The difference - is, that they may be written in infix notation instead in front of - the arguments. The types inside the () specify the return types. + In Fype, operators are built in functions as well. The difference is, + that they may be written in infix notation instead in front of the + arguments. The types inside the () specify the return types. Math - (*any*) *any* + *any* - Special string behavior: A string will get auto convertet into - an *integer*. + (*any*) *any* + *any* + Special string behavior: A string will get auto convertet into an + *integer*. - (*any*) *any* - *any* - Special string behavior: A string will get auto convertet into - an *integer*. + (*any*) *any* - *any* + Special string behavior: A string will get auto convertet into an + *integer*. - (*any*) *any* * *any* - Special string behavior: A string will get auto convertet into - an *integer*. + (*any*) *any* * *any* + Special string behavior: A string will get auto convertet into an + *integer*. - (*any*) *any* / *any* - Special string behavior: A string will get auto convertet into - an *integer*. + (*any*) *any* / *any* + Special string behavior: A string will get auto convertet into an + *integer*. Conditional - (*integer*) *any* == *any* - (*integer*) *any* != *any* - (*integer*) *any* <= *any* - (*integer*) *any* >= *any* - (*integer*) *any* < *any* - (*integer*) *any* > *any* - (*integer*) not *any* + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + (*integer*) not *any* Definedness - (*integer*) defined *identifier* - Returns 1 if *identifier* has been defined. Returns 0 else. + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. - (*integer*) undef *identifier* - Tries to undefine/delete the *identifier*. Returns 1 if success, - otherwise 0 is returned. + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. Bitwise - (*integer*) *any* :< *any* - (*integer*) *any* :> *any* - (*integer*) *any* and *any* - (*integer*) *any* or *any* - (*integer*) *any* xor *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric - (*number*) neg *number* - This function returns the negative value of *any* + (*number*) neg *number* + This function returns the negative value of *any* - (*integer*) no [*integer*] - This function returns 1 if the argument is 0, otherwise it will - return 0! If no argument is given, then 0 is returned! + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! - (*integer*) yes [*integer*] - This function always returns 1. The parameter is optional. + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. - # Prints out 1, because foo is not defined - if yes { say no defined foo; } + # Prints out 1, because foo is not defined + if yes { say no defined foo; } System - (*void*) end - Exits the program with the exit status of 0 + (*void*) end + Exits the program with the exit status of 0 - (*void*) exit *integer* - Exits the program with the specified exit status + (*void*) exit *integer* + Exits the program with the specified exit status - (*integer*) fork - Fork forks a subprocess. It returns 0 for the child process and - the pid of the child process otherwise! Example: + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and the + pid of the child process otherwise! Example: - my pid = fork; + my pid = fork; - if pid { - put "I am the parent process; child has the pid "; - say pid; + if pid { + put "I am the parent process; child has the pid "; + say pid; - } ifnot pid { - say "I am the child process"; - } + } ifnot pid { + say "I am the child process"; + } - (*integer*) gc - Executes the garbage collector and returns the number of items - freed! You may wonder why most of the time it will return a - value of 0! Fype tries to free not needed memory asap. This may - change in future versions in order to gain faster execution of - scripts! + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a value of + 0! Fype tries to free not needed memory asap. This may change in + future versions in order to gain faster execution of scripts! I/O - (*any*) put *any* - Prints out the argument + (*any*) put *any* + Prints out the argument - (*any*) say *any* - Same as put, but also includes an ending newline + (*any*) say *any* + Same as put, but also includes an ending newline - (*void*) ln - Just prints a newline + (*void*) ln + Just prints a newline SELF DEFINING PROCEDURES AND FUNCTIONS Procedures - A procedure can be defined with the proc keyword and deleted with - the undef keyword. A procedure does not return any value and does - not support parameter passing. It's using already defined variables - (e.g. global variables). A procedure does not have its own - namespace. It's using the calling namespace. It is possible to - define new variabes inside of a procedure in the current namespace. - - proc foo { - say 1 + a * 3 + b; - my c = 6; - } + A procedure can be defined with the proc keyword and deleted with the + undef keyword. A procedure does not return any value and does not + support parameter passing. It's using already defined variables (e.g. + global variables). A procedure does not have its own namespace. It's + using the calling namespace. It is possible to define new variabes + inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Print out "6\n"; + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; Nested procedures - It's possible to define procedures inside of procedures. Since - procedures don't have its own scope, nested procedures will be - available to the current scope as soon as the main procedure has run - the first time. You may use the defined keyword in order to check if - a procedure has been defined or not. - - proc foo { - say "I am foo"; - - undef bar; - proc bar { - say "I am bar"; - } - } + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be available + to the current scope as soon as the main procedure has run the first + time. You may use the defined keyword in order to check if a procedure + has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } - # Here bar would produce an error because - # the proc is not yet defined! - # bar; + # Here bar would produce an error because + # the proc is not yet defined! + # bar; - foo; # Here the procedure foo will define the procedure bar! - bar; # Now the procedure bar is defined! - foo; # Here the procedure foo will redefine bar again! + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! Functions - A function should be defined with the func keyword and deleted with - the undef keyword. Function not yet return values (will be changed - in future versions) and supports not yet parameter passing (will be - changed in future versions). It's using local (lexical scoped) - variables. If a certain variable does not exist It's using already - defined variables (e.g. one scope above). - - func foo { - say 1 + a * 3 + b; - my c = 6; - } + A function should be defined with the func keyword and deleted with the + undef keyword. Function not yet return values (will be changed in future + versions) and supports not yet parameter passing (will be changed in + future versions). It's using local (lexical scoped) variables. If a + certain variable does not exist It's using already defined variables + (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Will produce an error, because c is out of scoped! + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! Nested functions - Nested functions work the same way the nested procedures work, with - the exception that nested functions will not be available any more - after the function has been left! + Nested functions work the same way the nested procedures work, with the + exception that nested functions will not be available any more after the + function has been left! - func foo { - func bar { - say "Hello i am nested"; - } + func foo { + func bar { + say "Hello i am nested"; + } - bar; # Calling nested - } + bar; # Calling nested + } - foo; - bar; # Will produce an error, because bar is out of scope! + foo; + bar; # Will produce an error, because bar is out of scope! AUTHOR - Paul C. Buetow (http://paul.buetow.org) + Paul C. Buetow (http://paul.buetow.org) WEBSITE - The Fype Language (http://fype.buetow.org) + The Fype Language (http://fype.buetow.org) SEE ALSO - awk(1) cc(1) + awk(1) cc(1) make(1) diff --git a/docs/header.txt b/docs/header.txt index 651e6e9..d673a17 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -1,5 +1,5 @@ File: ${FILE} -A simple interpreter +A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org diff --git a/docs/help.txt b/docs/help.txt index 66881ef..b99470f 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9640 +Fype v0.1-devel Build 9213 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index 29ae39d..e05d4c5 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 47397a4..b88a1b4 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -20,24 +20,23 @@
    • PARSING / CODE GENERATION
    • REQUIREMENTS
    • GETTING STARTED
    • +
    • DATA TYPES
    • + +
    • SYNTAX
    • -
    • DATA TYPES
    • - -
    • VARIABLES
    • BUILT IN FUNCTIONS
      • @@ -133,81 +132,6 @@ TODO file of the source distribution of Fype!


        -

        SYNTAX

        -

        -

        -

        Comments

        -

        Text from a # character until the end of the current line is considered being a comment. Multi line comments may start with an #* and and with an *# anywhere. Exceptions are if those signs are inside of strings.

        -

        -

        -

        Statements

        -

        A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example:

        -
        -        my bar = 3, foo = 1 + 2; 
        -        say foo;
        -        exit foo - bar;
        -

        -

        -

        Parenthesis

        -

        All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.

        -

        -

        -

        Scopeing

        -

        A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

        -
        -        my foo = 1;
        -
        -        {
        -                # Prints out 1
        -                put defined foo;
        -                {
        -                        my bar = 2;
        -
        -                        # Prints out 1
        -                        put defined bar;
        -                }
        -
        -                # Prints out 0
        -                put defined bar;
        -
        -                my baz = 3;
        -        }
        -
        -        # Prints out 0
        -        say defined bar;
        -

        -

        -

        Control statements

        -

        Fype knows the following control statements:

        -
        -
        if <expression> { <statements> } - -
        -

        Runs the statements if the expression evaluates to a true value.

        -
        - -
        ifnot <expression> { <statements> } - -
        -

        Runs the statements if the expression evaluates to a false value.

        -
        - -
        while <expression> { <statements> } - -
        -

        Runs the statements as long as the the expression evaluates to a true value.

        -
        - -
        until <expression> { <statements> } - -
        -

        Runs the statements as long as the the expression evaluates to a false value.

        -
        - -
        -

        -

        -

        DATA TYPES

        Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes.

        @@ -217,25 +141,19 @@ TODO file of the source distribution of Fype!

        integer
        -

        (Internal name TT_INTEGER)

        +

        Specifies an integer number

        double
        -

        (Internal name TT_DOUBLE)

        +

        Specifies a double number

        string
        -

        (Internal name TT_STRING)

        -
        - -
        array - -
        -

        (Internal name TT_ARRAY)

        +

        Specifies a string

        number @@ -266,47 +184,98 @@ TODO file of the source distribution of Fype!

        Explicit type conversions

        -

        The data types inside the brackets are only showing the return types of each function.

        (integer) integer any
        -

        Converts any type to an integer.

        +

        Converts any type to an integer

        (double) double any
        -

        Converts any type to a double.

        +

        Converts any type to a double

        (string) string any
        -

        Converts any type to a string.

        -
        - -
        (array) array any - -
        -

        Converts any type to an array. This function is not yet implemented.

        +

        Converts any type to a string

        -

        More functions for data types

        +
        +

        SYNTAX

        +

        +

        +

        Comments

        +

        Text from a # character until the end of the current line is considered being a comment. Multi line comments may start with an #* and and with an *# anywhere. Exceptions are if those signs are inside of strings.

        +

        +

        +

        Statements

        +

        A Fype program is a list of statements. Each keyword, expression or function call is part of a statement. Each statement is ended with a semicolon. Example:

        +
        +        my bar = 3, foo = 1 + 2; 
        +        say foo;
        +        exit foo - bar;
        +

        +

        +

        Paranthesis

        +

        All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.

        +

        +

        +

        Scopeing

        +

        A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

        +
        +        my foo = 1;
        +
        +        {
        +                # Prints out 1
        +                put defined foo;
        +                {
        +                        my bar = 2;
        +
        +                        # Prints out 1
        +                        put defined bar;
        +                }
        +
        +                # Prints out 0
        +                put defined bar;
        +
        +                my baz = 3;
        +        }
        +
        +        # Prints out 0
        +        say defined bar;
        +

        +

        +

        Control statements

        +

        Fype knows the following control statements:

        -
        (string) type any +
        if <expression> { <statements> }
        -

        Returns the name of the current type. Examples:

        +

        Runs the statements if the expression evaluates to a true value.

        + +
        ifnot <expression> { <statements> } +
        -
        -        my foo = 1;
        -        put type foo; # Prints "TT_INTEGER"
        -        put type 1.2; # Prints "TT_DOUBLE"
        +

        Runs the statements if the expression evaluates to a false value.

        +
        + +
        while <expression> { <statements> } + +
        +

        Runs the statements as long as the the expression evaluates to a true value.

        +
        + +
        until <expression> { <statements> } + +
        +

        Runs the statements as long as the the expression evaluates to a false value.

        @@ -611,7 +580,7 @@ keyword in order to check if a procedure has been defined or not.


        SEE ALSO

        -

        awk(1) cc(1) +

        awk(1) cc(1) make(1)

        diff --git a/docs/pod/fype.man b/docs/pod/fype.man index 1be72ec..b3d89bf 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-09-16" "Fype v0.1-devel Build 9269" "The Fype Users Manual Page" +.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9208" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution .PP @@ -201,6 +201,43 @@ Run a .fy file: .Ve .PP See the ./examples subdir of the Fype source distribution for examples! See also fype \-h for a list of all options. +.SH "DATA TYPES" +.IX Header "DATA TYPES" +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. +.Sh "The basic data types" +.IX Subsection "The basic data types" +.IP "\fIinteger\fR" 4 +.IX Item "integer" +Specifies an integer number +.IP "\fIdouble\fR" 4 +.IX Item "double" +Specifies a double number +.IP "\fIstring\fR" 4 +.IX Item "string" +Specifies a string +.IP "\fInumber\fR" 4 +.IX Item "number" +May be an integer or a double number +.IP "\fIany\fR" 4 +.IX Item "any" +May be of any type above +.IP "\fIvoid\fR" 4 +.IX Item "void" +No type +.IP "\fIidentifier\fR" 4 +.IX Item "identifier" +It's a variable name or a procedure name or a function name +.Sh "Explicit type conversions" +.IX Subsection "Explicit type conversions" +.IP "(\fIinteger\fR) \fBinteger\fR \fIany\fR" 4 +.IX Item "(integer) integer any" +Converts any type to an integer +.IP "(\fIdouble\fR) \fBdouble\fR \fIany\fR" 4 +.IX Item "(double) double any" +Converts any type to a double +.IP "(\fIstring\fR) \fBstring\fR \fIany\fR" 4 +.IX Item "(string) string any" +Converts any type to a string .SH "SYNTAX" .IX Header "SYNTAX" .Sh "Comments" @@ -215,9 +252,9 @@ A Fype program is a list of statements. Each keyword, expression or function cal \& say foo; \& exit foo - bar; .Ve -.Sh "Parenthesis" -.IX Subsection "Parenthesis" -All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. +.Sh "Paranthesis" +.IX Subsection "Paranthesis" +All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. .Sh "Scopeing" .IX Subsection "Scopeing" A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes: @@ -269,94 +306,39 @@ Runs the statements as long as the the expression evaluates to a true value. .IP "until \fI { \fI }" 4 .IX Item "until { }" Runs the statements as long as the the expression evaluates to a false value. -.SH "DATA TYPES" -.IX Header "DATA TYPES" -Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. -.Sh "The basic data types" -.IX Subsection "The basic data types" -.IP "\fIinteger\fR" 4 -.IX Item "integer" -(Internal name \s-1TT_INTEGER\s0) -.IP "\fIdouble\fR" 4 -.IX Item "double" -(Internal name \s-1TT_DOUBLE\s0) -.IP "\fIstring\fR" 4 -.IX Item "string" -(Internal name \s-1TT_STRING\s0) -.IP "\fIarray\fR" 4 -.IX Item "array" -(Internal name \s-1TT_ARRAY\s0) -.IP "\fInumber\fR" 4 -.IX Item "number" -May be an integer or a double number -.IP "\fIany\fR" 4 -.IX Item "any" -May be of any type above -.IP "\fIvoid\fR" 4 -.IX Item "void" -No type -.IP "\fIidentifier\fR" 4 -.IX Item "identifier" -It's a variable name or a procedure name or a function name -.Sh "Explicit type conversions" -.IX Subsection "Explicit type conversions" -The data types inside the brackets are only showing the return types of each function. -.IP "(\fIinteger\fR) \fBinteger\fR \fIany\fR" 4 -.IX Item "(integer) integer any" -Converts any type to an integer. -.IP "(\fIdouble\fR) \fBdouble\fR \fIany\fR" 4 -.IX Item "(double) double any" -Converts any type to a double. -.IP "(\fIstring\fR) \fBstring\fR \fIany\fR" 4 -.IX Item "(string) string any" -Converts any type to a string. -.IP "(\fIarray\fR) \fBarray\fR \fIany\fR" 4 -.IX Item "(array) array any" -Converts any type to an array. This function is not yet implemented. -.Sh "More functions for data types" -.IX Subsection "More functions for data types" -.IP "(\fIstring\fR) \fBtype\fR \fIany\fR" 4 -.IX Item "(string) type any" -Returns the name of the current type. Examples: -.Sp -.Vb 3 -\& my foo = 1; -\& put type foo; # Prints "TT_INTEGER" -\& put type 1.2; # Prints "TT_DOUBLE" -.Ve .SH "VARIABLES" .IX Header "VARIABLES" Variables can be defined with the \fBmy\fR keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the \fBundef\fR keyword! Example of defining variables: -.Sp +.PP .Vb 2 \& my foo = 1 + 2; \& say foo; .Ve -.Sp +.PP .Vb 3 \& my bar = 12, baz = foo; \& say 1 + bar; \& say bar; .Ve -.Sp +.PP .Vb 2 \& my baz; \& say baz; # Will print out 0 .Ve -.Sp +.PP You may use the \fBdefined\fR keyword to check if an identifier has been defined or not. -.Sp +.PP .Vb 3 \& ifnot defined foo { \& say "No foo yet defined"; \& } .Ve -.Sp +.PP .Vb 1 \& my foo = 1; .Ve -.Sp +.PP .Vb 4 \& if defined foo { \& put "foo is defined and has the value "; @@ -368,7 +350,6 @@ not. In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. .Sh "Math" .IX Subsection "Math" -.RS 4 .IP "(\fIany\fR) \fIany\fR \fB+\fR \fIany\fR" 4 .IX Item "(any) any + any" Special string behavior: A string will get auto convertet into an \fIinteger\fR. @@ -381,8 +362,6 @@ Special string behavior: A string will get auto convertet into an \fIinteger\fR. .IP "(\fIany\fR) \fIany\fR \fB/\fR \fIany\fR" 4 .IX Item "(any) any / any" Special string behavior: A string will get auto convertet into an \fIinteger\fR. -.RE -.RS 4 .Sh "Conditional" .IX Subsection "Conditional" .IP "(\fIinteger\fR) \fIany\fR \fB==\fR \fIany\fR" 4 @@ -400,8 +379,6 @@ Special string behavior: A string will get auto convertet into an \fIinteger\fR. .IX Item "(integer) any > any" .IP "(\fIinteger\fR) \fBnot\fR \fIany\fR" 4 .IX Item "(integer) not any" -.RE -.RS 4 .PD .Sh "Definedness" .IX Subsection "Definedness" @@ -411,8 +388,6 @@ Returns 1 if \fIidentifier\fR has been defined. Returns 0 else. .IP "(\fIinteger\fR) \fBundef\fR \fIidentifier\fR" 4 .IX Item "(integer) undef identifier" Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 is returned. -.RE -.RS 4 .Sh "Bitwise" .IX Subsection "Bitwise" .IP "(\fIinteger\fR) \fIany\fR \fB:<\fR \fIany\fR" 4 @@ -426,8 +401,6 @@ Tries to undefine/delete the \fIidentifier\fR. Returns 1 if success, otherwise 0 .IX Item "(integer) any or any" .IP "(\fIinteger\fR) \fIany\fR \fBxor\fR \fIany\fR" 4 .IX Item "(integer) any xor any" -.RE -.RS 4 .PD .Sh "Numeric" .IX Subsection "Numeric" @@ -446,8 +419,6 @@ This function always returns 1. The parameter is optional. \& # Prints out 1, because foo is not defined \& if yes { say no defined foo; } .Ve -.RE -.RS 4 .Sh "System" .IX Subsection "System" .IP "(\fIvoid\fR) \fBend\fR" 4 @@ -482,8 +453,6 @@ Executes the garbage collector and returns the number of items freed! You may wonder why most of the time it will return a value of 0! Fype tries to free not needed memory asap. This may change in future versions in order to gain faster execution of scripts! -.RE -.RS 4 .Sh "I/O" .IX Subsection "I/O" .IP "(\fIany\fR) \fBput\fR \fIany\fR" 4 @@ -495,25 +464,23 @@ Same as put, but also includes an ending newline .IP "(\fIvoid\fR) \fBln\fR" 4 .IX Item "(void) ln" Just prints a newline -.RE -.RS 4 .SH "SELF DEFINING PROCEDURES AND FUNCTIONS" .IX Header "SELF DEFINING PROCEDURES AND FUNCTIONS" .Sh "Procedures" .IX Subsection "Procedures" A procedure can be defined with the \fBproc\fR keyword and deleted with the \fBundef\fR keyword. A procedure does not return any value and does not support parameter passing. It's using already defined variables (e.g. global variables). A procedure does not have its own namespace. It's using the calling namespace. It is possible to define new variabes inside of a procedure in the current namespace. -.Sp +.PP .Vb 4 \& proc foo { \& say 1 + a * 3 + b; \& my c = 6; \& } .Ve -.Sp +.PP .Vb 1 \& my a = 2, b = 4; .Ve -.Sp +.PP .Vb 2 \& foo; # Run the procedure. Print out "11\en" \& say c; # Print out "6\en"; @@ -524,12 +491,12 @@ It's possible to define procedures inside of procedures. Since procedures don't have its own scope, nested procedures will be available to the current scope as soon as the main procedure has run the first time. You may use the \fBdefined\fR keyword in order to check if a procedure has been defined or not. -.Sp +.PP .Vb 2 \& proc foo { \& say "I am foo"; .Ve -.Sp +.PP .Vb 5 \& undef bar; \& proc bar { @@ -537,13 +504,13 @@ keyword in order to check if a procedure has been defined or not. \& } \& } .Ve -.Sp +.PP .Vb 3 \& # Here bar would produce an error because \& # the proc is not yet defined! \& # bar; .Ve -.Sp +.PP .Vb 3 \& foo; # Here the procedure foo will define the procedure bar! \& bar; # Now the procedure bar is defined! @@ -552,18 +519,18 @@ keyword in order to check if a procedure has been defined or not. .Sh "Functions" .IX Subsection "Functions" A function should be defined with the \fBfunc\fR keyword and deleted with the \fBundef\fR keyword. Function not yet return values (will be changed in future versions) and supports not yet parameter passing (will be changed in future versions). It's using local (lexical scoped) variables. If a certain variable does not exist It's using already defined variables (e.g. one scope above). -.Sp +.PP .Vb 4 \& func foo { \& say 1 + a * 3 + b; \& my c = 6; \& } .Ve -.Sp +.PP .Vb 1 \& my a = 2, b = 4; .Ve -.Sp +.PP .Vb 2 \& foo; # Run the procedure. Print out "11\en" \& say c; # Will produce an error, because c is out of scoped! @@ -571,19 +538,19 @@ A function should be defined with the \fBfunc\fR keyword and deleted with the \f .Sh "Nested functions" .IX Subsection "Nested functions" Nested functions work the same way the nested procedures work, with the exception that nested functions will not be available any more after the function has been left! -.Sp +.PP .Vb 4 \& func foo { \& func bar { \& say "Hello i am nested"; \& } .Ve -.Sp +.PP .Vb 2 \& bar; # Calling nested \& } .Ve -.Sp +.PP .Vb 2 \& foo; \& bar; # Will produce an error, because bar is out of scope! @@ -596,4 +563,4 @@ Paul C. Buetow (http://paul.buetow.org) The Fype Language (http://fype.buetow.org) .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIawk\fR\|(1) \fIcc\fR\|(1) +\&\fIawk\fR\|(1) \fIcc\fR\|(1) \fImake\fR\|(1) diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 6ec8061..2e41645 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -68,6 +68,62 @@ Run a .fy file: See the ./examples subdir of the Fype source distribution for examples! See also fype -h for a list of all options. +=head1 DATA TYPES + +Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. + +=head2 The basic data types + +=over + +=item I + +Specifies an integer number + +=item I + +Specifies a double number + +=item I + +Specifies a string + +=item I + +May be an integer or a double number + +=item I + +May be of any type above + +=item I + +No type + +=item I + +It's a variable name or a procedure name or a function name + +=back + +=head2 Explicit type conversions + +=over + +=item (I) B I + +Converts any type to an integer + +=item (I) B I + +Converts any type to a double + +=item (I) B I + +Converts any type to a string + +=back + =head1 SYNTAX =head2 Comments @@ -82,9 +138,9 @@ A Fype program is a list of statements. Each keyword, expression or function cal say foo; exit foo - bar; -=head2 Parenthesis +=head2 Paranthesis -All parenthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. +All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions. =head2 Scopeing @@ -135,84 +191,6 @@ Runs the statements as long as the the expression evaluates to a false value. =back -=head1 DATA TYPES - -Fype uses auto type conversion. However, if you want to know what's going on you may take a look at the provided basic datatypes. - -=head2 The basic data types - -=over - -=item I - -(Internal name TT_INTEGER) - -=item I - -(Internal name TT_DOUBLE) - -=item I - -(Internal name TT_STRING) - -=item I - -(Internal name TT_ARRAY) - -=item I - -May be an integer or a double number - -=item I - -May be of any type above - -=item I - -No type - -=item I - -It's a variable name or a procedure name or a function name - -=back - -=head2 Explicit type conversions - -The data types inside the brackets are only showing the return types of each function. - -=over - -=item (I) B I - -Converts any type to an integer. - -=item (I) B I - -Converts any type to a double. - -=item (I) B I - -Converts any type to a string. - -=item (I) B I - -Converts any type to an array. This function is not yet implemented. - -=back - -=head2 More functions for data types - -=over - -=item (I) B I - -Returns the name of the current type. Examples: - - my foo = 1; - put type foo; # Prints "TT_INTEGER" - put type 1.2; # Prints "TT_DOUBLE" - =head1 VARIABLES Variables can be defined with the B keyword. If you don't assign a value during declaration, then it's using the default integer value 0. Variables may be changed during program runtime. Variables may be deleted using the B keyword! Example of defining variables: @@ -445,7 +423,7 @@ A function should be defined with the B keyword and deleted with the B= *any* - (*integer*) *any* < *any* - (*integer*) *any* > *any* - (*integer*) not *any* + (*integer*) *any* == *any* + (*integer*) *any* != *any* + (*integer*) *any* <= *any* + (*integer*) *any* >= *any* + (*integer*) *any* < *any* + (*integer*) *any* > *any* + (*integer*) not *any* Definedness - (*integer*) defined *identifier* - Returns 1 if *identifier* has been defined. Returns 0 else. + (*integer*) defined *identifier* + Returns 1 if *identifier* has been defined. Returns 0 else. - (*integer*) undef *identifier* - Tries to undefine/delete the *identifier*. Returns 1 if success, - otherwise 0 is returned. + (*integer*) undef *identifier* + Tries to undefine/delete the *identifier*. Returns 1 if success, + otherwise 0 is returned. Bitwise - (*integer*) *any* :< *any* - (*integer*) *any* :> *any* - (*integer*) *any* and *any* - (*integer*) *any* or *any* - (*integer*) *any* xor *any* + (*integer*) *any* :< *any* + (*integer*) *any* :> *any* + (*integer*) *any* and *any* + (*integer*) *any* or *any* + (*integer*) *any* xor *any* Numeric - (*number*) neg *number* - This function returns the negative value of *any* + (*number*) neg *number* + This function returns the negative value of *any* - (*integer*) no [*integer*] - This function returns 1 if the argument is 0, otherwise it will - return 0! If no argument is given, then 0 is returned! + (*integer*) no [*integer*] + This function returns 1 if the argument is 0, otherwise it will + return 0! If no argument is given, then 0 is returned! - (*integer*) yes [*integer*] - This function always returns 1. The parameter is optional. + (*integer*) yes [*integer*] + This function always returns 1. The parameter is optional. - # Prints out 1, because foo is not defined - if yes { say no defined foo; } + # Prints out 1, because foo is not defined + if yes { say no defined foo; } System - (*void*) end - Exits the program with the exit status of 0 + (*void*) end + Exits the program with the exit status of 0 - (*void*) exit *integer* - Exits the program with the specified exit status + (*void*) exit *integer* + Exits the program with the specified exit status - (*integer*) fork - Fork forks a subprocess. It returns 0 for the child process and - the pid of the child process otherwise! Example: + (*integer*) fork + Fork forks a subprocess. It returns 0 for the child process and the + pid of the child process otherwise! Example: - my pid = fork; + my pid = fork; - if pid { - put "I am the parent process; child has the pid "; - say pid; + if pid { + put "I am the parent process; child has the pid "; + say pid; - } ifnot pid { - say "I am the child process"; - } + } ifnot pid { + say "I am the child process"; + } - (*integer*) gc - Executes the garbage collector and returns the number of items - freed! You may wonder why most of the time it will return a - value of 0! Fype tries to free not needed memory asap. This may - change in future versions in order to gain faster execution of - scripts! + (*integer*) gc + Executes the garbage collector and returns the number of items + freed! You may wonder why most of the time it will return a value of + 0! Fype tries to free not needed memory asap. This may change in + future versions in order to gain faster execution of scripts! I/O - (*any*) put *any* - Prints out the argument + (*any*) put *any* + Prints out the argument - (*any*) say *any* - Same as put, but also includes an ending newline + (*any*) say *any* + Same as put, but also includes an ending newline - (*void*) ln - Just prints a newline + (*void*) ln + Just prints a newline SELF DEFINING PROCEDURES AND FUNCTIONS Procedures - A procedure can be defined with the proc keyword and deleted with - the undef keyword. A procedure does not return any value and does - not support parameter passing. It's using already defined variables - (e.g. global variables). A procedure does not have its own - namespace. It's using the calling namespace. It is possible to - define new variabes inside of a procedure in the current namespace. - - proc foo { - say 1 + a * 3 + b; - my c = 6; - } + A procedure can be defined with the proc keyword and deleted with the + undef keyword. A procedure does not return any value and does not + support parameter passing. It's using already defined variables (e.g. + global variables). A procedure does not have its own namespace. It's + using the calling namespace. It is possible to define new variabes + inside of a procedure in the current namespace. + + proc foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Print out "6\n"; + foo; # Run the procedure. Print out "11\n" + say c; # Print out "6\n"; Nested procedures - It's possible to define procedures inside of procedures. Since - procedures don't have its own scope, nested procedures will be - available to the current scope as soon as the main procedure has run - the first time. You may use the defined keyword in order to check if - a procedure has been defined or not. - - proc foo { - say "I am foo"; - - undef bar; - proc bar { - say "I am bar"; - } - } + It's possible to define procedures inside of procedures. Since + procedures don't have its own scope, nested procedures will be available + to the current scope as soon as the main procedure has run the first + time. You may use the defined keyword in order to check if a procedure + has been defined or not. + + proc foo { + say "I am foo"; + + undef bar; + proc bar { + say "I am bar"; + } + } - # Here bar would produce an error because - # the proc is not yet defined! - # bar; + # Here bar would produce an error because + # the proc is not yet defined! + # bar; - foo; # Here the procedure foo will define the procedure bar! - bar; # Now the procedure bar is defined! - foo; # Here the procedure foo will redefine bar again! + foo; # Here the procedure foo will define the procedure bar! + bar; # Now the procedure bar is defined! + foo; # Here the procedure foo will redefine bar again! Functions - A function should be defined with the func keyword and deleted with - the undef keyword. Function not yet return values (will be changed - in future versions) and supports not yet parameter passing (will be - changed in future versions). It's using local (lexical scoped) - variables. If a certain variable does not exist It's using already - defined variables (e.g. one scope above). - - func foo { - say 1 + a * 3 + b; - my c = 6; - } + A function should be defined with the func keyword and deleted with the + undef keyword. Function not yet return values (will be changed in future + versions) and supports not yet parameter passing (will be changed in + future versions). It's using local (lexical scoped) variables. If a + certain variable does not exist It's using already defined variables + (e.g. one scope above). + + func foo { + say 1 + a * 3 + b; + my c = 6; + } - my a = 2, b = 4; + my a = 2, b = 4; - foo; # Run the procedure. Print out "11\n" - say c; # Will produce an error, because c is out of scoped! + foo; # Run the procedure. Print out "11\n" + say c; # Will produce an error, because c is out of scoped! Nested functions - Nested functions work the same way the nested procedures work, with - the exception that nested functions will not be available any more - after the function has been left! + Nested functions work the same way the nested procedures work, with the + exception that nested functions will not be available any more after the + function has been left! - func foo { - func bar { - say "Hello i am nested"; - } + func foo { + func bar { + say "Hello i am nested"; + } - bar; # Calling nested - } + bar; # Calling nested + } - foo; - bar; # Will produce an error, because bar is out of scope! + foo; + bar; # Will produce an error, because bar is out of scope! AUTHOR - Paul C. Buetow (http://paul.buetow.org) + Paul C. Buetow (http://paul.buetow.org) WEBSITE - The Fype Language (http://fype.buetow.org) + The Fype Language (http://fype.buetow.org) SEE ALSO - awk(1) cc(1) + awk(1) cc(1) make(1) diff --git a/docs/stats.txt b/docs/stats.txt index 207f2b8..b49fcc8 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7714 +===> Num of C source lines : 7460 ===> Num of Fype source examples : 13 -===> Num of Fype source lines : 323 +===> Num of Fype source lines : 321 diff --git a/docs/version.txt b/docs/version.txt index 549fead..10949e7 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9640 +Fype v0.1-devel Build 9213 diff --git a/examples/all-examples.txt b/examples/all-examples.txt new file mode 100644 index 0000000..bdf199f --- /dev/null +++ b/examples/all-examples.txt @@ -0,0 +1,335 @@ + +#* + * Examples of how to use bitwise operators + *# + +# Prints "01\n" +assert 0 == (put 1 and 0); +assert 1 == (say 1 and 1); + +# Prints "01\n" +assert 0 == (put 0 or 0); +assert 1 == (say 0 or 1); + +# Prints "01\n" +assert 0 == (put 1 xor 1); +assert 1 == (say 1 xor 0); + +# Prints "82\n" +assert 8 == (put 2 :< 2); +assert 2 == (say 8 :> 2); + +# A bit more complex, prints "9\n" +assert 9 == (say 1 :< 5 :> 5 or 2 and 5 xor 8); + +# Same result, but with parenthesis: +assert 9 == (say ((((1 :< 5) :> 5) or 2) and 5) xor 8); + +# Different parenthesis, different result: "1\n" +assert 1 == (say 1 :< 5 :> 5 or 2 and (5 xor 8)); + +# Prints "-1" +assert (neg 1) == (say neg not 0); + + +#* + * Simple examples how to write comments + *# + +# This is a single lined comment + +say 1 + 1; # This is a comment at the end of the line + +say 1 #* This is an embedded comment *# + 1; + +#* This is + a + multiline + comment *# + +#* + * This is + * a nicer looking + * multiline comment + *# + + +#* + * Simple conditional tests + *# + +# "0010\n" +assert 0 == (put 1 < 1); +assert 0 == (put 1 < 0); +assert 1 == (put 0 < 1); +assert 0 == (say 0 < 0); + +# "0100\n" +assert 0 == (put 1 > 1); +assert 1 == (put 1 > 0); +assert 0 == (put 0 > 1); +assert 0 == (say 0 > 0); + +# "1001\n" +assert 1 == (put 1 == 1); +assert 0 == (put 1 == 0); +assert 0 == (put 0 == 1); +assert 1 == (say 0 == 0); + +# "0110\n" +assert 0 == (put 1 != 1); +assert 1 == (put 1 != 0); +assert 1 == (put 0 != 1); +assert 0 == (say 0 != 0); + +# "1011\n" +assert 1 == (put 1 <= 1); +assert 0 == (put 1 <= 0); +assert 1 == (put 0 <= 1); +assert 1 == (say 0 <= 0); + +## "1101\n" +assert 1 == (put 1 >= 1); +assert 1 == (put 1 >= 0); +assert 0 == (put 0 >= 1); +assert 1 == (say 0 >= 0); + + + +#* + * Examples of how to use control statements + *# + +if 1 { + say "if 1"; +} + +ifnot 0 == 1 { + say "ifnot 0 == 1"; +} + +# Calculate 10! + +my n = 10, fac = 0; + +while n > 1 { + ifnot fac { + fac = 1; + } + say fac = (fac * n); + decr n; +} + +# Count up to 10 + +n = 0; + +until n == 10 { + say incr n; +} + + +#* + * Simple expression tests + *# + +# Result 10 +assert 10 == say (8 / 2) + 2 * 3; + +# Result 12 +assert 12 == say 2 * (4 + 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 4 +assert 4 == say 2 * (4 / 2); + +# Result 46 +assert 46 == say "12" + "34"; + +# Result 1231 +assert 1231 == say "1234" - "3"; + +# Result 24 +assert "24" == say "2ab" * "12"; + +# Result 5.0 +assert 5 == say "10 bla" / 2; + + +#* + * Examples of how to use fork + *# + +my pid = fork; + +if pid { + put "I am the parent process and the child has the pid "; + say pid; +} + +ifnot pid { + say "I am the child process"; +} + +#* + * Examples of how to use functions + *# + +func foo { + say 1 + a * 3 + b; + + func bar { + say "Hello i am nested"; + } + + bar; # Calling nested +} + +my a = 2, b = 4; # Create global variables +foo; +assert 0 == (defined bar); # bar is not available anymore + +func baz { + say "I am baz"; + undef baz; +} + +baz; # Baz deletes itself +assert 0 == (defined baz); # baz is not available anymore + +#* + * Simple builtin function tests + *# + +# Print "-20\n" +assert (neg 20) == (say neg 20); + +# Print "30\n" +assert 30 == (say 10 - neg 20); + +# Print "-30\n" +assert (neg 30) == (say neg neg neg 10 - neg 20); + +# Print "Hello\n" +put "Hello"; +ln; + +# Exit with exit code 0 +exit 10 + 10 - 5 - 15; + + +#* + * Simple I/O examples. Currently only output is supported. + *# + +# Print out 10 followed by a newline +say 10; + +# Print out 20 without a newline followed +put 20; + +# Print out a newline +ln; + + +#* + * Examples of how to use procedures + *# + +proc foo { + say 1 + a * 3 + b; + my c = 6; +} + +my a = 2, b = 4; + +foo; # Run the procedure. Print out "11\n" +say c; # Print out "6\n"; + +proc bar { + say "I am bar"; + + undef baz; + + proc baz { + say "I am baz"; + } +} + +# Here bar would produce an error because the proc is not yet defined! +# bar; + +bar; # Here the procedure bar will define the procedure baz! +baz; # Now the procedure baz is defined! +bar; # Here the procedure bar will redefine baz again! + +#* + * Examples of how to use scopeing + *# + +my foo = 1; + +{ + # Prints out 1 + assert 1 == (put defined foo); + + { + my bar = 2; + + # Prints out 1 + assert 1 == (put defined bar); + } + + # Prints out 0 + assert 0 == (put defined bar); + + my baz = 3; +} + +# Prints out 0 +assert 0 == (say defined bar); + + + +#* + * Examples how to convert types + *# + +assert 1 == say 1; # Integer output + +assert 1 == say double 1; # Double output + +assert 14 == say 1 + string 13; # Implicit type conversion to Integer + +assert 2 == say integer 2.8; # Rounds down to the Integer 2 + +assert say integer double string put say neg 12; # Nonsense but working :) + + +#* + * Examples of how to define variables + *# + +# Defines the variables +my foo = 1 + 1; +my bar = 4 - 1, baz = 100 + 1, bay; + +# bay has been initialized with the default value of 0 +say bay; + +# Prints out "5\n" +assert 5 == (say foo + bar); + +# Pritns out "51101\n" +assert 51 == (put baz - 50); +assert 101 == (say baz); + +# Change the value of the variable to 99 and print it out +assert 99 == (baz = 99); +say baz; + diff --git a/examples/conditionals.fy b/examples/conditionals.fy index 2dc027f..1260ae2 100644 --- a/examples/conditionals.fy +++ b/examples/conditionals.fy @@ -37,3 +37,5 @@ assert 1 == (put 1 >= 1); assert 1 == (put 1 >= 0); assert 0 == (put 0 >= 1); assert 1 == (say 0 >= 0); + + diff --git a/examples/types.fy b/examples/types.fy index 1ac9751..1b9a0ac 100644 --- a/examples/types.fy +++ b/examples/types.fy @@ -12,7 +12,3 @@ assert 2 == say integer 2.8; # Rounds down to the Integer 2 assert say integer double string put say neg 12; # Nonsense but working :) -assert "TT_INTEGER" == say type 1; -assert "TT_DOUBLE" == say type 1.0; -assert "TT_STRING" == say type "1"; -assert "TT_ARRAY" == say type [1 2 3]; diff --git a/fype b/fype new file mode 100755 index 0000000..fdb0ae5 Binary files /dev/null and b/fype differ diff --git a/src/build.h b/src/build.h index cb7e720..ced3b51 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9654 +#define BUILDNR 9214 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index fa1282d..73fb8a2 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -33,7 +33,6 @@ *:*/ #include "convert.h" -#include "../data/array.h" void convert_to_integer(Token *p_token) { @@ -48,10 +47,6 @@ convert_to_integer(Token *p_token) { token_set_tt(p_token, TT_INTEGER); token_set_ival(p_token, atoi(token_get_val(p_token))); break; - case TT_ARRAY: - token_set_tt(p_token, TT_INTEGER); - token_set_ival(p_token, array_get_size(p_token->p_array)-1); - break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); break; @@ -67,9 +62,6 @@ convert_to_integer_get(Token *p_token) { return ((int) token_get_dval(p_token)); case TT_STRING: return (atoi(token_get_val(p_token))); - case TT_ARRAY: - return (array_get_size(p_token->p_array)-1); - break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); } @@ -90,10 +82,6 @@ convert_to_double(Token *p_token) { token_set_tt(p_token, TT_DOUBLE); token_set_dval(p_token, atof(token_get_val(p_token))); break; - case TT_ARRAY: - token_set_tt(p_token, TT_DOUBLE); - token_set_dval(p_token, array_get_size(p_token->p_array)-1); - break; default: token_print_val(p_token); ERROR("Datatype conversion error '%s'", token_get_val(p_token)); @@ -127,17 +115,6 @@ convert_to_string(Token *p_token) { } break; case TT_STRING: - break; - case TT_ARRAY: - token_set_tt(p_token, TT_STRING); - char c_tmp[1024]; - sprintf(c_tmp, "%d", array_get_size(p_token->p_array)-1); - int i_len = strlen(c_tmp); - p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); - strcpy(p_token->c_val, c_tmp); - p_token->c_val[i_len] = 0; - //array_iterate(p_token->p_array, token_delete_cb); - break; default: ERROR("Datatype conversion error"); diff --git a/src/core/function.c b/src/core/function.c index fdbf308..fda40b8 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -51,34 +51,6 @@ token_get_val(t) \ ) -void -_print_val(Token *p_token) { - switch (token_get_tt(p_token)) { - case TT_INTEGER: - printf("%d", token_get_ival(p_token)); - break; - case TT_DOUBLE: - printf("%f", token_get_dval(p_token)); - break; - case TT_STRING: - printf("%s", token_get_val(p_token)); - break; - case TT_ARRAY: - { - Array *p_array = p_token->p_array; - ArrayIterator *p_iter = arrayiterator_new(p_array); - while (arrayiterator_has_next(p_iter)) { - Token *p_next = arrayiterator_next(p_iter); - _print_val(p_next); - printf(" "); - } - arrayiterator_delete(p_iter); - } - break; - NO_DEFAULT; - } -} - void _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, Token *p_token_op2, Token *p_token_next) { @@ -95,8 +67,10 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, printf("PROCESS OPERATOR %s %s\n", tt_get_name(tt_op), tt_get_name(tt_op2)); - token_print_ln(p_token_next); - token_print_ln(p_token_store); + token_print(p_token_next); + printf("\n"); + token_print(p_token_store); + printf("\n"); #endif /* DEBUG_FUNCTION_PROCESS */ if (p_token_op2 != NULL) { @@ -525,10 +499,11 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, } #ifdef DEBUG_FUNCTION_PROCESS - token_print_ln(p_token_store); + token_print(p_token_store); + printf("\n\n"); #endif /* DEBUG_FUNCTION_PROCESS */ - //token_delete(p_token_next); + token_delete(p_token_next); } void @@ -600,9 +575,6 @@ function_is_buildin(Token *p_token_ident) { if (strcmp("not", token_get_val(p_token_ident)) == 0) return (true); - if (strcmp("type", token_get_val(p_token_ident)) == 0) - return (true); - return (false); } @@ -762,7 +734,18 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, StackIterator *p_iter = stackiterator_new(p_stack_args); while (stackiterator_has_next(p_iter)) { Token *p_token = stackiterator_next(p_iter); - _print_val(p_token); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + printf("%d", token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("%f", token_get_dval(p_token)); + break; + case TT_STRING: + printf("%s", token_get_val(p_token)); + break; + NO_DEFAULT; + } } stackiterator_delete(p_iter); @@ -770,7 +753,18 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, StackIterator *p_iter = stackiterator_new(p_stack_args); while (stackiterator_has_next(p_iter)) { Token *p_token = stackiterator_next(p_iter); - _print_val(p_token); + switch (token_get_tt(p_token)) { + case TT_INTEGER: + printf("%d", token_get_ival(p_token)); + break; + case TT_DOUBLE: + printf("%f", token_get_dval(p_token)); + break; + case TT_STRING: + printf("%s", token_get_val(p_token)); + break; + NO_DEFAULT; + } } stackiterator_delete(p_iter); printf("\n"); @@ -818,35 +812,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, break; NO_DEFAULT; } - } else if (strcmp("not", token_get_val(p_token_ident)) == 0) { - if (0 == stack_size(p_stack_args)) - _FUNCTION_ERROR("No argument given", p_token_ident); - - Token *p_token = token_new_copy(stack_pop(p_stack_args)); - stack_push(p_stack_args, p_token); - - switch (token_get_tt(p_token)) { - case TT_INTEGER: - token_set_ival(p_token, !token_get_ival(p_token)); - break; - case TT_DOUBLE: - token_set_dval(p_token, !token_get_dval(p_token)); - break; - case TT_STRING: - token_set_ival(p_token, !atoi(token_get_val(p_token))); - token_set_tt(p_token, TT_INTEGER); - break; - NO_DEFAULT; - } - } else if (strcmp("type", token_get_val(p_token_ident)) == 0) { - if (0 == stack_size(p_stack_args)) - _FUNCTION_ERROR("No argument given", p_token_ident); - - Token *p_token = stack_pop(p_stack_args); - TokenType tt = token_get_tt(p_token); - - Token *p_token_type = token_new_string(tt_get_name(tt)); - stack_push(p_stack_args, p_token_type); } } diff --git a/src/core/garbage.c b/src/core/garbage.c index 3820144..aba19c4 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -64,12 +64,6 @@ _garbage_print(_Garbage *p_garbage) { } } -void -_garbage_free(_Garbage *p_garbage) { - (*p_garbage->p_func) (p_garbage->p_2free); - free(p_garbage); -} - void garbage_destroy() { garbage_collect(); @@ -93,18 +87,17 @@ garbage_destroy() { int garbage_collect() { - //printf("GARBAGE_COLLECT\n"); ListIterator *p_iter = listiterator_new(LIST_GARBAGE); List *p_list_garbage_new = list_new(); int i_count = 0; - //printf("size %d\n", list_size(LIST_GARBAGE)); while (listiterator_has_next(p_iter)) { _Garbage *p_garbage = listiterator_next(p_iter); if (p_garbage->p_ref_count == NULL || *p_garbage->p_ref_count <= 0) { - //_garbage_print(p_garbage); - _garbage_free(p_garbage); + // _garbage_print(p_garbage); + (*p_garbage->p_func) (p_garbage->p_2free); + free(p_garbage); ++i_count; } else { @@ -113,9 +106,9 @@ garbage_collect() { } listiterator_delete(p_iter); + list_delete(LIST_GARBAGE); LIST_GARBAGE = p_list_garbage_new; - //printf("GARBAGE_COLLECT_END\n"); return (i_count); } diff --git a/src/core/interpret.c b/src/core/interpret.c index 86d5a36..5aa07ef 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -54,16 +54,15 @@ #define _NEXT_TT _next_tt(p_interpret) #define _SKIP _next(p_interpret); -int __expression_get(Interpret *p_interpret, List *p_list_block); -int __array_get(Interpret *p_interpret, Token *p_token_arr); -void __print_lookahead(Interpret *p_interpret); +void _print_lookahead(Interpret *p_interpret); int _next(Interpret *p_interpret); int _program(Interpret *p_interpret); int _var_decl(Interpret *p_interpret); int _var_assign(Interpret *p_interpret); int _var_list(Interpret *p_interpret); +int _expression_get(Interpret *p_interpret, List *p_list_block); int _block_get(Interpret *p_interpret, List *p_list_block); -int __block_skip(Interpret *p_interpret); +int _block_skip(Interpret *p_interpret); int _proc_decl(Interpret *p_interpret); int _func_decl(Interpret *p_interpret); int _statement(Interpret *p_interpret); @@ -104,7 +103,7 @@ interpret_new(List *p_list_token, Hash *p_hash_syms) { void interpret_delete(Interpret *p_interpret) { - if (p_interpret == NULL) + if (!p_interpret) return; if (p_interpret->b_scope_delete) @@ -115,7 +114,7 @@ interpret_delete(Interpret *p_interpret) { } void -__print_lookahead(Interpret *p_interpret) { +_print_lookahead(Interpret *p_interpret) { ListIterator *p_iter = p_interpret->p_iter; ListIteratorState *p_state = listiterator_get_state(p_iter); @@ -165,13 +164,8 @@ int _program(Interpret *p_interpret) { _CHECK TRACK - int i_count = 0; - while (_statement(p_interpret) == 1) { - if (++i_count == 50) { - garbage_collect(); - i_count = 0; - } - } + while (_statement(p_interpret) == 1) + garbage_collect(); return (1); } @@ -181,6 +175,7 @@ _var_decl(Interpret *p_interpret) { _CHECK TRACK switch (p_interpret->tt) { + //case TT_ARR: //TODO cleanup TT_ARR case TT_MY: { if (_NEXT_TT != TT_IDENT) @@ -205,7 +200,7 @@ _var_decl(Interpret *p_interpret) { } } default: - break; + break; } return (0); @@ -231,8 +226,8 @@ _var_assign(Interpret *p_interpret) { p_interpret->p_stack = stack_new(); if (_expression_(p_interpret)) { - function_process_buildin(p_interpret, p_token, - p_interpret->p_stack); + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); stack_merge(p_stack, p_interpret->p_stack); stack_delete(p_interpret->p_stack); @@ -241,6 +236,7 @@ _var_assign(Interpret *p_interpret) { p_token = stack_top(p_interpret->p_stack); Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); scope_newset(p_interpret->p_scope, c_name, p_symbol); + } else { return (0); } @@ -302,10 +298,11 @@ _block_get(Interpret *p_interpret, List *p_list_block) { } int -__expression_get(Interpret *p_interpret, List *p_list_expression) { +_expression_get(Interpret *p_interpret, List *p_list_expression) { for (;;) { - if (p_interpret->tt == TT_PARANT_CL) + if (p_interpret->tt == TT_PARANT_CL) { break; /* for */ + } list_add_back(p_list_expression, p_interpret->p_token); @@ -322,36 +319,7 @@ __expression_get(Interpret *p_interpret, List *p_list_expression) { } int -__array_get(Interpret *p_interpret, Token *p_token_arr) { -#ifdef DEBUG_ARRAY_GET - printf("====> ARRAY\n"); -#endif /* DEBUG_ARRAY_GET */ - Array *p_array = p_token_arr->p_array; - - do { - Token *p_token = p_interpret->p_token; - -#ifdef DEBUG_ARRAY_GET - printf("Insert: "); - token_print_ln(p_token); -#endif /* DEBUG_ARRAY_GET */ - - array_unshift(p_array, p_token); - token_ref_up(p_token); - _NEXT - } while (p_interpret->tt != TT_PARANT_AR); - -#ifdef DEBUG_ARRAY_GET - printf("<==== ARRAY\n"); -#endif /* DEBUG_ARRAY_GET */ - /* Ignore TT_PARANT_AR */ - _NEXT - - return (0); -} - -int -__block_skip(Interpret *p_interpret) { +_block_skip(Interpret *p_interpret) { if (p_interpret->tt != TT_PARANT_CL) _INTERPRET_ERROR("Expected '{'", p_interpret->p_token); _NEXT @@ -523,16 +491,16 @@ _control(Interpret *p_interpret) { switch (tt) { case TT_IF: if (convert_to_integer_get(p_token_top)) { - //scope_up(p_interpret->p_scope); + scope_up(p_interpret->p_scope); ret = interpret_subprocess(p_interpret, p_list_block); - //scope_down(p_interpret->p_scope); + scope_down(p_interpret->p_scope); } break; case TT_IFNOT: if (!convert_to_integer_get(p_token_top)) { - //scope_up(p_interpret->p_scope); + scope_up(p_interpret->p_scope); ret = interpret_subprocess(p_interpret, p_list_block); - //scope_down(p_interpret->p_scope); + scope_down(p_interpret->p_scope); } break; NO_DEFAULT; @@ -555,7 +523,7 @@ _control(Interpret *p_interpret) { _NEXT - __expression_get(p_interpret, p_list_expr); + _expression_get(p_interpret, p_list_expr); _block_get(p_interpret, p_list_block); Token *p_token_backup = p_interpret->p_token; @@ -573,6 +541,7 @@ _control(Interpret *p_interpret) { Token *p_token_top = stack_pop(p_interpret->p_stack); if (p_token_top == NULL) { + printf("FOO\n"); exit(0); } if (tt == TT_WHILE) { @@ -817,7 +786,6 @@ _term(Interpret *p_interpret) { case TT_INTEGER: case TT_DOUBLE: case TT_STRING: - case TT_ARRAY: stack_push(p_interpret->p_stack, p_interpret->p_token); _NEXT return (1); @@ -949,13 +917,9 @@ _term(Interpret *p_interpret) { Token *p_token = p_interpret->p_token; _NEXT - Token *p_token_arr = token_new_array(ARRAY_SIZE); + Token *p_token_arr = token_new_array(ARRAY_SIZE); stack_push(p_interpret->p_stack, p_token_arr); - - if (__array_get(p_interpret, p_token_arr) != 0) - _INTERPRET_ERROR("Array syntax error", p_token); - - return (1); + _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); } break; diff --git a/src/core/scanner.c b/src/core/scanner.c index 5190175..49026c2 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -108,8 +108,8 @@ scanner_post_task(Scanner *p_scanner) { if (tt_cur == TT_INTEGER && tt_last[1] == TT_DOT && tt_last[0] == TT_INTEGER) { - //token_ref_down(pt_last[0]); - //token_ref_down(pt_last[1]); + token_ref_down(pt_last[0]); + token_ref_down(pt_last[1]); char *c_2 = token_get_val(p_token); char *c_0 = token_get_val(pt_last[0]); @@ -338,9 +338,9 @@ scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, List *p_list_token = scanner_get_list_token(p_scanner); Token *p_token = token_new(*cc_token, tt_cur, p_scanner->i_current_line_nr, p_scanner->i_current_pos_nr, p_scanner->c_filename); - p_token->b_source_token = true; list_add_back(p_list_token, p_token); + token_ref_up(p_token); *cc_token = malloc(sizeof(char)); (*cc_token)[0] = 0; @@ -361,3 +361,9 @@ scanner_get_tt_cur(char *c_token) { return tt_cur == TT_NONE ? TT_IDENT : tt_cur; } + +void +scanner_cleanup_list_token_cb(void *p_void) { + Token *p_token = p_void; + token_delete(p_token); +} diff --git a/src/core/scanner.h b/src/core/scanner.h index c4e15fa..4626595 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -65,5 +65,6 @@ void scanner_run(Fype *p_fype); void scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, TokenType tt_cur); TokenType scanner_get_tt_cur(char *c_token); +void scanner_cleanup_list_token_cb(void *p_void); #endif diff --git a/src/core/scope.c b/src/core/scope.c index ecf5933..1bf8dd2 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -36,9 +36,6 @@ #include "scope.h" #include "symbol.h" -#define _SCOPE_ERROR(m) \ - ERROR("%s: Scope error", m) - Scope* scope_new(Hash *p_hash_syms) { Scope *p_scope = malloc(sizeof(Scope)); @@ -61,42 +58,14 @@ scope_delete(Scope *p_scope) { void scope_up(Scope *p_scope) { -#ifdef EXTRA_CHECKS - int i_before = (int) stack_size(p_scope->p_stack_scopes); -#elif DEBUG_SCOPE_UPDOWN - int i_before = (int) stack_size(p_scope->p_stack_scopes); -#endif - stack_push(p_scope->p_stack_scopes, hash_new(24)); -#ifdef DEBUG_SCOPE_UPDOWN - printf("SCOPE UPPED %d => %d\n", - i_before, - (int) stack_size(p_scope->p_stack_scopes)); -#endif /* DEBUG_SCOPE_UPDOWN */ -#ifdef EXTRA_CHECKS - if (i_before >= (int) stack_size(p_scope->p_stack_scopes)) - _SCOPE_ERROR("Scope should be higher"); -#endif /* EXTRA_CHECKS */ + stack_push(p_scope->p_stack_scopes, hash_new(1024)); } void scope_down(Scope *p_scope) { -#ifdef EXTRA_CHECKS - int i_before = (int) stack_size(p_scope->p_stack_scopes); -#elif DEBUG_SCOPE_UPDOWN - int i_before = (int) stack_size(p_scope->p_stack_scopes); -#endif Hash *p_hash_syms = stack_pop(p_scope->p_stack_scopes); hash_iterate(p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_hash_syms); -#ifdef DEBUG_SCOPE_UPDOWN - printf("SCOPE DOWNED %d => %d\n", - i_before, - (int) stack_size(p_scope->p_stack_scopes)); -#endif /* DEBUG_SCOPE_UPDOWN */ -#ifdef EXTRA_CHECKS - if (i_before <= (int) stack_size(p_scope->p_stack_scopes)) - _SCOPE_ERROR("Scope should be lower"); -#endif /* EXTRA_CHECKS */ } static Hash* diff --git a/src/core/symbol.c b/src/core/symbol.c index 7c8a8f7..2343cdb 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -33,9 +33,7 @@ *:*/ #include "symbol.h" -#include "token.h" -#include "../data/array.h" #include "../data/list.h" Symbol* @@ -57,20 +55,8 @@ symbol_delete(Symbol *p_symbol) { list_delete(p_list_token); } break; - case SYM_VARIABLE: - { - Token *p_token = symbol_get_val(p_symbol); - switch (token_get_tt(p_token)) { - case TT_ARRAY: - //array_iterate(p_token->p_array, token_delete_cb); - break; - NO_DEFAULT; - } - } - break; NO_DEFAULT; } - free(p_symbol); } diff --git a/src/core/token.c b/src/core/token.c index 4bed0e0..1a2aec9 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -57,6 +57,7 @@ get_tt(char *c_token) { CHECK("proc") TT_PROC; CHECK("func") TT_FUNC; CHECK("my") TT_MY; + CHECK("arr") TT_ARR; CHECK("!") TT_NOT; CHECK("!=") TT_NEQ; CHECK("=~") TT_RE; @@ -122,6 +123,7 @@ tt_get_name(TokenType tt_cur) { CASE(TT_PROC,"TT_PROC") CASE(TT_FUNC,"TT_FUNC") CASE(TT_MY,"TT_MY") + CASE(TT_ARR,"TT_ARR") CASE(TT_WHILE,"TT_WHILE") CASE(TT_UNTIL,"TT_UNTIL") CASE(TT_NEXT,"TT_NEXT") @@ -181,8 +183,7 @@ tt_get_name(TokenType tt_cur) { } Token* -token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, - char *c_filename) { +token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename) { Token *p_token = token_new_dummy(); p_token->c_val = c_val; @@ -193,7 +194,6 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, p_token->i_pos_nr = i_pos_nr; p_token->c_filename = c_filename; p_token->p_array = NULL; - p_token->b_source_token = false; switch (tt_cur) { case TT_INTEGER: @@ -212,7 +212,7 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, NO_DEFAULT; } - return (p_token); + return p_token; } Token* @@ -248,11 +248,7 @@ Token* token_new_array(int i_size) { Token *p_token = token_new_dummy(); token_set_tt(p_token, TT_ARRAY); - - if (p_token->p_array == NULL) - p_token->p_array = array_new(); - - //array_resize(p_token->p_array, i_size); + array_resize(p_token->p_array, i_size); return (p_token); } @@ -273,7 +269,7 @@ token_new_dummy() { p_token->i_pos_nr = -1; p_token->c_filename = NULL; p_token->u_token_id = TOKEN_ID_COUNTER++; - p_token->i_ref_count = 1; + p_token->i_ref_count = 0; /* Register the token in the garbage collector */ garbage_add_token(p_token); @@ -284,7 +280,7 @@ token_new_dummy() { Token* token_new_copy(Token *p_token) { Token *p_token_copy = malloc(sizeof(Token)); - p_token_copy->u_token_id = TOKEN_ID_COUNTER++; + p_token->u_token_id = TOKEN_ID_COUNTER++; if (p_token_copy == NULL) ERROR("Memory alloc error"); @@ -298,36 +294,21 @@ token_new_copy(Token *p_token) { return (p_token_copy); } -void -token_copy_vals(Token *p_token_to, Token *p_token_from) { +void token_copy_vals(Token *p_token_to, Token *p_token_from) { int i_len; // TODO: Check against mem leak - if (p_token_to->c_val) - free(p_token_to->c_val); + // if (p_token_to->c_val) + // free(p_token_to->c_val); if (p_token_from->c_val) { i_len = strlen(p_token_from->c_val); p_token_to->c_val = calloc(i_len+1, sizeof(char)); strcpy(p_token_to->c_val, p_token_from->c_val); - } else { p_token_to->c_val = NULL; } - if (p_token_from->tt_cur == TT_ARRAY) { - p_token_to->p_array = array_new(); - ArrayIterator *p_iter = arrayiterator_new(p_token_from->p_array); - while (arrayiterator_has_next(p_iter)) { - Token *p_token = arrayiterator_next(p_iter); - token_ref_up(p_token); - array_unshift(p_token_to->p_array, p_token); - } - arrayiterator_delete(p_iter); - } else { - p_token_to->p_array = NULL; - } - p_token_to->tt_cur = p_token_from->tt_cur; p_token_to->i_val = p_token_from->i_val; p_token_to->d_val = p_token_from->d_val; @@ -341,11 +322,6 @@ token_delete_cb(void *p_void) { token_delete(p_void); } -void -token_delete_force_cb(void *p_void) { - token_delete_force(p_void); -} - void token_ref_down_cb(void *p_void) { Token *p_token = p_void; @@ -357,92 +333,49 @@ token_copy_cb(void *p_void) { return (token_new_copy(p_void)); } -int -token_ref_down(Token *p_token) { -// if (p_token->i_ref_count > 0) - p_token->i_ref_count--; - - return (p_token->i_ref_count); -} - -void -_token_free(Token *p_token) { - if (p_token->c_val) - free(p_token->c_val); - p_token->c_val = NULL; - - if (p_token->p_array) { - array_iterate(p_token->p_array, token_delete_cb); - array_delete(p_token->p_array); - } - p_token->p_array = NULL; - - free(p_token); -} - void token_delete(Token *p_token) { - if (IS_SOURCE_TOKEN(p_token)) - return; - - token_ref_down(p_token); - - if (p_token->i_ref_count == 0) { + if (token_ref_down(p_token) <= 0) { + if (p_token->i_ref_count == 0) { #ifdef DEBUG_TOKEN_REFCOUNT - printf("Token refcount debug: Token ref count is 0 == %d\n", - p_token->i_ref_count); - token_print_ln(p_token); + printf("Token refcount debug: Token ref count is 0 == %d\n", + p_token->i_ref_count); #endif /* DEBUG_TOKEN_REFCOUNT */ + if (p_token->c_val) + free(p_token->c_val); - _token_free(p_token); + if (p_token->p_array) + array_delete(p_token->p_array); - } + free(p_token); + } #ifdef DEBUG_TOKEN_REFCOUNT - else if (p_token->i_ref_count < 0) { - token_print_ln(p_token); - printf("Token ref count is 0 > %d\n", - p_token->i_ref_count); + else { + printf("Token refcount debug: Token ref count is 0 > %d\n", + p_token->i_ref_count); + } +#endif /* DEBUG_TOKEN_REFCOUNT */ } +#ifdef DEBUG_TOKEN_REFCOUNT else { printf("Token refcount debug: Token ref count is 0 < %d\n", p_token->i_ref_count); - token_print_ln(p_token); } #endif /* DEBUG_TOKEN_REFCOUNT */ } -void -token_delete_force(Token *p_token) { - token_ref_down(p_token); - //printf("FORCE DEL "); - //token_print_ln(p_token); - _token_free(p_token); -} - void token_print(Token *p_token) { - printf("(org=%d, id=%05u, line=%05d, pos=%04d, type=%s", - (int) p_token->b_source_token, + printf("(id=%05u, line=%05d, pos=%04d, type=%s, val=%s, ival=%d, dval=%f," + " refs=%d)", p_token->u_token_id, p_token->i_line_nr, p_token->i_pos_nr, - tt_get_name(p_token->tt_cur)); - - if (IS_ARRAY(p_token)) { - } else { - printf(", val=%s, ival=%d, dval=%f", - p_token->c_val, - p_token->i_val, - p_token->d_val); - } - - printf(", refs=%d)", p_token->i_ref_count); -} - -void -token_print_ln(Token *p_token) { - token_print(p_token); - printf("\n"); + tt_get_name(p_token->tt_cur), + p_token->c_val, + p_token->i_val, + p_token->d_val, + p_token->i_ref_count); } void diff --git a/src/core/token.h b/src/core/token.h index e683e01..caf4854 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -53,10 +53,6 @@ #define IS_ASSIGNABLE(t) (START_ASSIGNABLES < t && t < END_ASSIGNABLES) #define IS_NUMERICAL(t) (START_NUMERICAL < t && t < END_NUMERICAL) #define IS_NOT_NUMERICAL(t) !(IS_NUMERICAL(t)) -#define IS_ARRAY(t) (t->tt_cur == TT_ARRAY) -#define IS_NOT_ARRAY(t) !(IS_ARRAY(t)) -#define IS_SOURCE_TOKEN(t) (t->b_source_token == true) -#define IS_NOT_SOURCE_TOKEN(t) (t->b_source_token == false) #define token_get_filename(t) \ (t->c_filename != NULL ? t->c_filename : "Code string") @@ -74,6 +70,7 @@ #define token_get_posnr(t) t->i_pos_nr #define token_get_linenr(t) t->i_line_nr #define token_ref_up(t) ++t->i_ref_count +#define token_ref_down(t) --t->i_ref_count typedef enum { // Diverse @@ -89,8 +86,8 @@ typedef enum { TT_INTEGER, TT_DOUBLE, END_NUMERICAL, - TT_ARRAY, TT_STRING, + TT_ARRAY, END_ASSIGNABLES, TT_IDENT, END_TYPES, @@ -106,6 +103,7 @@ typedef enum { TT_PROC, TT_FUNC, TT_MY, + TT_ARR, TT_WHILE, TT_UNTIL, TT_NEXT, @@ -167,7 +165,6 @@ typedef struct { char *c_filename; unsigned int u_token_id; int i_ref_count; - _Bool b_source_token; Array *p_array; } Token; @@ -181,17 +178,13 @@ Token* token_new_(char *c_val, TokenType tt_cur, char *c_filename); Token* token_new_dummy(); void token_copy_vals(Token *p_token_to, Token *p_token_from); void token_delete(Token *p_token); -void token_delete_force(Token *p_token); -void token_delete_force_cb(void *p_token); void token_delete_cb(void *p_token); void token_ref_down_cb(void *p_token); void* token_copy_cb(void *p_token); char* tt_get_name(TokenType tt_cur); void token_print_cb(void *p_void); void token_print(Token *p_token); -void token_print_ln(Token *p_token); void token_print_val(Token *p_token); -int token_ref_down(Token *p_token); TokenType get_tt(char *c_token); #endif diff --git a/src/data/array.c b/src/data/array.c index da5bee8..2ae4ece 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -41,7 +41,7 @@ array_new() { p_array->i_size = 0; p_array->pp_ae = NULL; - return (p_array); + return p_array; } @@ -92,7 +92,7 @@ array_insert(Array *p_array, int i_index, void *p_val) { void* array_remove(Array *p_array, int i_index) { if (p_array->i_size <= i_index) - return (NULL); + return NULL; ArrayElement *p_ae = p_array->pp_ae[i_index]; void *p_ret = p_ae->p_val; @@ -105,7 +105,7 @@ array_remove(Array *p_array, int i_index) { array_resize(p_array, p_array->i_size - 1); - return (p_ret); + return p_ret; } void @@ -147,17 +147,17 @@ array_resize(Array *p_array, int i_size) { void* array_get(Array *p_array, int i_index) { if (p_array->i_size > i_index) - return (p_array->pp_ae[i_index]->p_val); + return p_array->pp_ae[i_index]->p_val; - return (NULL); + return NULL; } _Bool array_defined(Array *p_array, int i_index) { if (i_index >= p_array->i_size) - return (false); + return false; - return (p_array->pp_ae[i_index]->p_val != NULL); + return p_array->pp_ae[i_index]->p_val != NULL; } void @@ -222,7 +222,7 @@ arrayelement_new(void *p_val) { p_ae->p_val = p_val; - return (p_ae); + return p_ae; } void @@ -235,27 +235,14 @@ arrayelement_delete(ArrayElement *p_ae) { ArrayIterator* arrayiterator_new(Array *p_array) { - if (p_array == NULL) - return (NULL); + if (!p_array) + return NULL; ArrayIterator *p_arrayiterator = malloc(sizeof(ArrayIterator)); p_arrayiterator->p_array = p_array; p_arrayiterator->i_cur_pos = 0; - p_arrayiterator->b_is_reverse = false; - - return (p_arrayiterator); -} - -ArrayIterator* -arrayiterator_new_reverse(Array *p_array) { - ArrayIterator *p_arrayiterator = arrayiterator_new(p_array); - if (p_arrayiterator == NULL) - return (NULL); - - p_arrayiterator->b_is_reverse = true; - p_arrayiterator->i_cur_pos = p_array->i_size; - return (p_arrayiterator); + return p_arrayiterator; } void @@ -266,21 +253,14 @@ arrayiterator_delete(ArrayIterator *p_arrayiterator) { _Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator) { - if (p_arrayiterator->b_is_reverse) - return (p_arrayiterator->i_cur_pos >= 0); - - return (p_arrayiterator->i_cur_pos < - array_get_size(p_arrayiterator->p_array)); + return p_arrayiterator->i_cur_pos < + array_get_size(p_arrayiterator->p_array); } void* arrayiterator_next(ArrayIterator *p_arrayiterator) { if (!arrayiterator_has_next(p_arrayiterator)) - return (NULL); - - if (p_arrayiterator->b_is_reverse) - return (array_get(p_arrayiterator->p_array, - p_arrayiterator->i_cur_pos--)); + return NULL; - return (array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++)); + return array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++); } diff --git a/src/data/array.h b/src/data/array.h index 6170c29..b343521 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -58,7 +58,6 @@ typedef struct { typedef struct { Array *p_array; int i_cur_pos; - _Bool b_is_reverse; } ArrayIterator; Array *array_new(); @@ -81,7 +80,6 @@ ArrayElement *arrayelement_new(void *p_val); void arrayelement_delete(ArrayElement *p_ae); ArrayIterator *arrayiterator_new(Array *p_array); -ArrayIterator *arrayiterator_new_reverse(Array *p_array); void arrayiterator_delete(ArrayIterator *p_arrayiterator); _Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator); void *arrayiterator_next(ArrayIterator *p_arrayiterator); diff --git a/src/data/hash.c b/src/data/hash.c index d3f7634..5555eb1 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -44,13 +44,13 @@ hash_new(unsigned i_size) { p_hash->i_size = i_size; p_hash->i_cur_size = 0; - p_hash->p_elems = (HashElem *) calloc((int)i_size, sizeof(HashElem)); + p_hash->p_elems = (HashElem *) calloc(i_size, sizeof(HashElem)); /*Set all positions as "free" */ for (int i = 0; i < i_size; ++i) p_hash->p_elems[i].flag = 'f'; - return (p_hash); + return p_hash; } void diff --git a/src/data/stack.c b/src/data/stack.c index 0f5f58e..9afb9b4 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -62,8 +62,7 @@ stack_empty(Stack *p_stack) { } void -stack_debug(Stack *p_stack, void *p_val) { - printf("bPUSH %d %d\n", stack_size(p_stack), (int)p_stack); +stack_push(Stack *p_stack, void *p_val) { StackElem *p_elem = stackelem_new(); p_elem->p_val = p_val; @@ -74,20 +73,6 @@ stack_debug(Stack *p_stack, void *p_val) { p_stack->p_last = p_stack->p_first; ++p_stack->i_size; - printf("aPUSH %d %d\n", stack_size(p_stack), (int)p_stack); -} - -unsigned -stack_push(Stack *p_stack, void *p_val) { - StackElem *p_elem = stackelem_new(); - p_elem->p_val = p_val; - p_elem->p_next = p_stack->p_first; - p_stack->p_first = p_elem; - - if (p_stack->p_last == NULL) - p_stack->p_last = p_stack->p_first; - - return (++p_stack->i_size); } void* diff --git a/src/data/stack.h b/src/data/stack.h index e9fafea..4774cef 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -59,8 +59,7 @@ Stack *stack_new(); StackElem *stackelem_new(); _Bool stack_empty(Stack *p_stack); void stack_iterate(Stack *p_stack, void (*func)(void *p_void)); -unsigned stack_push(Stack *p_stack, void *p_val); -void stack_debug(Stack *p_stack, void *p_val); +void stack_push(Stack *p_stack, void *p_val); void *stack_pop(Stack *p_stack); void stack_clear(Stack *p_stack); void stack_delete(Stack *p_stack); diff --git a/src/defines.h b/src/defines.h index 29df2c2..569d20a 100644 --- a/src/defines.h +++ b/src/defines.h @@ -75,14 +75,11 @@ exit(1); } #define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n"); -#define EXTRA_CHECKS -#define DEBUG_SCOPE_UPDOWN //#define DEBUG_TOKEN_REFCOUNT //#define DEBUG_FUNCTION_PROCESS -#define DEBUG_TRACK +//#define DEBUG_TRACK //#define DEBUG_BLOCK_GET //#define DEBUG_EXPRESSION_GET -//#define DEBUG_ARRAY_GET #ifdef DEBUG_TRACK #define TRACK \ diff --git a/src/fype.c b/src/fype.c index 1b6d975..af61c1d 100644 --- a/src/fype.c +++ b/src/fype.c @@ -61,7 +61,9 @@ fype_delete(Fype *p_fype) { hash_iterate(p_fype->p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_fype->p_hash_syms); - list_iterate(p_fype->p_list_token, token_delete_force_cb); + //list_iterate(p_fype->p_list_token, token_print_cb); + list_iterate(p_fype->p_list_token, token_ref_down_cb); + //list_iterate(p_fype->p_list_token, token_print_cb); list_delete(p_fype->p_list_token); if (p_fype->c_basename) diff --git a/tags b/tags new file mode 100644 index 0000000..19d561e --- /dev/null +++ b/tags @@ -0,0 +1,289 @@ +CASE ./src/core/token.c /^#define CASE(t,r) case t: return r;$/ +CHECK ./src/core/token.c /^#define CHECK(...) if (!strcmp(c_token, __VA_ARGS_/ +Mmain ./src/main.c /^main(int i_argc, char **pc_argv) {$/ +_FUNCTION_ERROR ./src/core/function.c /^#define _FUNCTION_ERROR(m,t) \\$/ +_GARBAGE_ERROR ./src/core/garbage.c /^#define _GARBAGE_ERROR(m) \\$/ +_Garbage ./src/core/garbage.c /^} _Garbage;$/ +_INTERPRET_ERROR ./src/core/interpret.c /^#define _INTERPRET_ERROR(m,t) \\$/ +_add_semicolon_to_list ./src/core/scanner.c /^_add_semicolon_to_list(Scanner *p_scanner) {$/ +_block ./src/core/interpret.c /^_block(Interpret *p_interpret) {$/ +_block_get ./src/core/interpret.c /^_block_get(Interpret *p_interpret, List *p_list_bl/ +_block_skip ./src/core/interpret.c /^_block_skip(Interpret *p_interpret) {$/ +_compare ./src/core/interpret.c /^_compare(Interpret *p_interpret) {$/ +_control ./src/core/interpret.c /^_control(Interpret *p_interpret) {$/ +_expression ./src/core/interpret.c /^_expression(Interpret *p_interpret) {$/ +_expression_ ./src/core/interpret.c /^_expression_(Interpret *p_interpret) {$/ +_expression_get ./src/core/interpret.c /^_expression_get(Interpret *p_interpret, List *p_li/ +_func_decl ./src/core/interpret.c /^_func_decl(Interpret *p_interpret) {$/ +_garbage_print ./src/core/garbage.c /^_garbage_print(_Garbage *p_garbage) {$/ +_indent ./src/data/tree.c /^void _indent(int i_indent) {$/ +_list_copy_cb ./src/data/list.c /^_list_copy_cb(void *p_void1, void *p_cpy) {$/ +_next ./src/core/interpret.c /^_next(Interpret *p_interpret) {$/ +_next_tt ./src/core/interpret.c /^_next_tt(Interpret *p_interpret) {$/ +_print_lookahead ./src/core/interpret.c /^_print_lookahead(Interpret *p_interpret) {$/ +_proc_decl ./src/core/interpret.c /^_proc_decl(Interpret *p_interpret) {$/ +_process ./src/core/function.c /^_process(Interpret *p_interpret, Token *p_token_st/ +_product ./src/core/interpret.c /^_product(Interpret *p_interpret) {$/ +_product2 ./src/core/interpret.c /^_product2(Interpret *p_interpret) {$/ +_program ./src/core/interpret.c /^_program(Interpret *p_interpret) {$/ +_scanner_get_next_char ./src/core/scanner.c /^_scanner_get_next_char(Scanner *p_scanner) {$/ +_scanner_has_next_char ./src/core/scanner.c /^_scanner_has_next_char(Scanner *p_scanner) {$/ +_scope_get_hash ./src/core/scope.c /^_scope_get_hash(Scope *p_scope, char *c_key) {$/ +_statement ./src/core/interpret.c /^_statement(Interpret *p_interpret) {$/ +_sum ./src/core/interpret.c /^_sum(Interpret *p_interpret) {$/ +_term ./src/core/interpret.c /^_term(Interpret *p_interpret) {$/ +_tree_print ./src/data/tree.c /^_tree_print(TreeNode *p_treenode, int i_indent) {$/ +_tree_print_cb ./src/data/tree.c /^_tree_print_cb(void *p_void, void *p_indent) {$/ +_tree_print_cb2 ./src/data/tree.c /^_tree_print_cb2(void *p_void, void *p_indent) {$/ +_var_assign ./src/core/interpret.c /^_var_assign(Interpret *p_interpret) {$/ +_var_decl ./src/core/interpret.c /^_var_decl(Interpret *p_interpret) {$/ +_var_list ./src/core/interpret.c /^_var_list(Interpret *p_interpret) {$/ +argv_addopt ./src/argv.c /^argv_addopt(char c_opt, Tupel *p_tupel_argv) {$/ +argv_check_argc ./src/argv.c /^argv_check_argc(int i_required, unsigned i_argc_le/ +argv_checkopt ./src/argv.c /^argv_checkopt(char c_opt, Tupel *p_tupel_argv) {$/ +argv_checkopts ./src/argv.c /^argv_checkopts(char *c_opts, Tupel *p_tupel_argv) / +argv_help ./src/argv.c /^argv_help() {$/ +argv_run ./src/argv.c /^argv_run(Fype *p_fype, int i_argc, char **pc_argv)/ +argv_switch ./src/argv.c /^argv_switch(char c_arg, Tupel *p_tupel_argv, unsig/ +argv_synopsis ./src/argv.c /^argv_synopsis(Tupel *p_tupel_argv) {$/ +argv_tupel_delete ./src/argv.c /^argv_tupel_delete(Tupel *p_tupel_argv) {$/ +array_defined ./src/data/array.c /^array_defined(Array *p_array, int i_index) {$/ +array_delete ./src/data/array.c /^array_delete(Array *p_array) {$/ +array_get ./src/data/array.c /^array_get(Array *p_array, int i_index) {$/ +array_insert ./src/data/array.c /^array_insert(Array *p_array, int i_index, void *p_/ +array_iterate ./src/data/array.c /^array_iterate(Array *p_array, void (*func)(void *)/ +array_iterate2 ./src/data/array.c /^array_iterate2(Array *p_array, void (*func)(void */ +array_new ./src/data/array.c /^array_new() {$/ +array_print_int ./src/data/array.c /^array_print_int(Array *p_array) {$/ +array_push ./src/data/array.c /^array_push(Array *p_array, void *p_void) {$/ +array_remove ./src/data/array.c /^array_remove(Array *p_array, int i_index) {$/ +array_resize ./src/data/array.c /^array_resize(Array *p_array, int i_size) {$/ +array_set ./src/data/array.c /^array_set(Array *p_array, int i_index, void *p_val/ +array_splice ./src/data/array.c /^array_splice(Array *p_array, int i_index, Array *p/ +array_unshift ./src/data/array.c /^array_unshift(Array *p_array, void *p_void) {$/ +arrayelement_delete ./src/data/array.c /^arrayelement_delete(ArrayElement *p_ae) {$/ +arrayelement_new ./src/data/array.c /^arrayelement_new(void *p_val) {$/ +arrayiterator_delete ./src/data/array.c /^arrayiterator_delete(ArrayIterator *p_arrayiterato/ +arrayiterator_has_next ./src/data/array.c /^arrayiterator_has_next(ArrayIterator *p_arrayitera/ +arrayiterator_new ./src/data/array.c /^arrayiterator_new(Array *p_array) {$/ +arrayiterator_next ./src/data/array.c /^arrayiterator_next(ArrayIterator *p_arrayiterator)/ +convert_function_arg_types_to_highest ./src/core/convert.c /^convert_function_arg_types_to_highest(Stack *p_sta/ +convert_to_double ./src/core/convert.c /^convert_to_double(Token *p_token) {$/ +convert_to_highest ./src/core/convert.c /^convert_to_highest(Token *p_token1, Token *p_token/ +convert_to_integer ./src/core/convert.c /^convert_to_integer(Token *p_token) {$/ +convert_to_integer_get ./src/core/convert.c /^convert_to_integer_get(Token *p_token) {$/ +convert_to_string ./src/core/convert.c /^convert_to_string(Token *p_token) {$/ +convert_to_tt ./src/core/convert.c /^convert_to_tt(Token *p_token, TokenType tt) {$/ +dat_clear ./src/data/dat.c /^dat_clear(Dat *p_dat) {$/ +dat_delete ./src/data/dat.c /^dat_delete(Dat *p_dat) {$/ +dat_empty ./src/data/dat.c /^dat_empty(Dat *p_dat) {$/ +dat_first ./src/data/dat.c /^dat_first(Dat *p_dat) {$/ +dat_first_t ./src/data/dat.c /^dat_first_t(Dat *p_dat, TYPE *p_type) {$/ +dat_iterate ./src/data/dat.c /^dat_iterate(Dat *p_dat, void (*func)(void *)) {$/ +dat_iterate_t ./src/data/dat.c /^dat_iterate_t(Dat *p_dat, void (*func)(void *, TYP/ +dat_iterate_tl ./src/data/dat.c /^dat_iterate_tl(Dat *p_dat, void (*func)(void *, TY/ +dat_last ./src/data/dat.c /^dat_last(Dat *p_dat) {$/ +dat_last_t ./src/data/dat.c /^dat_last_t(Dat *p_dat, TYPE *p_type) {$/ +dat_new ./src/data/dat.c /^dat_new() {$/ +dat_pop ./src/data/dat.c /^dat_pop(Dat *p_dat) {$/ +dat_pop_t ./src/data/dat.c /^dat_pop_t(Dat *p_dat, TYPE *p_type) {$/ +dat_push ./src/data/dat.c /^dat_push(Dat *p_dat, void *p_val) {$/ +dat_push_t ./src/data/dat.c /^dat_push_t(Dat *p_dat, void *p_val, TYPE type) {$/ +dat_second ./src/data/dat.c /^dat_second(Dat *p_dat) {$/ +dat_second_t ./src/data/dat.c /^dat_second_t(Dat *p_dat, TYPE *p_type) {$/ +dat_size ./src/data/dat.c /^dat_size(Dat *p_dat) {$/ +datelem_new ./src/data/dat.c /^datelem_new() {$/ +datelem_new_t ./src/data/dat.c /^datelem_new_t(TYPE type) {$/ +datiter_dat ./src/data/dat.c /^datiter_dat(DatIter *p_iter) {$/ +datiter_delete ./src/data/dat.c /^datiter_delete(DatIter *p_iter) {$/ +datiter_left ./src/data/dat.c /^datiter_left(DatIter *p_iter) {$/ +datiter_new ./src/data/dat.c /^datiter_new(Dat *p_dat) {$/ +datiter_next ./src/data/dat.c /^datiter_next(DatIter *p_iter) {$/ +datiter_next_t ./src/data/dat.c /^datiter_next_t(DatIter *p_iter, TYPE *p_type) {$/ +datiter_skip ./src/data/dat.c /^datiter_skip(DatIter *p_iter, unsigned i_num) {$/ +function_is_buildin ./src/core/function.c /^function_is_buildin(Token *p_token_ident) {$/ +function_is_self_defined ./src/core/function.c /^function_is_self_defined(Interpret *p_interpret) {/ +function_process ./src/core/function.c /^function_process(Interpret *p_interpret, Token *p_/ +function_process_buildin ./src/core/function.c /^function_process_buildin(Interpret *p_interpret, T/ +function_process_self_defined ./src/core/function.c /^function_process_self_defined(Interpret *p_interpr/ +fype_delete ./src/fype.c /^fype_delete(Fype *p_fype) {$/ +fype_new ./src/fype.c /^fype_new() {$/ +fype_run ./src/fype.c /^fype_run(int i_argc, char **pc_argv) {$/ +garbage_add ./src/core/garbage.c /^garbage_add(void *p, GarbageType type) {$/ +garbage_add2 ./src/core/garbage.c /^garbage_add2(void *p, void (*p_func)(void*), int */ +garbage_add_token ./src/core/garbage.c /^garbage_add_token(Token *p_token) {$/ +garbage_collect ./src/core/garbage.c /^garbage_collect() {$/ +garbage_destroy ./src/core/garbage.c /^garbage_destroy() {$/ +garbage_init ./src/core/garbage.c /^garbage_init() {$/ +get_tt ./src/core/token.c /^get_tt(char *c_token) {$/ +hash_addrisfree ./src/data/hash.c /^hash_addrisfree(Hash *p_hash, int i_addr) {$/ +hash_addrisocc ./src/data/hash.c /^hash_addrisocc(Hash *p_hash, int i_addr, char *c_k/ +hash_delete ./src/data/hash.c /^hash_delete(Hash *p_hash) {$/ +hash_get ./src/data/hash.c /^hash_get(Hash *p_hash, char *c_key) {$/ +hash_get_ht ./src/data/hash.c /^hash_get_ht(Hash *p_hash, char *c_key, TYPE *p_typ/ +hash_get_ht_addr ./src/data/hash.c /^hash_get_ht_addr(Hash *p_hash, char *c_key, TYPE */ +hash_getaddr ./src/data/hash.c /^hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP/ +hash_insert ./src/data/hash.c /^hash_insert(Hash *p_hash, char *c_key, void *p_val/ +hash_insert_ht ./src/data/hash.c /^hash_insert_ht(Hash *p_hash, char *c_key, void *p_/ +hash_iterate ./src/data/hash.c /^hash_iterate(Hash *p_hash, void (*func)(void *)) {/ +hash_new ./src/data/hash.c /^hash_new(unsigned i_size) {$/ +hash_nextaddr ./src/data/hash.c /^hash_nextaddr(Hash *p_hash, int i_max_tries, char / +hash_print ./src/data/hash.c /^hash_print(Hash *p_hash) {$/ +hash_print_addrval ./src/data/hash.c /^hash_print_addrval(Hash *p_hash, int i_addr) {$/ +hash_remove ./src/data/hash.c /^hash_remove(Hash *p_hash, char *c_key) {$/ +hash_size ./src/data/hash.c /^hash_size(Hash *p_hash, int i_size) {$/ +interpret_delete ./src/core/interpret.c /^interpret_delete(Interpret *p_interpret) {$/ +interpret_new ./src/core/interpret.c /^interpret_new(List *p_list_token, Hash *p_hash_sym/ +interpret_process ./src/core/interpret.c /^interpret_process(Interpret *p_interpret) {$/ +interpret_run ./src/core/interpret.c /^interpret_run(Fype *p_fype) {$/ +interpret_subprocess ./src/core/interpret.c /^interpret_subprocess(Interpret *p_interpret, List / +list_add_back ./src/data/list.c /^list_add_back(List *p_list, void *p_val) {$/ +list_add_front ./src/data/list.c /^list_add_front(List *p_list, void *p_val) {$/ +list_clear ./src/data/list.c /^list_clear(List *p_list) {$/ +list_clear_and_free_vals ./src/data/list.c /^list_clear_and_free_vals(List *p_list) {$/ +list_concat_back ./src/data/list.c /^list_concat_back(List *p_list1, List *p_list2) {$/ +list_concat_front ./src/data/list.c /^list_concat_front(List *p_list1, List *p_list2) {$/ +list_copy ./src/data/list.c /^list_copy(List *p_list) {$/ +list_copy2 ./src/data/list.c /^list_copy2(List *p_list, void* (*func)(void *)) {$/ +list_delete ./src/data/list.c /^list_delete(List *p_list) {$/ +list_delete_and_free_vals ./src/data/list.c /^list_delete_and_free_vals(List *p_list) {$/ +list_delete_cb ./src/data/list.c /^list_delete_cb(void *p_list) {$/ +list_empty ./src/data/list.c /^list_empty(List *p_list) {$/ +list_iterate ./src/data/list.c /^list_iterate(List *p_list, void (*func)(void *)) {/ +list_iterate2 ./src/data/list.c /^list_iterate2(List *p_list, void (*func)(void *, v/ +list_iterate2_ptr ./src/data/list.c /^list_iterate2_ptr(List *p_list, void (*func)(void / +list_iterate3 ./src/data/list.c /^list_iterate3(List *p_list, void (*func)(void *, v/ +list_iterate3_ptr ./src/data/list.c /^list_iterate3_ptr(List *p_list, void (*func)(void / +list_new ./src/data/list.c /^list_new() {$/ +list_remove_back ./src/data/list.c /^list_remove_back(List *p_list) {$/ +list_remove_elem ./src/data/list.c /^list_remove_elem(List *p_list, ListElem *p_elem_re/ +list_remove_front ./src/data/list.c /^list_remove_front(List *p_list) {$/ +list_size ./src/data/list.c /^list_size(List *p_list) {$/ +listelem_new ./src/data/list.c /^listelem_new() {$/ +listiterator_current ./src/data/list.c /^listiterator_current(ListIterator *p_iter) {$/ +listiterator_delete ./src/data/list.c /^listiterator_delete(ListIterator *p_iter) {$/ +listiterator_end ./src/data/list.c /^listiterator_end(ListIterator *p_iter) {$/ +listiterator_get_state ./src/data/list.c /^listiterator_get_state(ListIterator *p_iter) {$/ +listiterator_has_next ./src/data/list.c /^listiterator_has_next(ListIterator *p_iter) {$/ +listiterator_new ./src/data/list.c /^listiterator_new(List *p_list) {$/ +listiterator_new_reverse ./src/data/list.c /^listiterator_new_reverse(List *p_list) {$/ +listiterator_next ./src/data/list.c /^listiterator_next(ListIterator *p_iter) {$/ +listiterator_next_elem ./src/data/list.c /^listiterator_next_elem(ListIterator *p_iter) {$/ +listiterator_prev ./src/data/list.c /^listiterator_prev(ListIterator *p_iter) {$/ +listiterator_set_state ./src/data/list.c /^listiterator_set_state(ListIterator *p_iter, ListI/ +listiteratorstate_delete ./src/data/list.c /^listiteratorstate_delete(ListIteratorState *p_stat/ +map_clear ./src/data/map.c /^map_clear(Map *p_map) {$/ +map_clear_and_free_vals ./src/data/map.c /^map_clear_and_free_vals(Map *p_map) {$/ +map_delete ./src/data/map.c /^map_delete(Map *p_map) {$/ +map_delete_and_free_vals ./src/data/map.c /^map_delete_and_free_vals(Map *p_map) {$/ +map_empty ./src/data/map.c /^map_empty(Map *p_map) {$/ +map_exists ./src/data/map.c /^map_exists(Map *p_map, char *c_key) {$/ +map_exists2 ./src/data/map.c /^map_exists2(Map *p_map, char *c_key1, char *c_key2/ +map_full ./src/data/map.c /^map_full(Map *p_map) {$/ +map_get ./src/data/map.c /^map_get(Map *p_map, char *c_key) {$/ +map_get2 ./src/data/map.c /^map_get2(Map *p_map, char *c_key1, char *c_key2) {/ +map_get_addr ./src/data/map.c /^map_get_addr(Map *p_map, char *c_key) {$/ +map_get_key ./src/data/map.c /^map_get_key(Map *p_map, void *p_val) {$/ +map_insert ./src/data/map.c /^map_insert(Map *p_map, char *c_key, void *p_val) {/ +map_insert2 ./src/data/map.c /^map_insert2(Map *p_map, char *c_key1, char *c_key2/ +map_insert_if_not_exists ./src/data/map.c /^map_insert_if_not_exists(Map *p_map, char *c_key, / +map_iterate ./src/data/map.c /^map_iterate(Map *p_map, void (*func) (void *)) {$/ +map_iterate2 ./src/data/map.c /^map_iterate2(Map *p_map, void (*func) (void *, voi/ +map_iterate2_keys ./src/data/map.c /^map_iterate2_keys(Map *p_map, void (*func) (void */ +map_iterate3 ./src/data/map.c /^map_iterate3(Map *p_map, void (*func) (void *, voi/ +map_iterate3_keys ./src/data/map.c /^map_iterate3_keys(Map *p_map, void (*func) (void */ +map_iterate_keys ./src/data/map.c /^map_iterate_keys(Map *p_map, void (*func) (void *,/ +map_new ./src/data/map.c /^map_new(int i_max_size) {$/ +map_new_named ./src/data/map.c /^map_new_named(int i_max_size, char *c_name) {$/ +map_next_free_addr ./src/data/map.c /^map_next_free_addr(Map *p_map) {$/ +map_print ./src/data/map.c /^map_print(Map *p_map) {$/ +map_remove ./src/data/map.c /^map_remove(Map *p_map, char *c_key) {$/ +queue_clear ./src/data/queue.c /^queue_clear(Queue *p_queue) {$/ +queue_delete ./src/data/queue.c /^queue_delete(Queue *p_queue) {$/ +queue_empty ./src/data/queue.c /^queue_empty(Queue *p_queue) {$/ +queue_iterate ./src/data/queue.c /^queue_iterate(Queue *p_queue, void (*func)(void *)/ +queue_iterate_t ./src/data/queue.c /^queue_iterate_t(Queue *p_queue, void (*func)(void / +queue_iterate_tl ./src/data/queue.c /^queue_iterate_tl(Queue *p_queue, void (*func)(void/ +queue_new ./src/data/queue.c /^queue_new() {$/ +queue_pop ./src/data/queue.c /^queue_pop(Queue *p_queue) {$/ +queue_pop_t ./src/data/queue.c /^queue_pop_t(Queue *p_queue, TYPE *p_type) {$/ +queue_push ./src/data/queue.c /^queue_push(Queue *p_queue, void *p_val) {$/ +queue_push_t ./src/data/queue.c /^queue_push_t(Queue *p_queue, void *p_val, TYPE typ/ +queue_size ./src/data/queue.c /^queue_size(Queue *p_queue) {$/ +queueelem_new ./src/data/queue.c /^queueelem_new() {$/ +queueelem_new_t ./src/data/queue.c /^queueelem_new_t(TYPE type) {$/ +queueiter_delete ./src/data/queue.c /^queueiter_delete(QueueIter *p_iter) {$/ +queueiter_left ./src/data/queue.c /^queueiter_left(QueueIter *p_iter) {$/ +queueiter_new ./src/data/queue.c /^queueiter_new(Queue *p_queue) {$/ +queueiter_next ./src/data/queue.c /^queueiter_next(QueueIter *p_iter) {$/ +queueiter_next_t ./src/data/queue.c /^queueiter_next_t(QueueIter *p_iter, TYPE *p_type) / +queueiter_queue ./src/data/queue.c /^queueiter_queue(QueueIter *p_iter) {$/ +scanner_add_token ./src/core/scanner.c /^scanner_add_token(Scanner *p_scanner, char **cc_to/ +scanner_cleanup_list_token_cb ./src/core/scanner.c /^scanner_cleanup_list_token_cb(void *p_void) {$/ +scanner_delete ./src/core/scanner.c /^scanner_delete(Scanner *p_scanner) {$/ +scanner_get_tt_cur ./src/core/scanner.c /^scanner_get_tt_cur(char *c_token) {$/ +scanner_new ./src/core/scanner.c /^scanner_new(List *p_list_token, Tupel *p_tupel_arg/ +scanner_post_task ./src/core/scanner.c /^scanner_post_task(Scanner *p_scanner) {$/ +scanner_run ./src/core/scanner.c /^scanner_run(Fype *p_fype) {$/ +scope_delete ./src/core/scope.c /^scope_delete(Scope *p_scope) {$/ +scope_down ./src/core/scope.c /^scope_down(Scope *p_scope) {$/ +scope_exists ./src/core/scope.c /^scope_exists(Scope *p_scope, char *c_key) {$/ +scope_get ./src/core/scope.c /^scope_get(Scope *p_scope, char *c_key) {$/ +scope_new ./src/core/scope.c /^scope_new(Hash *p_hash_syms) {$/ +scope_newset ./src/core/scope.c /^scope_newset(Scope *p_scope, char *c_key, Symbol */ +scope_remove ./src/core/scope.c /^scope_remove(Scope *p_scope, char *c_key) {$/ +scope_reset ./src/core/scope.c /^scope_reset(Scope *p_scope, char *c_key, Symbol *p/ +scope_up ./src/core/scope.c /^scope_up(Scope *p_scope) {$/ +stack_clear ./src/data/stack.c /^stack_clear(Stack *p_stack) {$/ +stack_concat ./src/data/stack.c /^stack_concat(Stack *p_stack, Stack *p_stack_concat/ +stack_delete ./src/data/stack.c /^stack_delete(Stack *p_stack) {$/ +stack_delete_and_free ./src/data/stack.c /^stack_delete_and_free(Stack *p_stack) {$/ +stack_empty ./src/data/stack.c /^stack_empty(Stack *p_stack) {$/ +stack_iterate ./src/data/stack.c /^stack_iterate(Stack *p_stack, void (*func)(void *p/ +stack_merge ./src/data/stack.c /^stack_merge(Stack *p_stack, Stack *p_stack_merge) / +stack_new ./src/data/stack.c /^stack_new() {$/ +stack_pop ./src/data/stack.c /^stack_pop(Stack *p_stack) {$/ +stack_push ./src/data/stack.c /^stack_push(Stack *p_stack, void *p_val) {$/ +stack_size ./src/data/stack.c /^stack_size(Stack *p_stack) {$/ +stackelem_new ./src/data/stack.c /^stackelem_new() {$/ +stackiterator_delete ./src/data/stack.c /^stackiterator_delete(StackIterator *p_iter) {$/ +stackiterator_has_next ./src/data/stack.c /^stackiterator_has_next(StackIterator *p_iter) {$/ +stackiterator_new ./src/data/stack.c /^stackiterator_new(Stack *p_stack) {$/ +stackiterator_next ./src/data/stack.c /^stackiterator_next(StackIterator *p_iter) {$/ +stackiterator_remove_prev ./src/data/stack.c /^stackiterator_remove_prev(StackIterator *p_iter) {/ +symbol_cleanup_hash_syms_cb ./src/core/symbol.c /^symbol_cleanup_hash_syms_cb(void *p_void) {$/ +symbol_delete ./src/core/symbol.c /^symbol_delete(Symbol *p_symbol) {$/ +symbol_new ./src/core/symbol.c /^symbol_new(SymbolType sym, void *p_val) {$/ +token_copy_cb ./src/core/token.c /^token_copy_cb(void *p_void) {$/ +token_copy_vals ./src/core/token.c /^void token_copy_vals(Token *p_token_to, Token *p_t/ +token_delete ./src/core/token.c /^token_delete(Token *p_token) {$/ +token_delete_cb ./src/core/token.c /^token_delete_cb(void *p_void) {$/ +token_new ./src/core/token.c /^token_new(char *c_val, TokenType tt_cur, int i_lin/ +token_new_ ./src/core/token.c /^token_new_(char *c_val, TokenType tt_cur, char *c_/ +token_new_array ./src/core/token.c /^token_new_array(int i_size) {$/ +token_new_copy ./src/core/token.c /^token_new_copy(Token *p_token) {$/ +token_new_double ./src/core/token.c /^token_new_double(double d_val) {$/ +token_new_dummy ./src/core/token.c /^token_new_dummy() {$/ +token_new_integer ./src/core/token.c /^token_new_integer(int i_val) {$/ +token_new_string ./src/core/token.c /^token_new_string(char *c_val) {$/ +token_print ./src/core/token.c /^token_print(Token *p_token) {$/ +token_print_cb ./src/core/token.c /^token_print_cb(void *p_void) {$/ +token_print_val ./src/core/token.c /^token_print_val(Token *p_token) {$/ +token_ref_down_cb ./src/core/token.c /^token_ref_down_cb(void *p_void) {$/ +tree_delete ./src/data/tree.c /^tree_delete(Tree *p_tree) {$/ +tree_new ./src/data/tree.c /^tree_new() {$/ +tree_print ./src/data/tree.c /^tree_print(Tree *p_tree) {$/ +treeiterator_delete ./src/data/tree.c /^treeiterator_delete(TreeIterator *p_iter) {$/ +treeiterator_has_next ./src/data/tree.c /^treeiterator_has_next(TreeIterator *p_iter) {$/ +treeiterator_new ./src/data/tree.c /^treeiterator_new(Tree *p_tree) {$/ +treeiterator_next ./src/data/tree.c /^treeiterator_next(TreeIterator *p_iter) {$/ +treeiteratorstate_delete ./src/data/tree.c /^treeiteratorstate_delete(TreeIteratorState *p_stat/ +treeiteratorstate_new ./src/data/tree.c /^treeiteratorstate_new(TreeNode *ptn) {$/ +treenode_delete ./src/data/tree.c /^treenode_delete(TreeNode *p_treenode) {$/ +treenode_insert_left ./src/data/tree.c /^treenode_insert_left(TreeNode *p_treenode, TreeNod/ +treenode_insert_right ./src/data/tree.c /^treenode_insert_right(TreeNode *p_treenode, TreeNo/ +treenode_new ./src/data/tree.c /^treenode_new(void *p_val) {$/ +treenode_new2 ./src/data/tree.c /^treenode_new2(void *p_val, void *p_val2) {$/ +tt_get_name ./src/core/token.c /^tt_get_name(TokenType tt_cur) {$/ +tupel_delete ./src/data/tupel.c /^tupel_delete(Tupel *p_tupel) {$/ +tupel_new ./src/data/tupel.c /^tupel_new() {$/ diff --git a/tmp/test.fy b/tmp/test.fy index da59a2a..afe2cec 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,26 +1,3 @@ -my foo = 1; -if 1 { - say foo; -} - -say 1 + 1; - - -#my foo = [1 2 3]; -# Prints num of elements in foo -#assert "TT_INTEGER" == type say integer foo; - -#my bar = [1 2 3]; -# Prints num of elements in bar -#assert "TT_DOUBLE" == type say double bar; - -#my baz = [1 2 3]; -# Prints num of elements in baz -#assert "TT_STRING" == type say string baz; - -# Prints "1 3 5 6\n" -#say [1 3 5 6]; - -#my foo = 2 * 3 + 1.2; +my foo = [1, 2.2, "3"]; diff --git a/tmp/test.out b/tmp/test.out index 9028487..afe2cec 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,114 +1,3 @@ -my foo = 1; -if 1 { - say foo; -} - -say 1 + 1; - - -#my foo = [1 2 3]; -# Prints num of elements in foo -#assert "TT_INTEGER" == type say integer foo; - -#my bar = [1 2 3]; -# Prints num of elements in bar -#assert "TT_DOUBLE" == type say double bar; - -#my baz = [1 2 3]; -# Prints num of elements in baz -#assert "TT_STRING" == type say string baz; - -# Prints "1 3 5 6\n" -#say [1 3 5 6]; - -#my foo = 2 * 3 + 1.2; -Token (org=1, id=00000, line=00002, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00001, line=00002, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00002, line=00002, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00003, line=00002, pos=0011, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (org=1, id=00004, line=00002, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00005, line=00004, pos=0003, type=TT_IF, val=if, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00006, line=00004, pos=0005, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (org=1, id=00007, line=00004, pos=0007, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00008, line=00005, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00009, line=00005, pos=0009, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00010, line=00005, pos=0010, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00011, line=00006, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00012, line=00008, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00013, line=00008, pos=0006, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (org=1, id=00014, line=00008, pos=0008, type=TT_ADD, val=+, ival=0, dval=0.000000, refs=1) -Token (org=1, id=00015, line=00008, pos=0010, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) -Token (org=1, id=00016, line=00008, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) -DEBUG(Track: ./src/core/interpret.c:_program:166) -DEBUG(Token: my) -DEBUG(Track: ./src/core/interpret.c:_statement:448) -DEBUG(Token: my) -DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) -DEBUG(Token: my) -DEBUG(Track: ./src/core/interpret.c:_func_decl:414) -DEBUG(Token: my) -DEBUG(Track: ./src/core/interpret.c:_var_decl:181) -DEBUG(Token: my) -DEBUG(Track: ./src/core/interpret.c:_var_assign:216) -DEBUG(Token: foo) -DEBUG(Track: ./src/core/interpret.c:_compare:640) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_sum:691) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_product:742) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_product2:780) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_term:814) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_var_list:260) -DEBUG(Token: ;) -DEBUG(Track: ./src/core/interpret.c:_statement:448) -DEBUG(Token: if) -DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) -DEBUG(Token: if) -DEBUG(Track: ./src/core/interpret.c:_func_decl:414) -DEBUG(Token: if) -DEBUG(Track: ./src/core/interpret.c:_var_decl:181) -DEBUG(Token: if) -DEBUG(Track: ./src/core/interpret.c:_control:507) -DEBUG(Token: if) -DEBUG(Track: ./src/core/interpret.c:_compare:640) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_sum:691) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_product:742) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_product2:780) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_term:814) -DEBUG(Token: 1) -DEBUG(Track: ./src/core/interpret.c:_program:166) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_statement:448) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_proc_decl:380) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_func_decl:414) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_var_decl:181) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_control:507) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_expression:483) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_compare:640) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_sum:691) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_product:742) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_product2:780) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_term:814) -DEBUG(Token: say) -DEBUG(Track: ./src/core/interpret.c:_compare:640) -DEBUG(Token: foo) -DEBUG(Track: ./src/core/ \ No newline at end of file +my foo = [1, 2.2, "3"]; -- cgit v1.2.3 From 41e590f05d295a40ba4633d493be1ffe28f16ddf Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 18 Oct 2008 22:49:03 +0000 Subject: examples work now again --- Makefile | 4 +++- docs/help.txt | 2 +- docs/version.txt | 2 +- fype | Bin 47628 -> 425663 bytes src/build.h | 2 +- src/core/interpret.c | 12 ++++++------ src/core/token.c | 4 ++-- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 5624b2e..e9501d3 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ SRCS!=find ./src -name '*.c' OBJS=$(SRCS:.c=.o) CC?=cc #CC=mingw32-gcc -#DEBUG=-g3 -ggdb3 +DEBUG=-g3 -ggdb3 CFLAGS+=-c -Wall -std=c99 -pedantic $(DEBUG) LDADD+= HEADER?=docs/header.txt @@ -73,6 +73,8 @@ run: ./$(BIN) ./tmp/test.fy core: gdb $(BIN) $(BIN).core +gdb: + gdb --args $(BIN) ./tmp/test.fy newline: @echo examples: all diff --git a/docs/help.txt b/docs/help.txt index b99470f..ad6748e 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9213 +Fype v0.1-devel Build 9215 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/version.txt b/docs/version.txt index 10949e7..41b77c9 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9213 +Fype v0.1-devel Build 9215 diff --git a/fype b/fype index fdb0ae5..ae7db04 100755 Binary files a/fype and b/fype differ diff --git a/src/build.h b/src/build.h index ced3b51..c6f0270 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9214 +#define BUILDNR 9215 #define OS_FREEBSD #endif diff --git a/src/core/interpret.c b/src/core/interpret.c index 5aa07ef..a69e85a 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -175,7 +175,7 @@ _var_decl(Interpret *p_interpret) { _CHECK TRACK switch (p_interpret->tt) { - //case TT_ARR: //TODO cleanup TT_ARR + //case TT_ARR: //TODO cleanup TT_ARR case TT_MY: { if (_NEXT_TT != TT_IDENT) @@ -200,7 +200,7 @@ _var_decl(Interpret *p_interpret) { } } default: - break; + break; } return (0); @@ -226,8 +226,8 @@ _var_assign(Interpret *p_interpret) { p_interpret->p_stack = stack_new(); if (_expression_(p_interpret)) { - function_process_buildin(p_interpret, p_token, - p_interpret->p_stack); + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); stack_merge(p_stack, p_interpret->p_stack); stack_delete(p_interpret->p_stack); @@ -917,9 +917,9 @@ _term(Interpret *p_interpret) { Token *p_token = p_interpret->p_token; _NEXT - Token *p_token_arr = token_new_array(ARRAY_SIZE); + Token *p_token_arr = token_new_array(ARRAY_SIZE); stack_push(p_interpret->p_stack, p_token_arr); - _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); + _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); } break; diff --git a/src/core/token.c b/src/core/token.c index 1a2aec9..4626e5a 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -344,8 +344,8 @@ token_delete(Token *p_token) { if (p_token->c_val) free(p_token->c_val); - if (p_token->p_array) - array_delete(p_token->p_array); + if (p_token->p_array) + array_delete(p_token->p_array); free(p_token); } -- cgit v1.2.3 From 982e35bd0bd9bc9b55c0f898556c3e1831141258 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 19 Oct 2008 00:12:57 +0000 Subject: synonyms work --- README | 16 ++++++++++++++++ docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6105 -> 6311 bytes docs/pod/fype.html | 14 ++++++++++++++ docs/pod/fype.man | 18 +++++++++++++++++- docs/pod/fype.pod | 13 +++++++++++++ docs/pod/fype.tex | 18 ++++++++++++++++++ docs/pod/fype.txt | 16 ++++++++++++++++ docs/stats.txt | 6 +++--- docs/version.txt | 2 +- examples/synonyms.fy | 32 ++++++++++++++++++++++++++++++++ fype | Bin 425663 -> 425827 bytes src/build.h | 2 +- src/core/interpret.c | 21 +++++++++++++++++++-- src/core/symbol.c | 3 +++ src/core/symbol.h | 2 ++ tmp/test.fy | 31 ++++++++++++++++++++++++++++++- 17 files changed, 186 insertions(+), 10 deletions(-) create mode 100644 examples/synonyms.fy diff --git a/README b/README index 66a9695..5c8b9b6 100644 --- a/README +++ b/README @@ -205,6 +205,22 @@ VARIABLES say foo; } +SYNONYMS TO VARIABLES/IDENTIFIERS + Each variable can have as many synonyms as wished. A synonym is another + name to access the content of a specific variable. Here is an example of + how to use synomyms: + + my foo = "foo"; + my bar = \foo; + foo = "bar"; + + # The synonym variable should now also set to "bar" + assert "bar" == bar; + + Synonyms can be used for all kind of identifiers. It's not limited to + normal variables but can be also used for function and procedure names + etc. + BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the diff --git a/docs/help.txt b/docs/help.txt index ad6748e..0e73284 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9215 +Fype v0.1-devel Build 9219 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index e05d4c5..e39eee0 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index b88a1b4..02c30c4 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -38,6 +38,7 @@
    • VARIABLES
    • +
    • SYNONYMS TO VARIABLES/IDENTIFIERS
    • BUILT IN FUNCTIONS
      • @@ -310,6 +311,19 @@ not.


        +

        SYNONYMS TO VARIABLES/IDENTIFIERS

        +

        Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms:

        +
        +        my foo = "foo";
        +        my bar = \foo;
        +        foo = "bar";
        +
        +        # The synonym variable should now also set to "bar"
        +        assert "bar" == bar;
        +

        Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc.

        +

        +

        +

        BUILT IN FUNCTIONS

        In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types.

        diff --git a/docs/pod/fype.man b/docs/pod/fype.man index b3d89bf..42daf43 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-09-06" "Fype v0.1-devel Build 9208" "The Fype Users Manual Page" +.TH FYPE 1 "2008-10-19" "Fype v0.1-devel Build 9219" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution .PP @@ -345,6 +345,22 @@ not. \& say foo; \& } .Ve +.SH "SYNONYMS TO VARIABLES/IDENTIFIERS" +.IX Header "SYNONYMS TO VARIABLES/IDENTIFIERS" +Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: +.PP +.Vb 3 +\& my foo = "foo"; +\& my bar = \efoo; +\& foo = "bar"; +.Ve +.PP +.Vb 2 +\& # The synonym variable should now also set to "bar" +\& assert "bar" == bar; +.Ve +.PP +Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. .SH "BUILT IN FUNCTIONS" .IX Header "BUILT IN FUNCTIONS" In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 2e41645..2773c4e 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -219,6 +219,19 @@ not. say foo; } +=head1 SYNONYMS TO VARIABLES/IDENTIFIERS + +Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: + + my foo = "foo"; + my bar = \foo; + foo = "bar"; + + # The synonym variable should now also set to "bar" + assert "bar" == bar; + +Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. + =head1 BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index bcdea5f..19fa9f2 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -272,6 +272,24 @@ not. say foo; } \end{verbatim} +\section{SYNONYMS TO VARIABLES/IDENTIFIERS\label{SYNONYMS_TO_VARIABLES_IDENTIFIERS}\index{SYNONYMS TO VARIABLES/IDENTIFIERS}} + + +Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: + +\begin{verbatim} + my foo = "foo"; + my bar = \foo; + foo = "bar"; +\end{verbatim} +\begin{verbatim} + # The synonym variable should now also set to "bar" + assert "bar" == bar; +\end{verbatim} + + +Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. + \section{BUILT IN FUNCTIONS\label{BUILT_IN_FUNCTIONS}\index{BUILT IN FUNCTIONS}} diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 66a9695..5c8b9b6 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -205,6 +205,22 @@ VARIABLES say foo; } +SYNONYMS TO VARIABLES/IDENTIFIERS + Each variable can have as many synonyms as wished. A synonym is another + name to access the content of a specific variable. Here is an example of + how to use synomyms: + + my foo = "foo"; + my bar = \foo; + foo = "bar"; + + # The synonym variable should now also set to "bar" + assert "bar" == bar; + + Synonyms can be used for all kind of identifiers. It's not limited to + normal variables but can be also used for function and procedure names + etc. + BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the diff --git a/docs/stats.txt b/docs/stats.txt index b49fcc8..ffca974 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7460 -===> Num of Fype source examples : 13 -===> Num of Fype source lines : 321 +===> Num of C source lines : 7482 +===> Num of Fype source examples : 14 +===> Num of Fype source lines : 353 diff --git a/docs/version.txt b/docs/version.txt index 41b77c9..84a6485 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9215 +Fype v0.1-devel Build 9219 diff --git a/examples/synonyms.fy b/examples/synonyms.fy new file mode 100644 index 0000000..3ffb105 --- /dev/null +++ b/examples/synonyms.fy @@ -0,0 +1,32 @@ +#* + * Examples of how to use synonyms + *# + +# Create a variable foo, and bar is a synonym for foo +my foo = "foo"; +my bar = \foo; + +# Reset the value of foo +foo = "bar"; + +# The synonym variable should now also set to "bar" +assert "bar" == say bar; + +# Create a new procedure baz +proc baz { + say "I am baz"; +} + +# Make a synonym baz, and undefine baz +my bay = \baz; +undef baz; + +# bay still has a reference of the original procedure baz +bay; # this prints aut "I am baz" + +assert 0 == defined baz; +assert 1 == defined bay; + +# This removes the procedure from memory +undef bay; + diff --git a/fype b/fype index ae7db04..f36669e 100755 Binary files a/fype and b/fype differ diff --git a/src/build.h b/src/build.h index c6f0270..4e73ee5 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9215 +#define BUILDNR 9233 #define OS_FREEBSD #endif diff --git a/src/core/interpret.c b/src/core/interpret.c index a69e85a..2c80163 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -222,6 +222,22 @@ _var_assign(Interpret *p_interpret) { if (p_interpret->tt == TT_ASSIGN) { _NEXT + if (p_interpret->tt == TT_VID) { + _NEXT + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expected identifier", p_interpret->p_token); + + char *c_name_ = token_get_val(p_interpret->p_token); + Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name_); + + if (p_symbol == NULL) + _INTERPRET_ERROR("No such symbol", p_interpret->p_token); + + symbol_ref_up(p_symbol); + scope_newset(p_interpret->p_scope, c_name, p_symbol); + _NEXT + + } else { Stack *p_stack = p_interpret->p_stack; p_interpret->p_stack = stack_new(); @@ -236,11 +252,10 @@ _var_assign(Interpret *p_interpret) { p_token = stack_top(p_interpret->p_stack); Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); scope_newset(p_interpret->p_scope, c_name, p_symbol); - } else { return (0); } - + } } else { Token *p_token = token_new_integer(0); Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); @@ -912,6 +927,7 @@ _term(Interpret *p_interpret) { } break; + /* case TT_PARANT_AL: { Token *p_token = p_interpret->p_token; @@ -922,6 +938,7 @@ _term(Interpret *p_interpret) { _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr); } break; + */ case TT_PARANT_L: { diff --git a/src/core/symbol.c b/src/core/symbol.c index 2343cdb..37a0cae 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -42,12 +42,14 @@ symbol_new(SymbolType sym, void *p_val) { p_symbol->sym = sym; p_symbol->p_val = p_val; + p_symbol->i_refs = 1; return p_symbol; } void symbol_delete(Symbol *p_symbol) { + if (--p_symbol->i_refs == 0) { switch (symbol_get_sym(p_symbol)) { case SYM_PROCEDURE: { @@ -58,6 +60,7 @@ symbol_delete(Symbol *p_symbol) { NO_DEFAULT; } free(p_symbol); + } } void diff --git a/src/core/symbol.h b/src/core/symbol.h index 2bd248c..a077bd6 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -41,6 +41,7 @@ #define symbol_set_sym(s,st) s->sym = st #define symbol_get_val(s) s->p_val #define symbol_get_sym(s) s->sym +#define symbol_ref_up(s) ++s->i_refs #define IS_A_FUNCTION(s) (s == SYM_INLINEFUNCTION || s == SYM_FUNCTION) #define IS_NOT_A_FUNCTION(s) !IS_A_FUNCTION(s) @@ -55,6 +56,7 @@ typedef enum { typedef struct { SymbolType sym; void *p_val; + unsigned i_refs; } Symbol; Symbol* symbol_new(SymbolType sym, void *p_val); diff --git a/tmp/test.fy b/tmp/test.fy index afe2cec..3ffb105 100644 --- a/tmp/test.fy +++ b/tmp/test.fy @@ -1,3 +1,32 @@ +#* + * Examples of how to use synonyms + *# +# Create a variable foo, and bar is a synonym for foo +my foo = "foo"; +my bar = \foo; + +# Reset the value of foo +foo = "bar"; + +# The synonym variable should now also set to "bar" +assert "bar" == say bar; + +# Create a new procedure baz +proc baz { + say "I am baz"; +} + +# Make a synonym baz, and undefine baz +my bay = \baz; +undef baz; + +# bay still has a reference of the original procedure baz +bay; # this prints aut "I am baz" + +assert 0 == defined baz; +assert 1 == defined bay; + +# This removes the procedure from memory +undef bay; -my foo = [1, 2.2, "3"]; -- cgit v1.2.3 From d4657a5d7029ea66d19a5d238a9dd6bf75fe5bb0 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 19 Oct 2008 00:24:01 +0000 Subject: jo --- examples/all-examples.txt | 33 +++++++++++++++++++++++++++++++++ src/build.h | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/examples/all-examples.txt b/examples/all-examples.txt index bdf199f..b438de3 100644 --- a/examples/all-examples.txt +++ b/examples/all-examples.txt @@ -296,6 +296,39 @@ assert 0 == (say defined bar); +#* + * Examples of how to use synonyms + *# + +# Create a variable foo, and bar is a synonym for foo +my foo = "foo"; +my bar = \foo; + +# Reset the value of foo +foo = "bar"; + +# The synonym variable should now also set to "bar" +assert "bar" == say bar; + +# Create a new procedure baz +proc baz { + say "I am baz"; +} + +# Make a synonym baz, and undefine baz +my bay = \baz; +undef baz; + +# bay still has a reference of the original procedure baz +bay; # this prints aut "I am baz" + +assert 0 == defined baz; +assert 1 == defined bay; + +# This removes the procedure from memory +undef bay; + + #* * Examples how to convert types *# diff --git a/src/build.h b/src/build.h index 4e73ee5..61eb78f 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9233 +#define BUILDNR 9235 #define OS_FREEBSD #endif -- cgit v1.2.3 From 3d7b35bb37c066489546751e100c2c2b823ccba3 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 19 Oct 2008 17:48:21 +0000 Subject: refs and syms --- NEW | 3 +++ README | 26 +++++++++++++++++++++++++- docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6311 -> 6475 bytes docs/pod/fype.html | 26 ++++++++++++++++++++++++-- docs/pod/fype.man | 43 ++++++++++++++++++++++++++++++++++++++++--- docs/pod/fype.pod | 26 +++++++++++++++++++++++++- docs/pod/fype.tex | 34 +++++++++++++++++++++++++++++++++- docs/pod/fype.txt | 26 +++++++++++++++++++++++++- docs/stats.txt | 4 ++-- docs/version.txt | 2 +- examples/synonyms.fy | 5 +++++ fype | Bin 425827 -> 426303 bytes src/build.h | 2 +- src/core/function.c | 11 +++++++++++ src/core/interpret.c | 21 +++++++++++++++++++++ src/core/token.c | 2 ++ src/core/token.h | 1 + 18 files changed, 220 insertions(+), 14 deletions(-) diff --git a/NEW b/NEW index e69de29..25373a6 100644 --- a/NEW +++ b/NEW @@ -0,0 +1,3 @@ +keywords: + syms + refs diff --git a/README b/README index 5c8b9b6..4e82ce6 100644 --- a/README +++ b/README @@ -205,7 +205,7 @@ VARIABLES say foo; } -SYNONYMS TO VARIABLES/IDENTIFIERS +SYNONYMS Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: @@ -221,6 +221,30 @@ SYNONYMS TO VARIABLES/IDENTIFIERS normal variables but can be also used for function and procedure names etc. + # Create a new procedure baz + proc baz { say "I am baz"; } + + # Make a synonym baz, and undefine baz + my bay = \baz; + + undef baz; + + # bay still has a reference of the original procedure baz + bay; # this prints aut "I am baz" + + The syms keyword gives you the total number of synonyms pointing to a + specific value: + + my foo = 1; + say syms foo; # Prints 1 + + my baz = \foo; + say syms foo; # Prints 2 + say syms baz; # Prints 2 + + undef baz; + say syms foo; # Prints 1 + BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the diff --git a/docs/help.txt b/docs/help.txt index 0e73284..db604de 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9219 +Fype v0.1-devel Build 9240 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index e39eee0..64bebfb 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 02c30c4..6400295 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -38,7 +38,7 @@

    • VARIABLES
    • -
    • SYNONYMS TO VARIABLES/IDENTIFIERS
    • +
    • SYNONYMS
    • BUILT IN FUNCTIONS
      • @@ -311,7 +311,7 @@ not.


        -

        SYNONYMS TO VARIABLES/IDENTIFIERS

        +

        SYNONYMS

        Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms:

                 my foo = "foo";
        @@ -321,6 +321,28 @@ not.

        # The synonym variable should now also set to "bar" assert "bar" == bar;

        Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc.

        +
        +        # Create a new procedure baz
        +        proc baz { say "I am baz"; }
        +
        +        # Make a synonym baz, and undefine baz
        +        my bay = \baz;
        +
        +        undef baz;
        +
        +        # bay still has a reference of the original procedure baz
        +        bay; # this prints aut "I am baz"
        +

        The syms keyword gives you the total number of synonyms pointing to a specific value:

        +
        +        my foo = 1;
        +        say syms foo; # Prints 1
        +
        +        my baz = \foo; 
        +        say syms foo; # Prints 2
        +        say syms baz; # Prints 2
        +
        +        undef baz;
        +        say syms foo; # Prints 1


        diff --git a/docs/pod/fype.man b/docs/pod/fype.man index 42daf43..36f3ef2 100644 --- a/docs/pod/fype.man +++ b/docs/pod/fype.man @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FYPE 1" -.TH FYPE 1 "2008-10-19" "Fype v0.1-devel Build 9219" "The Fype Users Manual Page" +.TH FYPE 1 "2008-10-19" "Fype v0.1-devel Build 9240" "The Fype Users Manual Page" .SH "NAME" \&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution .PP @@ -345,8 +345,8 @@ not. \& say foo; \& } .Ve -.SH "SYNONYMS TO VARIABLES/IDENTIFIERS" -.IX Header "SYNONYMS TO VARIABLES/IDENTIFIERS" +.SH "SYNONYMS" +.IX Header "SYNONYMS" Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: .PP .Vb 3 @@ -361,6 +361,43 @@ Each variable can have as many synonyms as wished. A synonym is another name to .Ve .PP Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. +.PP +.Vb 2 +\& # Create a new procedure baz +\& proc baz { say "I am baz"; } +.Ve +.PP +.Vb 2 +\& # Make a synonym baz, and undefine baz +\& my bay = \ebaz; +.Ve +.PP +.Vb 1 +\& undef baz; +.Ve +.PP +.Vb 2 +\& # bay still has a reference of the original procedure baz +\& bay; # this prints aut "I am baz" +.Ve +.PP +The \fBsyms\fR keyword gives you the total number of synonyms pointing to a specific value: +.PP +.Vb 2 +\& my foo = 1; +\& say syms foo; # Prints 1 +.Ve +.PP +.Vb 3 +\& my baz = \efoo; +\& say syms foo; # Prints 2 +\& say syms baz; # Prints 2 +.Ve +.PP +.Vb 2 +\& undef baz; +\& say syms foo; # Prints 1 +.Ve .SH "BUILT IN FUNCTIONS" .IX Header "BUILT IN FUNCTIONS" In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod index 2773c4e..1e29a6d 100644 --- a/docs/pod/fype.pod +++ b/docs/pod/fype.pod @@ -219,7 +219,7 @@ not. say foo; } -=head1 SYNONYMS TO VARIABLES/IDENTIFIERS +=head1 SYNONYMS Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: @@ -232,6 +232,30 @@ Each variable can have as many synonyms as wished. A synonym is another name to Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. + # Create a new procedure baz + proc baz { say "I am baz"; } + + # Make a synonym baz, and undefine baz + my bay = \baz; + + undef baz; + + # bay still has a reference of the original procedure baz + bay; # this prints aut "I am baz" + +The B keyword gives you the total number of synonyms pointing to a specific value: + + my foo = 1; + say syms foo; # Prints 1 + + my baz = \foo; + say syms foo; # Prints 2 + say syms baz; # Prints 2 + + undef baz; + say syms foo; # Prints 1 + + =head1 BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the arguments. The types inside the () specify the return types. diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex index 19fa9f2..8bdd585 100644 --- a/docs/pod/fype.tex +++ b/docs/pod/fype.tex @@ -272,7 +272,7 @@ not. say foo; } \end{verbatim} -\section{SYNONYMS TO VARIABLES/IDENTIFIERS\label{SYNONYMS_TO_VARIABLES_IDENTIFIERS}\index{SYNONYMS TO VARIABLES/IDENTIFIERS}} +\section{SYNONYMS\label{SYNONYMS}\index{SYNONYMS}} Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: @@ -290,6 +290,38 @@ Each variable can have as many synonyms as wished. A synonym is another name to Synonyms can be used for all kind of identifiers. It's not limited to normal variables but can be also used for function and procedure names etc. +\begin{verbatim} + # Create a new procedure baz + proc baz { say "I am baz"; } +\end{verbatim} +\begin{verbatim} + # Make a synonym baz, and undefine baz + my bay = \baz; +\end{verbatim} +\begin{verbatim} + undef baz; +\end{verbatim} +\begin{verbatim} + # bay still has a reference of the original procedure baz + bay; # this prints aut "I am baz" +\end{verbatim} + + +The \textbf{syms} keyword gives you the total number of synonyms pointing to a specific value: + +\begin{verbatim} + my foo = 1; + say syms foo; # Prints 1 +\end{verbatim} +\begin{verbatim} + my baz = \foo; + say syms foo; # Prints 2 + say syms baz; # Prints 2 +\end{verbatim} +\begin{verbatim} + undef baz; + say syms foo; # Prints 1 +\end{verbatim} \section{BUILT IN FUNCTIONS\label{BUILT_IN_FUNCTIONS}\index{BUILT IN FUNCTIONS}} diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt index 5c8b9b6..4e82ce6 100644 --- a/docs/pod/fype.txt +++ b/docs/pod/fype.txt @@ -205,7 +205,7 @@ VARIABLES say foo; } -SYNONYMS TO VARIABLES/IDENTIFIERS +SYNONYMS Each variable can have as many synonyms as wished. A synonym is another name to access the content of a specific variable. Here is an example of how to use synomyms: @@ -221,6 +221,30 @@ SYNONYMS TO VARIABLES/IDENTIFIERS normal variables but can be also used for function and procedure names etc. + # Create a new procedure baz + proc baz { say "I am baz"; } + + # Make a synonym baz, and undefine baz + my bay = \baz; + + undef baz; + + # bay still has a reference of the original procedure baz + bay; # this prints aut "I am baz" + + The syms keyword gives you the total number of synonyms pointing to a + specific value: + + my foo = 1; + say syms foo; # Prints 1 + + my baz = \foo; + say syms foo; # Prints 2 + say syms baz; # Prints 2 + + undef baz; + say syms foo; # Prints 1 + BUILT IN FUNCTIONS In Fype, operators are built in functions as well. The difference is, that they may be written in infix notation instead in front of the diff --git a/docs/stats.txt b/docs/stats.txt index ffca974..03653bc 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7482 +===> Num of C source lines : 7517 ===> Num of Fype source examples : 14 -===> Num of Fype source lines : 353 +===> Num of Fype source lines : 358 diff --git a/docs/version.txt b/docs/version.txt index 84a6485..2d10fd4 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9219 +Fype v0.1-devel Build 9240 diff --git a/examples/synonyms.fy b/examples/synonyms.fy index 3ffb105..0dd30f5 100644 --- a/examples/synonyms.fy +++ b/examples/synonyms.fy @@ -19,7 +19,12 @@ proc baz { # Make a synonym baz, and undefine baz my bay = \baz; + +# Should be the num of syms for the same value +assert 2 == syms baz; +assert 2 == syms bay; undef baz; +assert 1 == syms bay; # bay still has a reference of the original procedure baz bay; # this prints aut "I am baz" diff --git a/fype b/fype index f36669e..e820c09 100755 Binary files a/fype and b/fype differ diff --git a/src/build.h b/src/build.h index 61eb78f..65820e2 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9235 +#define BUILDNR 9245 #define OS_FREEBSD #endif diff --git a/src/core/function.c b/src/core/function.c index fda40b8..c25834d 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -575,6 +575,9 @@ function_is_buildin(Token *p_token_ident) { if (strcmp("not", token_get_val(p_token_ident)) == 0) return (true); + if (strcmp("refs", token_get_val(p_token_ident)) == 0) + return (true); + return (false); } @@ -812,6 +815,14 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, break; NO_DEFAULT; } + + } else if (strcmp("refs", token_get_val(p_token_ident)) == 0) { + if (0 == stack_size(p_stack_args)) + _FUNCTION_ERROR("No argument given", p_token_ident); + + Token *p_token_top = stack_pop(p_stack_args); + Token *p_token = token_new_integer(p_token_top->i_ref_count); + stack_push(p_stack_args, p_token); } } diff --git a/src/core/interpret.c b/src/core/interpret.c index 2c80163..9dbd7df 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -927,6 +927,27 @@ _term(Interpret *p_interpret) { } break; + case TT_SYMS: + { + _NEXT + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expexted identifier for 'syms'", + p_interpret->p_token); + + char *c_name = token_get_val(p_interpret->p_token); + Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name); + if (p_symbol == NULL) + _INTERPRET_ERROR("No such symbol", p_interpret->p_token); + + + Token *p_token_num_refs = token_new_integer(p_symbol->i_refs); + stack_push(p_interpret->p_stack, p_token_num_refs); + + _NEXT; + return (1); + } + break; + /* case TT_PARANT_AL: { diff --git a/src/core/token.c b/src/core/token.c index 4626e5a..2f08097 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -52,6 +52,7 @@ get_tt(char *c_token) { CHECK("next") TT_NEXT; CHECK("defined") TT_DEFINED; CHECK("undef") TT_UNDEF; + CHECK("syms") TT_SYMS; CHECK("ret") TT_RET; CHECK("const") TT_CONST; CHECK("proc") TT_PROC; @@ -129,6 +130,7 @@ tt_get_name(TokenType tt_cur) { CASE(TT_NEXT,"TT_NEXT") CASE(TT_DEFINED,"TT_DEFINED") CASE(TT_UNDEF,"TT_UNDEF") + CASE(TT_SYMS,"TT_SYMS") CASE(TT_INT,"TT_INT") CASE(END_KEYWORDS, "END_KEYWORDS") diff --git a/src/core/token.h b/src/core/token.h index caf4854..2107dd2 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -110,6 +110,7 @@ typedef enum { TT_INT, TT_DEFINED, TT_UNDEF, + TT_SYMS, END_KEYWORDS, START_PARANTS, -- cgit v1.2.3 From 1956010ec79fbab604efc2b60d0af325e91f67b8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 20 Oct 2008 18:36:28 +0000 Subject: Improved GC debugging. Debugging printings now labeled with DEBUG::$NAME::$ETC::..: --- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- fype | Bin 426303 -> 426417 bytes src/build.h | 2 +- src/core/function.c | 9 ++++--- src/core/garbage.c | 60 ++++++++++++++++++++++++++++------------------ src/core/garbage.h | 7 +++++- src/core/interpret.c | 66 +++++++++++++++++++++++++-------------------------- src/core/symbol.c | 22 ++++++++--------- src/core/token.c | 4 ++-- src/defines.h | 1 + tags | 4 ++-- 13 files changed, 100 insertions(+), 81 deletions(-) diff --git a/docs/help.txt b/docs/help.txt index db604de..6d0cd97 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9240 +Fype v0.1-devel Build 9255 Copyright by Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index 03653bc..769199d 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7517 +===> Num of C source lines : 7536 ===> Num of Fype source examples : 14 ===> Num of Fype source lines : 358 diff --git a/docs/version.txt b/docs/version.txt index 2d10fd4..42da0a6 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9240 +Fype v0.1-devel Build 9255 diff --git a/fype b/fype index e820c09..487f008 100755 Binary files a/fype and b/fype differ diff --git a/src/build.h b/src/build.h index 65820e2..d62160a 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9245 +#define BUILDNR 9256 #define OS_FREEBSD #endif diff --git a/src/core/function.c b/src/core/function.c index c25834d..4d25a60 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -62,9 +62,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, #ifdef DEBUG_FUNCTION_PROCESS if (p_token_op2 == NULL) - printf("PROCESS OPERATOR %s\n", tt_get_name(tt_op)); + printf("DEBUG::FUNCTION::PROCESS: Operator %s\n", tt_get_name(tt_op)); else - printf("PROCESS OPERATOR %s %s\n", tt_get_name(tt_op), + printf("DEBUG::FUNCTION::PROCESS: Operator %s %s\n", tt_get_name(tt_op), tt_get_name(tt_op2)); token_print(p_token_next); @@ -161,7 +161,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, TokenType tt_highest = convert_to_highest(p_token_store, p_token_next); #ifdef DEBUG_FUNCTION_PROCESS - printf("===> %s %s %s\n", + printf("DEBUG::FUNCTION::PROCESS: ===> %s %s %s\n", tt_get_name(tt_highest), tt_get_name(tt_op), tt_get_name(tt_highest)); @@ -643,7 +643,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, } else if (strcmp("gc", token_get_val(p_token_ident)) == 0) { int i_count = garbage_collect(); - printf("ICOUNT %d\n", i_count); Token *p_token = token_new_integer(i_count); stack_push(p_stack_args, p_token); @@ -815,7 +814,7 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, break; NO_DEFAULT; } - + } else if (strcmp("refs", token_get_val(p_token_ident)) == 0) { if (0 == stack_size(p_stack_args)) _FUNCTION_ERROR("No argument given", p_token_ident); diff --git a/src/core/garbage.c b/src/core/garbage.c index aba19c4..1ba6831 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -41,6 +41,7 @@ List *LIST_GARBAGE = NULL; typedef struct { void (*p_func)(void*); + void (*p_print)(void*); int *p_ref_count; void *p_2free; GarbageType type; @@ -51,33 +52,20 @@ garbage_init() { LIST_GARBAGE = list_new(); } -void -_garbage_print(_Garbage *p_garbage) { - switch (p_garbage->type) { - case GC_TOKEN: - { - Token *p_token = p_garbage->p_2free; - token_print(p_token); - printf("\n"); - } - break; - } -} - void garbage_destroy() { garbage_collect(); - if (!list_empty(LIST_GARBAGE)) { EPRINTF("The garbage collector still has %d registered items which don't have" " a zero ref count!\n", list_size(LIST_GARBAGE)); - ListIterator *p_iter = listiterator_new(LIST_GARBAGE); - while (listiterator_has_next(p_iter)) { - _Garbage *p_garbage = listiterator_next(p_iter); - _garbage_print(p_garbage); - } - listiterator_delete(p_iter); + /* + ListIterator *p_iter = listiterator_new(LIST_GARBAGE); + while (listiterator_has_next(p_iter)) { + _Garbage *p_garbage = listiterator_next(p_iter); + } + listiterator_delete(p_iter); + */ _GARBAGE_ERROR("Garbage left"); } @@ -95,7 +83,13 @@ garbage_collect() { _Garbage *p_garbage = listiterator_next(p_iter); if (p_garbage->p_ref_count == NULL || *p_garbage->p_ref_count <= 0) { - // _garbage_print(p_garbage); +#ifdef DEBUG_GC + printf("DEBUG::GC: Freeing "); + if (NULL != p_garbage->p_print) + (*p_garbage->p_print) (p_garbage->p_2free); + else + printf("0x%x\n", (int) p_garbage->p_2free); +#endif /* DEBUG_GC */ (*p_garbage->p_func) (p_garbage->p_2free); free(p_garbage); ++i_count; @@ -109,6 +103,9 @@ garbage_collect() { list_delete(LIST_GARBAGE); LIST_GARBAGE = p_list_garbage_new; +#ifdef DEBUG_GC + printf("DEBUG::GC: Freed %d items\n", i_count); +#endif /* DEBUG_GC */ return (i_count); } @@ -119,11 +116,25 @@ garbage_add(void *p, GarbageType type) { } void -garbage_add2(void *p, void (*p_func)(void*), int *p_ref_count, GarbageType type) { +garbage_add2(void *p, + void (*p_func)(void*), + int *p_ref_count, + GarbageType type) { + garbage_add3(p, free, p_func, NULL, type); +} + +void +garbage_add3(void *p, + void (*p_func)(void*), + void (*p_print)(void*), + int *p_ref_count, + GarbageType type) { + _Garbage *p_garbage = malloc(sizeof(_Garbage)); p_garbage->p_2free = p; p_garbage->p_func = p_func; + p_garbage->p_print = p_print; p_garbage->p_ref_count = p_ref_count; p_garbage->type = type; @@ -132,5 +143,8 @@ garbage_add2(void *p, void (*p_func)(void*), int *p_ref_count, GarbageType type) void garbage_add_token(Token *p_token) { - garbage_add2(p_token, token_delete_cb, &p_token->i_ref_count, GC_TOKEN); + garbage_add3(p_token, + token_delete_cb, + token_print_cb, + &p_token->i_ref_count, GC_TOKEN); } diff --git a/src/core/garbage.h b/src/core/garbage.h index 8a8a820..0855b65 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -47,7 +47,12 @@ void garbage_init(); void garbage_destroy(); int garbage_collect(); void garbage_add(void *p, GarbageType type); -void garbage_add2(void *p, void (*p_func)(void*), int *p_ref_count, +void garbage_add2(void *p, void (*p_func)(void*), + int *p_ref_count, + GarbageType type); +void garbage_add3(void *p, void (*p_func)(void*), + void (*p_print)(void*), + int *p_ref_count, GarbageType type); void garbage_add_token(Token *p_token); diff --git a/src/core/interpret.c b/src/core/interpret.c index 9dbd7df..1b388d3 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -222,40 +222,40 @@ _var_assign(Interpret *p_interpret) { if (p_interpret->tt == TT_ASSIGN) { _NEXT - if (p_interpret->tt == TT_VID) { - _NEXT - if (p_interpret->tt != TT_IDENT) - _INTERPRET_ERROR("Expected identifier", p_interpret->p_token); + if (p_interpret->tt == TT_VID) { + _NEXT + if (p_interpret->tt != TT_IDENT) + _INTERPRET_ERROR("Expected identifier", p_interpret->p_token); - char *c_name_ = token_get_val(p_interpret->p_token); - Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name_); + char *c_name_ = token_get_val(p_interpret->p_token); + Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name_); - if (p_symbol == NULL) - _INTERPRET_ERROR("No such symbol", p_interpret->p_token); + if (p_symbol == NULL) + _INTERPRET_ERROR("No such symbol", p_interpret->p_token); - symbol_ref_up(p_symbol); - scope_newset(p_interpret->p_scope, c_name, p_symbol); - _NEXT + symbol_ref_up(p_symbol); + scope_newset(p_interpret->p_scope, c_name, p_symbol); + _NEXT - } else { - Stack *p_stack = p_interpret->p_stack; - p_interpret->p_stack = stack_new(); + } else { + Stack *p_stack = p_interpret->p_stack; + p_interpret->p_stack = stack_new(); - if (_expression_(p_interpret)) { - function_process_buildin(p_interpret, p_token, - p_interpret->p_stack); + if (_expression_(p_interpret)) { + function_process_buildin(p_interpret, p_token, + p_interpret->p_stack); - stack_merge(p_stack, p_interpret->p_stack); - stack_delete(p_interpret->p_stack); - p_interpret->p_stack = p_stack; + stack_merge(p_stack, p_interpret->p_stack); + stack_delete(p_interpret->p_stack); + p_interpret->p_stack = p_stack; - p_token = stack_top(p_interpret->p_stack); - Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); - scope_newset(p_interpret->p_scope, c_name, p_symbol); - } else { - return (0); + p_token = stack_top(p_interpret->p_stack); + Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); + scope_newset(p_interpret->p_scope, c_name, p_symbol); + } else { + return (0); + } } - } } else { Token *p_token = token_new_integer(0); Symbol *p_symbol = symbol_new(SYM_VARIABLE, p_token); @@ -304,9 +304,9 @@ _block_get(Interpret *p_interpret, List *p_list_block) { } #ifdef DEBUG_BLOCK_GET - printf("====> BLOCK\n"); + printf("DEBUG::BLOCK::GET: ====>\n"); list_iterate(p_list_block, token_print_cb); - printf("<==== BLOCK\n"); + printf("DEBUG::BLOCK::GET: <====\n"); #endif /* DEBUG_BLOCK_GET */ return (1); @@ -325,9 +325,9 @@ _expression_get(Interpret *p_interpret, List *p_list_expression) { } #ifdef DEBUG_EXPRESSION_GET - printf("====> EXPRESSION\n"); + printf("DEBUG::EXPRESSION::GET: ====>\n"); list_iterate(p_list_expression, token_print_cb); - printf("<==== EXPRESSION\n"); + printf("DEBUG::EXPRESSION::GET: <====\n"); #endif /* DEBUG_EXPRESSION_GET */ return (1); @@ -936,11 +936,11 @@ _term(Interpret *p_interpret) { char *c_name = token_get_val(p_interpret->p_token); Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name); - if (p_symbol == NULL) - _INTERPRET_ERROR("No such symbol", p_interpret->p_token); + if (p_symbol == NULL) + _INTERPRET_ERROR("No such symbol", p_interpret->p_token); - Token *p_token_num_refs = token_new_integer(p_symbol->i_refs); + Token *p_token_num_refs = token_new_integer(p_symbol->i_refs); stack_push(p_interpret->p_stack, p_token_num_refs); _NEXT; diff --git a/src/core/symbol.c b/src/core/symbol.c index 37a0cae..b6fd2ed 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -49,18 +49,18 @@ symbol_new(SymbolType sym, void *p_val) { void symbol_delete(Symbol *p_symbol) { - if (--p_symbol->i_refs == 0) { - switch (symbol_get_sym(p_symbol)) { - case SYM_PROCEDURE: - { - List *p_list_token = symbol_get_val(p_symbol); - list_delete(p_list_token); + if (--p_symbol->i_refs == 0) { + switch (symbol_get_sym(p_symbol)) { + case SYM_PROCEDURE: + { + List *p_list_token = symbol_get_val(p_symbol); + list_delete(p_list_token); + } + break; + NO_DEFAULT; + } + free(p_symbol); } - break; - NO_DEFAULT; - } - free(p_symbol); - } } void diff --git a/src/core/token.c b/src/core/token.c index 2f08097..4fb298e 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -340,7 +340,7 @@ token_delete(Token *p_token) { if (token_ref_down(p_token) <= 0) { if (p_token->i_ref_count == 0) { #ifdef DEBUG_TOKEN_REFCOUNT - printf("Token refcount debug: Token ref count is 0 == %d\n", + printf("DEBUG::TOKEN::REFCOUNT: Token refcount debug: Token ref count is 0 == %d\n", p_token->i_ref_count); #endif /* DEBUG_TOKEN_REFCOUNT */ if (p_token->c_val) @@ -353,7 +353,7 @@ token_delete(Token *p_token) { } #ifdef DEBUG_TOKEN_REFCOUNT else { - printf("Token refcount debug: Token ref count is 0 > %d\n", + printf("DEBUG::TOKEN::REFCOUNT: Token refcount debug: Token ref count is 0 > %d\n", p_token->i_ref_count); } #endif /* DEBUG_TOKEN_REFCOUNT */ diff --git a/src/defines.h b/src/defines.h index 569d20a..75d396b 100644 --- a/src/defines.h +++ b/src/defines.h @@ -75,6 +75,7 @@ exit(1); } #define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n"); +#define DEBUG_GC //#define DEBUG_TOKEN_REFCOUNT //#define DEBUG_FUNCTION_PROCESS //#define DEBUG_TRACK diff --git a/tags b/tags index 19d561e..bf7efaf 100644 --- a/tags +++ b/tags @@ -15,7 +15,6 @@ _expression ./src/core/interpret.c /^_expression(Interpret *p_interpret) {$/ _expression_ ./src/core/interpret.c /^_expression_(Interpret *p_interpret) {$/ _expression_get ./src/core/interpret.c /^_expression_get(Interpret *p_interpret, List *p_li/ _func_decl ./src/core/interpret.c /^_func_decl(Interpret *p_interpret) {$/ -_garbage_print ./src/core/garbage.c /^_garbage_print(_Garbage *p_garbage) {$/ _indent ./src/data/tree.c /^void _indent(int i_indent) {$/ _list_copy_cb ./src/data/list.c /^_list_copy_cb(void *p_void1, void *p_cpy) {$/ _next ./src/core/interpret.c /^_next(Interpret *p_interpret) {$/ @@ -110,7 +109,8 @@ fype_delete ./src/fype.c /^fype_delete(Fype *p_fype) {$/ fype_new ./src/fype.c /^fype_new() {$/ fype_run ./src/fype.c /^fype_run(int i_argc, char **pc_argv) {$/ garbage_add ./src/core/garbage.c /^garbage_add(void *p, GarbageType type) {$/ -garbage_add2 ./src/core/garbage.c /^garbage_add2(void *p, void (*p_func)(void*), int */ +garbage_add2 ./src/core/garbage.c /^garbage_add2(void *p, $/ +garbage_add3 ./src/core/garbage.c /^garbage_add3(void *p, $/ garbage_add_token ./src/core/garbage.c /^garbage_add_token(Token *p_token) {$/ garbage_collect ./src/core/garbage.c /^garbage_collect() {$/ garbage_destroy ./src/core/garbage.c /^garbage_destroy() {$/ -- cgit v1.2.3 From f2bd5d24361d703359494daed291e277bce6eb03 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 20 Oct 2008 18:46:11 +0000 Subject: no lines longer than 80chars. --- src/core/function.h | 7 +++++-- src/core/garbage.c | 5 +++-- src/core/interpret.c | 3 ++- src/core/scanner.c | 12 ++++++++---- src/core/token.c | 9 +++++---- src/core/token.h | 3 ++- src/data/hash.c | 3 ++- src/data/hash.h | 4 +++- src/data/list.c | 7 +++++-- src/data/list.h | 16 ++++++++++++---- src/data/map.c | 12 +++++++++--- src/data/map.h | 12 +++++++++--- src/data/tree.c | 4 +++- src/defines.h | 2 +- 14 files changed, 69 insertions(+), 30 deletions(-) diff --git a/src/core/function.h b/src/core/function.h index 618ed94..70cf14c 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -43,8 +43,11 @@ void function_process(Interpret *p_interp, Token *p_token_op, Token *p_token_op2, Stack *p_stack_args, int i_args); _Bool function_is_buildin(Token *p_token_ident); -void function_process_buildin(Interpret *p_interpret, Token *p_token_ident, Stack *p_stack_args); +void function_process_buildin(Interpret *p_interpret, + Token *p_token_ident, + Stack *p_stack_args); _Bool function_is_self_defined(Interpret *p_interpret); -void function_process_self_defined(Interpret *p_interpret, Token *p_token_ident); +void function_process_self_defined(Interpret *p_interpret, + Token *p_token_ident); #endif /* FUNCTION_H */ diff --git a/src/core/garbage.c b/src/core/garbage.c index 1ba6831..1533f60 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -56,8 +56,9 @@ void garbage_destroy() { garbage_collect(); if (!list_empty(LIST_GARBAGE)) { - EPRINTF("The garbage collector still has %d registered items which don't have" - " a zero ref count!\n", list_size(LIST_GARBAGE)); + EPRINTF("The garbage collector still has %d registered items " + " which don't have a zero ref count!\n", + list_size(LIST_GARBAGE)); /* ListIterator *p_iter = listiterator_new(LIST_GARBAGE); diff --git a/src/core/interpret.c b/src/core/interpret.c index 1b388d3..37702de 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -594,7 +594,8 @@ _control(Interpret *p_interpret) { */ } else { - _INTERPRET_ERROR("Expected expression after control keyword", p_token); + _INTERPRET_ERROR("Expected expression after control keyword", + p_token); } listiterator_delete(p_interpret->p_iter); diff --git a/src/core/scanner.c b/src/core/scanner.c index 49026c2..08be550 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -160,7 +160,8 @@ _scanner_get_next_char(Scanner *p_scanner) { void scanner_run(Fype *p_fype) { - Scanner *p_scanner = scanner_new(p_fype->p_list_token, p_fype->p_tupel_argv); + Scanner *p_scanner = scanner_new(p_fype->p_list_token, + p_fype->p_tupel_argv); int i_token_len = 0; char *c_token = malloc(sizeof(char)); @@ -281,7 +282,8 @@ scanner_run(Fype *p_fype) { } else { for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { if (_TOKENENDS[i] == c) { - scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); + scanner_add_token(p_scanner, &c_token, + &i_token_len, tt_cur); if (i < _ADD_SEMICOLON_INDEX) _add_semicolon_to_list(p_scanner); break; @@ -336,8 +338,10 @@ scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, TokenType tt_cur) { List *p_list_token = scanner_get_list_token(p_scanner); - Token *p_token = token_new(*cc_token, tt_cur, p_scanner->i_current_line_nr, - p_scanner->i_current_pos_nr, p_scanner->c_filename); + Token *p_token = token_new(*cc_token, tt_cur, + p_scanner->i_current_line_nr, + p_scanner->i_current_pos_nr, + p_scanner->c_filename); list_add_back(p_list_token, p_token); token_ref_up(p_token); diff --git a/src/core/token.c b/src/core/token.c index 4fb298e..a54d529 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -185,7 +185,8 @@ tt_get_name(TokenType tt_cur) { } Token* -token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename) { +token_new(char *c_val, TokenType tt_cur, int i_line_nr, + int i_pos_nr, char *c_filename) { Token *p_token = token_new_dummy(); p_token->c_val = c_val; @@ -340,7 +341,7 @@ token_delete(Token *p_token) { if (token_ref_down(p_token) <= 0) { if (p_token->i_ref_count == 0) { #ifdef DEBUG_TOKEN_REFCOUNT - printf("DEBUG::TOKEN::REFCOUNT: Token refcount debug: Token ref count is 0 == %d\n", + printf("DEBUG::TOKEN::REFCOUNT: Token ref count is 0 == %d\n", p_token->i_ref_count); #endif /* DEBUG_TOKEN_REFCOUNT */ if (p_token->c_val) @@ -353,14 +354,14 @@ token_delete(Token *p_token) { } #ifdef DEBUG_TOKEN_REFCOUNT else { - printf("DEBUG::TOKEN::REFCOUNT: Token refcount debug: Token ref count is 0 > %d\n", + printf("DEBUG::TOKEN::REFCOUNT: Token ref count is 0 > %d\n", p_token->i_ref_count); } #endif /* DEBUG_TOKEN_REFCOUNT */ } #ifdef DEBUG_TOKEN_REFCOUNT else { - printf("Token refcount debug: Token ref count is 0 < %d\n", + printf("DEBUG::TOKEN::REFCOUNT: Token ref count is 0 < %d\n", p_token->i_ref_count); } #endif /* DEBUG_TOKEN_REFCOUNT */ diff --git a/src/core/token.h b/src/core/token.h index 2107dd2..fa20338 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -169,7 +169,8 @@ typedef struct { Array *p_array; } Token; -Token* token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_filename); +Token* token_new(char *c_val, TokenType tt_cur, int i_line_nr, + int i_pos_nr, char *c_filename); Token* token_new_integer(int i_val); Token* token_new_couble(double d_val); Token* token_new_string(char *c_val); diff --git a/src/data/hash.c b/src/data/hash.c index 5555eb1..5a80402 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -204,7 +204,8 @@ hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr, void hash_print(Hash *p_hash) { - printf("hash_print [size:%d,cur:%d] syntax (flag[,key][=TYPE[]]):\n -> ", + printf("hash_print [size:%d,cur:%d] syntax " + " (flag[,key][=TYPE[]]):\n -> ", p_hash->i_size,p_hash->i_cur_size); for (int i = 0; i < p_hash->i_size; ++i) { diff --git a/src/data/hash.h b/src/data/hash.h index 196c4a8..4397d7c 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -71,7 +71,9 @@ RETCODE hash_size(Hash *p_hash, int i_size); int hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP); RETCODE hash_addrisfree(Hash *p_hash, int i_addr); RETCODE hash_addrisocc(Hash *p_hash, int i_addr, char *c_key); -int hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr, HASH_OP OP); +int hash_nextaddr(Hash *p_hash, int i_max_tries, + char *c_key, int i_addr, + HASH_OP OP); void hash_iterate(Hash *p_hash, void (*func)(void *)); #define hash_get_cur_size(hash) hash->i_cur_size diff --git a/src/data/list.c b/src/data/list.c index 83860c3..398dd37 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -271,7 +271,9 @@ list_iterate2_ptr(List *p_list, void (*func)(void *, void *), void *p_void) { } void -list_iterate3(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2) { +list_iterate3(List *p_list, + void (*func)(void *, void *, void *), + void *p_void1, void *p_void2) { ListElem *p_elem = p_list->p_first; while (p_elem) { @@ -281,7 +283,8 @@ list_iterate3(List *p_list, void (*func)(void *, void *, void *), void *p_void1, } void -list_iterate3_ptr(List *p_list, void (*func)(void *, void *, void *), +list_iterate3_ptr(List *p_list, + void (*func)(void *, void *, void *), void *p_void1, void *p_void2) { ListElem *p_elem = p_list->p_first; diff --git a/src/data/list.h b/src/data/list.h index 323f496..1ed6635 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -84,10 +84,18 @@ void list_delete_cb(void *p_list); void list_delete_and_free_vals(List *p_list); unsigned list_size(List *p_list); void list_iterate(List *p_list, void (*func)(void *)); -void list_iterate2_ptr(List *p_list, void (*func)(void *, void *), void *p_void); -void list_iterate2(List *p_list, void (*func)(void *, void *), void *p_void); -void list_iterate3(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2); -void list_iterate3_ptr(List *p_list, void (*func)(void *, void *, void *), void *p_void1, void *p_void2); +void list_iterate2_ptr(List *p_list, + void (*func)(void *, void *), + void *p_void); +void list_iterate2(List *p_list, + void (*func)(void *, void *), + void *p_void); +void list_iterate3(List *p_list, + void (*func)(void *, void *, void *), + void *p_void1, void *p_void2); +void list_iterate3_ptr(List *p_list, + void (*func)(void *, void *, void *), + void *p_void1, void *p_void2); ListIterator *listiterator_new(List *p_list); ListIterator *listiterator_new_reverse(List *p_list); void listiterator_delete(ListIterator *p_iter); diff --git a/src/data/map.c b/src/data/map.c index b5c016e..bc74f31 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -261,21 +261,27 @@ map_iterate2(Map *p_map, void (*func) (void *, void *), void *p_void) { } void -map_iterate2_keys(Map *p_map, void (*func) (void *, void *, char *), void *p_void) { +map_iterate2_keys(Map *p_map, + void (*func) (void *, void *, char *), + void *p_void) { for (int i = 0; i < p_map->i_max_size; ++i) if (p_map->pc_keys[i] != NULL) (*func) (p_map->pp_vals[i], p_void, p_map->pc_keys[i]); } void -map_iterate3(Map *p_map, void (*func) (void *, void *, void *), void *p_void1, void *p_void2) { +map_iterate3(Map *p_map, + void (*func) (void *, void *, void *), + void *p_void1, void *p_void2) { for (int i = 0; i < p_map->i_max_size; ++i) if (p_map->pc_keys[i] != NULL) (*func) (p_map->pp_vals[i], p_void1, p_void2); } void -map_iterate3_keys(Map *p_map, void (*func) (void *, void *, void *, char *), void *p_void1, void *p_void2) { +map_iterate3_keys(Map *p_map, + void (*func) (void *, void *, void *, char *), + void *p_void1, void *p_void2) { for (int i = 0; i < p_map->i_max_size; ++i) if (p_map->pc_keys[i] != NULL) (*func) (p_map->pp_vals[i], p_void1, p_void2, p_map->pc_keys[i]); diff --git a/src/data/map.h b/src/data/map.h index fe7397f..144ffbd 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -72,9 +72,15 @@ void map_print(Map *p_map); void map_iterate(Map *p_map, void (*func) (void *)); void map_iterate_keys(Map *p_map, void (*func) (void *, char *)); void map_iterate2(Map *p_map, void (*func) (void *, void *), void *p_void); -void map_iterate2_keys(Map *p_map, void (*func) (void *, void *, char *), void *p_void); -void map_iterate3(Map *p_map, void (*func) (void *, void *, void *), void *p_void1, void *p_void2); -void map_iterate3_keys(Map *p_map, void (*func) (void *, void *, void *, char *), void *p_void1, void *p_void2); +void map_iterate2_keys(Map *p_map, + void (*func) (void *, void *, char *), + void *p_void); +void map_iterate3(Map *p_map, + void (*func) (void *, void *, void *), + void *p_void1, void *p_void2); +void map_iterate3_keys(Map *p_map, + void (*func) (void *, void *, void *, char *), + void *p_void1, void *p_void2); #define map_get_size(map) map->i_size #define map_get_max_size(map) map->i_max_size diff --git a/src/data/tree.c b/src/data/tree.c index 0160eb9..7b4d303 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -126,7 +126,9 @@ _tree_print(TreeNode *p_treenode, int i_indent) { #endif printf("\nTree "); - array_iterate2(p_treenode->p_array_childs, _tree_print_cb2, (void*) (i_indent + TREE_PRINT_INDENT)); + array_iterate2(p_treenode->p_array_childs, + _tree_print_cb2, + (void*) (i_indent + TREE_PRINT_INDENT)); } void diff --git a/src/defines.h b/src/defines.h index 75d396b..9da9886 100644 --- a/src/defines.h +++ b/src/defines.h @@ -42,7 +42,7 @@ #include "build.h" -#define COPYRIGHT "Copyright by Paul C. Buetow (2005 - 2008) " +#define COPYRIGHT "(c) Paul C. Buetow (2005 - 2008) " #define FYPE #define GRAMMAR_MAP_SIZES 128 #define ARRAY_SIZE 16 -- cgit v1.2.3 From d92a66e029d85e320663ec85b87c9f41fc493b09 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 20 Oct 2008 19:23:48 +0000 Subject: update --- NEW | 1 - 1 file changed, 1 deletion(-) diff --git a/NEW b/NEW index 25373a6..47e74e0 100644 --- a/NEW +++ b/NEW @@ -1,3 +1,2 @@ keywords: - syms refs -- cgit v1.2.3 From a5f564d59149de660c4832b8c6e8acd42770479c Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 25 Oct 2008 00:12:08 +0000 Subject: make headers --- docs/header.txt | 2 +- docs/help.txt | 4 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- fype | Bin 426417 -> 426269 bytes src/argv.c | 30 ++++----- src/argv.h | 30 ++++----- src/build.h | 32 +++++----- src/core/convert.c | 30 ++++----- src/core/convert.h | 30 ++++----- src/core/function.c | 30 ++++----- src/core/function.h | 30 ++++----- src/core/garbage.c | 30 ++++----- src/core/garbage.h | 30 ++++----- src/core/interpret.c | 30 ++++----- src/core/interpret.h | 30 ++++----- src/core/scanner.c | 30 ++++----- src/core/scanner.h | 30 ++++----- src/core/scope.c | 30 ++++----- src/core/scope.h | 30 ++++----- src/core/symbol.c | 30 ++++----- src/core/symbol.h | 30 ++++----- src/core/token.c | 30 ++++----- src/core/token.h | 30 ++++----- src/data/array.c | 30 ++++----- src/data/array.h | 30 ++++----- src/data/dat.c | 30 ++++----- src/data/dat.h | 30 ++++----- src/data/hash.c | 30 ++++----- src/data/hash.h | 30 ++++----- src/data/list.c | 30 ++++----- src/data/list.h | 30 ++++----- src/data/map.c | 30 ++++----- src/data/map.h | 30 ++++----- src/data/queue.c | 30 ++++----- src/data/queue.h | 30 ++++----- src/data/stack.c | 30 ++++----- src/data/stack.h | 30 ++++----- src/data/tree.c | 30 ++++----- src/data/tree.h | 30 ++++----- src/data/tupel.c | 30 ++++----- src/data/tupel.h | 30 ++++----- src/data/types.h | 30 ++++----- src/defines.h | 30 ++++----- src/fype.c | 30 ++++----- src/fype.h | 30 ++++----- src/main.c | 30 ++++----- tags | 14 ++--- tmp/test.out | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++- 49 files changed, 814 insertions(+), 644 deletions(-) diff --git a/docs/header.txt b/docs/header.txt index d673a17..b758e84 100644 --- a/docs/header.txt +++ b/docs/header.txt @@ -4,7 +4,7 @@ A simple interpreter WWW : http://fype.buetow.org E-Mail : fype@dev.buetow.org -Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow +Copyright (c) 2005 2006 2007 2008, Paul C. Buetow All rights reserved. Redistribution and use in source and binary forms, with or without modi- diff --git a/docs/help.txt b/docs/help.txt index 6d0cd97..d09a1b9 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,5 +1,5 @@ -Fype v0.1-devel Build 9255 -Copyright by Paul C. Buetow (2005 - 2008) +Fype v0.1-devel Build 9257 +(c) Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help -s Prints the synopsis diff --git a/docs/stats.txt b/docs/stats.txt index 769199d..a2a5f82 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7536 +===> Num of C source lines : 7575 ===> Num of Fype source examples : 14 ===> Num of Fype source lines : 358 diff --git a/docs/version.txt b/docs/version.txt index 42da0a6..a585f2c 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9255 +Fype v0.1-devel Build 9257 diff --git a/fype b/fype index 487f008..71c7a2d 100755 Binary files a/fype and b/fype differ diff --git a/src/argv.c b/src/argv.c index 426e364..68d83d9 100644 --- a/src/argv.c +++ b/src/argv.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/argv.h b/src/argv.h index 745228d..d7675db 100644 --- a/src/argv.h +++ b/src/argv.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/build.h b/src/build.h index d62160a..e20c21b 100644 --- a/src/build.h +++ b/src/build.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/build.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,27 +15,27 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9256 +#define BUILDNR 9258 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index 73fb8a2..971fe2e 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/convert.h b/src/core/convert.h index 0c8b7da..5a80159 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.c b/src/core/function.c index 4d25a60..2796d36 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.h b/src/core/function.h index 70cf14c..9b232df 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.c b/src/core/garbage.c index 1533f60..f1e6bba 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.h b/src/core/garbage.h index 0855b65..31ca467 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.c b/src/core/interpret.c index 37702de..bbfc9df 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.h b/src/core/interpret.h index 6e50e8d..9168883 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.c b/src/core/scanner.c index 08be550..3607c0f 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.h b/src/core/scanner.h index 4626595..c1ca7d8 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.c b/src/core/scope.c index 1bf8dd2..99aef4d 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.h b/src/core/scope.h index 59ed3c8..40a38e2 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.c b/src/core/symbol.c index b6fd2ed..460ad40 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.h b/src/core/symbol.h index a077bd6..b00c936 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.c b/src/core/token.c index a54d529..7f10bba 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.h b/src/core/token.h index fa20338..f17b53d 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.c b/src/data/array.c index 2ae4ece..463297c 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.h b/src/data/array.h index b343521..4abb4ef 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.c b/src/data/dat.c index 6d4f10d..35aa3d5 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.h b/src/data/dat.h index 83e24a6..849306d 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.c b/src/data/hash.c index 5a80402..091c679 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.h b/src/data/hash.h index 4397d7c..b6d71ff 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.c b/src/data/list.c index 398dd37..e4482ce 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.h b/src/data/list.h index 1ed6635..2654653 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.c b/src/data/map.c index bc74f31..7981356 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.h b/src/data/map.h index 144ffbd..c5c58b5 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.c b/src/data/queue.c index d4697bb..c1b897a 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.h b/src/data/queue.h index f345cce..bc9d22c 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.c b/src/data/stack.c index 9afb9b4..4ff3cff 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.h b/src/data/stack.h index 4774cef..d7cfd3d 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.c b/src/data/tree.c index 7b4d303..b98b34f 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.h b/src/data/tree.h index 1f9b18c..6356b1f 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.c b/src/data/tupel.c index bcb67f6..2dd4863 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.h b/src/data/tupel.h index d70bf9f..8162e63 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/types.h b/src/data/types.h index b20d67a..f9f20cd 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/types.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/defines.h b/src/defines.h index 9da9886..30c636b 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/defines.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.c b/src/fype.c index af61c1d..159cf5c 100644 --- a/src/fype.c +++ b/src/fype.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.h b/src/fype.h index b3b140d..8eef520 100644 --- a/src/fype.h +++ b/src/fype.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/main.c b/src/main.c index 88ca945..9bf1ed7 100644 --- a/src/main.c +++ b/src/main.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/main.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/tags b/tags index bf7efaf..5cddd67 100644 --- a/tags +++ b/tags @@ -109,8 +109,8 @@ fype_delete ./src/fype.c /^fype_delete(Fype *p_fype) {$/ fype_new ./src/fype.c /^fype_new() {$/ fype_run ./src/fype.c /^fype_run(int i_argc, char **pc_argv) {$/ garbage_add ./src/core/garbage.c /^garbage_add(void *p, GarbageType type) {$/ -garbage_add2 ./src/core/garbage.c /^garbage_add2(void *p, $/ -garbage_add3 ./src/core/garbage.c /^garbage_add3(void *p, $/ +garbage_add2 ./src/core/garbage.c /^garbage_add2(void *p,$/ +garbage_add3 ./src/core/garbage.c /^garbage_add3(void *p,$/ garbage_add_token ./src/core/garbage.c /^garbage_add_token(Token *p_token) {$/ garbage_collect ./src/core/garbage.c /^garbage_collect() {$/ garbage_destroy ./src/core/garbage.c /^garbage_destroy() {$/ @@ -152,8 +152,8 @@ list_empty ./src/data/list.c /^list_empty(List *p_list) {$/ list_iterate ./src/data/list.c /^list_iterate(List *p_list, void (*func)(void *)) {/ list_iterate2 ./src/data/list.c /^list_iterate2(List *p_list, void (*func)(void *, v/ list_iterate2_ptr ./src/data/list.c /^list_iterate2_ptr(List *p_list, void (*func)(void / -list_iterate3 ./src/data/list.c /^list_iterate3(List *p_list, void (*func)(void *, v/ -list_iterate3_ptr ./src/data/list.c /^list_iterate3_ptr(List *p_list, void (*func)(void / +list_iterate3 ./src/data/list.c /^list_iterate3(List *p_list,$/ +list_iterate3_ptr ./src/data/list.c /^list_iterate3_ptr(List *p_list,$/ list_new ./src/data/list.c /^list_new() {$/ list_remove_back ./src/data/list.c /^list_remove_back(List *p_list) {$/ list_remove_elem ./src/data/list.c /^list_remove_elem(List *p_list, ListElem *p_elem_re/ @@ -189,9 +189,9 @@ map_insert2 ./src/data/map.c /^map_insert2(Map *p_map, char *c_key1, char *c_key map_insert_if_not_exists ./src/data/map.c /^map_insert_if_not_exists(Map *p_map, char *c_key, / map_iterate ./src/data/map.c /^map_iterate(Map *p_map, void (*func) (void *)) {$/ map_iterate2 ./src/data/map.c /^map_iterate2(Map *p_map, void (*func) (void *, voi/ -map_iterate2_keys ./src/data/map.c /^map_iterate2_keys(Map *p_map, void (*func) (void */ -map_iterate3 ./src/data/map.c /^map_iterate3(Map *p_map, void (*func) (void *, voi/ -map_iterate3_keys ./src/data/map.c /^map_iterate3_keys(Map *p_map, void (*func) (void */ +map_iterate2_keys ./src/data/map.c /^map_iterate2_keys(Map *p_map,$/ +map_iterate3 ./src/data/map.c /^map_iterate3(Map *p_map,$/ +map_iterate3_keys ./src/data/map.c /^map_iterate3_keys(Map *p_map,$/ map_iterate_keys ./src/data/map.c /^map_iterate_keys(Map *p_map, void (*func) (void *,/ map_new ./src/data/map.c /^map_new(int i_max_size) {$/ map_new_named ./src/data/map.c /^map_new_named(int i_max_size, char *c_name) {$/ diff --git a/tmp/test.out b/tmp/test.out index afe2cec..06f3a18 100644 --- a/tmp/test.out +++ b/tmp/test.out @@ -1,3 +1,173 @@ +#* + * Examples of how to use synonyms + *# +# Create a variable foo, and bar is a synonym for foo +my foo = "foo"; +my bar = \foo; -my foo = [1, 2.2, "3"]; +# Reset the value of foo +foo = "bar"; + +# The synonym variable should now also set to "bar" +assert "bar" == say bar; + +# Create a new procedure baz +proc baz { + say "I am baz"; +} + +# Make a synonym baz, and undefine baz +my bay = \baz; +undef baz; + +# bay still has a reference of the original procedure baz +bay; # this prints aut "I am baz" + +assert 0 == defined baz; +assert 1 == defined bay; + +# This removes the procedure from memory +undef bay; + +Token (id=00000, line=00006, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (id=00001, line=00006, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00002, line=00006, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00003, line=00006, pos=0010, type=TT_STRING, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00004, line=00006, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00005, line=00007, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (id=00006, line=00007, pos=0007, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1) +Token (id=00007, line=00007, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00008, line=00007, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=1) +Token (id=00009, line=00007, pos=0014, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00010, line=00007, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00011, line=00010, pos=0004, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1) +Token (id=00012, line=00010, pos=0006, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00013, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=1) +Token (id=00014, line=00010, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00015, line=00013, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1) +Token (id=00016, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=1) +Token (id=00017, line=00013, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00018, line=00013, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00019, line=00013, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00020, line=00013, pos=0020, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1) +Token (id=00021, line=00013, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00022, line=00016, pos=0005, type=TT_PROC, val=proc, ival=0, dval=0.000000, refs=1) +Token (id=00023, line=00016, pos=0009, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1) +Token (id=00024, line=00016, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1) +Token (id=00025, line=00017, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1) +Token (id=00026, line=00017, pos=0006, type=TT_STRING, val=I am baz, ival=0, dval=0.000000, refs=1) +Token (id=00027, line=00017, pos=0008, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00028, line=00018, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=1) +Token (id=00029, line=00021, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1) +Token (id=00030, line=00021, pos=0007, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1) +Token (id=00031, line=00021, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00032, line=00021, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=1) +Token (id=00033, line=00021, pos=0014, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1) +Token (id=00034, line=00021, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00035, line=00022, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=1) +Token (id=00036, line=00022, pos=0010, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1) +Token (id=00037, line=00022, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00038, line=00025, pos=0004, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1) +Token (id=00039, line=00025, pos=0005, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00040, line=00027, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1) +Token (id=00041, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=1) +Token (id=00042, line=00027, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00043, line=00027, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00044, line=00027, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=1) +Token (id=00045, line=00027, pos=0024, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1) +Token (id=00046, line=00027, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00047, line=00028, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1) +Token (id=00048, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1) +Token (id=00049, line=00028, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00050, line=00028, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1) +Token (id=00051, line=00028, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=1) +Token (id=00052, line=00028, pos=0024, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1) +Token (id=00053, line=00028, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +Token (id=00054, line=00031, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=1) +Token (id=00055, line=00031, pos=0010, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1) +Token (id=00056, line=00031, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1) +DEBUG::GC: Freed 0 items +DEBUG::GC: Freed 0 items +DEBUG::GC: Freeing Token (id=00000, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freed 1 items +bar +DEBUG::GC: Freeing Token (id=00000, line=00010, pos=0007, type=TT_INTEGER, val=bar, ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00000, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=-1) +DEBUG::GC: Freed 2 items +DEBUG::GC: Freed 0 items +DEBUG::GC: Freed 0 items +DEBUG::GC: Freeing Token (id=00060, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freed 1 items +I am baz +DEBUG::GC: Freed 0 items +DEBUG::GC: Freeing Token (id=00061, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freed 1 items +DEBUG::GC: Freeing Token (id=00063, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00000, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00000, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=-1) +DEBUG::GC: Freed 3 items +DEBUG::GC: Freeing Token (id=00066, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00000, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00000, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=-1) +DEBUG::GC: Freed 3 items +DEBUG::GC: Freeing Token (id=00068, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freed 1 items +DEBUG::GC: Freeing Token (id=00000, line=00006, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00001, line=00006, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00002, line=00006, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00003, line=00006, pos=0010, type=TT_STRING, val=foo, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00004, line=00006, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00005, line=00007, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00006, line=00007, pos=0007, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00007, line=00007, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00008, line=00007, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00009, line=00007, pos=0014, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00010, line=00007, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00011, line=00010, pos=0004, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00012, line=00010, pos=0006, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00057, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00014, line=00010, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00015, line=00013, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00059, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00017, line=00013, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00018, line=00013, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00019, line=00013, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00020, line=00013, pos=0020, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00021, line=00013, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00022, line=00016, pos=0005, type=TT_PROC, val=proc, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00023, line=00016, pos=0009, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00024, line=00016, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00025, line=00017, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00026, line=00017, pos=0006, type=TT_STRING, val=I am baz, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00027, line=00017, pos=0008, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00028, line=00018, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00029, line=00021, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00030, line=00021, pos=0007, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00031, line=00021, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00032, line=00021, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00033, line=00021, pos=0014, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00034, line=00021, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00035, line=00022, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00036, line=00022, pos=0010, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00037, line=00022, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00038, line=00025, pos=0004, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00039, line=00025, pos=0005, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00040, line=00027, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00064, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00042, line=00027, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00043, line=00027, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00044, line=00027, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00045, line=00027, pos=0024, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00046, line=00027, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00047, line=00028, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00067, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00049, line=00028, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00050, line=00028, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00051, line=00028, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00052, line=00028, pos=0024, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00053, line=00028, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00054, line=00031, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00055, line=00031, pos=0010, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freeing Token (id=00056, line=00031, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0) +DEBUG::GC: Freed 57 items -- cgit v1.2.3 From 1c6dd17947050d2f70dd8df6f4ad527180581c68 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 25 Oct 2008 00:23:48 +0000 Subject: astyle. more BSD style in return (FOO); --- src/argv.c | 30 +++++++++--------- src/argv.h | 30 +++++++++--------- src/build.h | 30 +++++++++--------- src/core/convert.c | 30 +++++++++--------- src/core/convert.h | 30 +++++++++--------- src/core/function.c | 30 +++++++++--------- src/core/function.h | 30 +++++++++--------- src/core/garbage.c | 30 +++++++++--------- src/core/garbage.h | 30 +++++++++--------- src/core/interpret.c | 30 +++++++++--------- src/core/interpret.h | 30 +++++++++--------- src/core/scanner.c | 30 +++++++++--------- src/core/scanner.h | 30 +++++++++--------- src/core/scope.c | 30 +++++++++--------- src/core/scope.h | 30 +++++++++--------- src/core/symbol.c | 30 +++++++++--------- src/core/symbol.h | 30 +++++++++--------- src/core/token.c | 30 +++++++++--------- src/core/token.h | 30 +++++++++--------- src/data/array.c | 58 +++++++++++++++++----------------- src/data/array.h | 30 +++++++++--------- src/data/dat.c | 88 ++++++++++++++++++++++++++-------------------------- src/data/dat.h | 30 +++++++++--------- src/data/hash.c | 76 ++++++++++++++++++++++----------------------- src/data/hash.h | 30 +++++++++--------- src/data/list.c | 55 ++++++++++++++++---------------- src/data/list.h | 30 +++++++++--------- src/data/map.c | 76 ++++++++++++++++++++++----------------------- src/data/map.h | 30 +++++++++--------- src/data/queue.c | 30 +++++++++--------- src/data/queue.h | 30 +++++++++--------- src/data/stack.c | 30 +++++++++--------- src/data/stack.h | 30 +++++++++--------- src/data/tree.c | 30 +++++++++--------- src/data/tree.h | 30 +++++++++--------- src/data/tupel.c | 30 +++++++++--------- src/data/tupel.h | 30 +++++++++--------- src/data/types.h | 30 +++++++++--------- src/defines.h | 30 +++++++++--------- src/fype.c | 30 +++++++++--------- src/fype.h | 30 +++++++++--------- src/main.c | 30 +++++++++--------- 42 files changed, 732 insertions(+), 731 deletions(-) diff --git a/src/argv.c b/src/argv.c index 68d83d9..4485853 100644 --- a/src/argv.c +++ b/src/argv.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/argv.h b/src/argv.h index d7675db..6527d50 100644 --- a/src/argv.h +++ b/src/argv.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/argv.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/build.h b/src/build.h index e20c21b..5752864 100644 --- a/src/build.h +++ b/src/build.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/build.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/convert.c b/src/core/convert.c index 971fe2e..c909cf0 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/convert.h b/src/core/convert.h index 5a80159..1c841b7 100644 --- a/src/core/convert.h +++ b/src/core/convert.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/convert.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.c b/src/core/function.c index 2796d36..a528aa1 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/function.h b/src/core/function.h index 9b232df..7d8b251 100644 --- a/src/core/function.h +++ b/src/core/function.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/function.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.c b/src/core/garbage.c index f1e6bba..b7a43aa 100644 --- a/src/core/garbage.c +++ b/src/core/garbage.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/garbage.h b/src/core/garbage.h index 31ca467..65f2238 100644 --- a/src/core/garbage.h +++ b/src/core/garbage.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/garbage.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.c b/src/core/interpret.c index bbfc9df..dea808c 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/interpret.h b/src/core/interpret.h index 9168883..cea9ec8 100644 --- a/src/core/interpret.h +++ b/src/core/interpret.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/interpret.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.c b/src/core/scanner.c index 3607c0f..dad154f 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scanner.h b/src/core/scanner.h index c1ca7d8..b986964 100644 --- a/src/core/scanner.h +++ b/src/core/scanner.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scanner.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.c b/src/core/scope.c index 99aef4d..0c920c4 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/scope.h b/src/core/scope.h index 40a38e2..1bf0c51 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/scope.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.c b/src/core/symbol.c index 460ad40..8c39f5c 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/symbol.h b/src/core/symbol.h index b00c936..2abc67e 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/symbol.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.c b/src/core/token.c index 7f10bba..f7955fc 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/core/token.h b/src/core/token.h index f17b53d..9d1a560 100644 --- a/src/core/token.h +++ b/src/core/token.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/core/token.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/array.c b/src/data/array.c index 463297c..5ed61c3 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -41,7 +41,7 @@ array_new() { p_array->i_size = 0; p_array->pp_ae = NULL; - return p_array; + return (p_array); } @@ -92,7 +92,7 @@ array_insert(Array *p_array, int i_index, void *p_val) { void* array_remove(Array *p_array, int i_index) { if (p_array->i_size <= i_index) - return NULL; + return (NULL); ArrayElement *p_ae = p_array->pp_ae[i_index]; void *p_ret = p_ae->p_val; @@ -105,7 +105,7 @@ array_remove(Array *p_array, int i_index) { array_resize(p_array, p_array->i_size - 1); - return p_ret; + return (p_ret); } void @@ -147,17 +147,17 @@ array_resize(Array *p_array, int i_size) { void* array_get(Array *p_array, int i_index) { if (p_array->i_size > i_index) - return p_array->pp_ae[i_index]->p_val; + return (p_array->pp_ae[i_index]->p_val); - return NULL; + return (NULL); } _Bool array_defined(Array *p_array, int i_index) { if (i_index >= p_array->i_size) - return false; + return (false); - return p_array->pp_ae[i_index]->p_val != NULL; + return (p_array->pp_ae[i_index]->p_val != NULL); } void @@ -222,7 +222,7 @@ arrayelement_new(void *p_val) { p_ae->p_val = p_val; - return p_ae; + return (p_ae); } void @@ -236,13 +236,13 @@ arrayelement_delete(ArrayElement *p_ae) { ArrayIterator* arrayiterator_new(Array *p_array) { if (!p_array) - return NULL; + return (NULL); ArrayIterator *p_arrayiterator = malloc(sizeof(ArrayIterator)); p_arrayiterator->p_array = p_array; p_arrayiterator->i_cur_pos = 0; - return p_arrayiterator; + return (p_arrayiterator); } void @@ -253,14 +253,14 @@ arrayiterator_delete(ArrayIterator *p_arrayiterator) { _Bool arrayiterator_has_next(ArrayIterator *p_arrayiterator) { - return p_arrayiterator->i_cur_pos < - array_get_size(p_arrayiterator->p_array); + return (p_arrayiterator->i_cur_pos < + array_get_size(p_arrayiterator->p_array)); } void* arrayiterator_next(ArrayIterator *p_arrayiterator) { if (!arrayiterator_has_next(p_arrayiterator)) - return NULL; + return (NULL); - return array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++); + return (array_get(p_arrayiterator->p_array, p_arrayiterator->i_cur_pos++)); } diff --git a/src/data/array.h b/src/data/array.h index 4abb4ef..c6ac81f 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/array.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/dat.c b/src/data/dat.c index 35aa3d5..82fd42e 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -44,12 +44,12 @@ dat_new() { p_dat->p_last = 0; p_dat->i_size = 0; - return p_dat; + return (p_dat); } DatElem* datelem_new() { - return datelem_new_t(TYPE_UNKNOWN); + return (datelem_new_t(TYPE_UNKNOWN)); } DatElem* @@ -60,15 +60,15 @@ datelem_new_t(TYPE type) { p_elem->p_val = 0; p_elem->type = type; - return p_elem; + return (p_elem); } _Bool dat_empty(Dat *p_dat) { if (p_dat == NULL) - return 0; + return (false); - return p_dat->i_size == 0; + return (p_dat->i_size == 0); } void @@ -92,13 +92,13 @@ dat_push_t(Dat *p_dat, void *p_val, TYPE type) { void* dat_pop(Dat *p_dat) { TYPE type; - return dat_pop_t(p_dat, &type); + return (dat_pop_t(p_dat, &type)); } void* dat_pop_t(Dat *p_dat, TYPE *p_type) { if (dat_empty(p_dat)) - return 0; + return (NULL); DatElem *p_elem = p_dat->p_first; p_dat->p_first = p_elem->p_next; @@ -108,7 +108,7 @@ dat_pop_t(Dat *p_dat, TYPE *p_type) { void *p_ret = p_elem->p_val; *p_type = p_elem->type; free(p_elem); - return p_ret; + return (p_ret); } void @@ -124,7 +124,7 @@ dat_delete(Dat *p_dat) { unsigned dat_size(Dat *p_dat) { - return p_dat->i_size; + return (p_dat->i_size); } void @@ -163,52 +163,52 @@ dat_iterate_tl(Dat *p_dat, void (*func)(void *, TYPE, _Bool)) { void* dat_first(Dat *p_dat) { if (dat_empty(p_dat)) - return NULL; + return (NULL); - return p_dat->p_first->p_val; + return (p_dat->p_first->p_val); } void* dat_second(Dat *p_dat) { - if ( 2 > dat_size(p_dat)) - return NULL; + if (2 > dat_size(p_dat)) + return (NULL); - return p_dat->p_first->p_next->p_val; + return (p_dat->p_first->p_next->p_val); } void* dat_last(Dat *p_dat) { if (dat_empty(p_dat)) - return NULL; + return (NULL); - return p_dat->p_last->p_val; + return (p_dat->p_last->p_val); } void* dat_first_t(Dat *p_dat, TYPE *p_type) { if (dat_empty(p_dat)) - return NULL; + return (NULL); *p_type = p_dat->p_first->type; - return p_dat->p_first->p_val; + return (p_dat->p_first->p_val); } void* dat_second_t(Dat *p_dat, TYPE *p_type) { - if ( 2 > dat_size(p_dat)) - return NULL; + if (2 > dat_size(p_dat)) + return (NULL); *p_type = p_dat->p_first->p_next->type; - return p_dat->p_first->p_next->p_val; + return (p_dat->p_first->p_next->p_val); } void* dat_last_t(Dat *p_dat, TYPE *p_type) { if (dat_empty(p_dat)) - return NULL; + return (NULL); *p_type = p_dat->p_last->type; - return p_dat->p_last->p_val; + return (p_dat->p_last->p_val); } DatIter* @@ -221,7 +221,7 @@ datiter_new(Dat *p_dat) { p_iter->i_left = dat_size(p_dat); p_iter->p_dat = p_dat; - return p_iter; + return (p_iter); } void @@ -238,13 +238,13 @@ datiter_skip(DatIter *p_iter, unsigned i_num) { void* datiter_next(DatIter *p_iter) { TYPE type; - return datiter_next_t(p_iter, &type); + return (datiter_next_t(p_iter, &type)); } void* datiter_next_t(DatIter *p_iter, TYPE *p_type) { if (p_iter->p_next == NULL) - return NULL; + return (NULL); void *p_ret = p_iter->p_next->p_val; *p_type = p_iter->p_next->type; @@ -252,16 +252,16 @@ datiter_next_t(DatIter *p_iter, TYPE *p_type) { p_iter->p_next = p_iter->p_next->p_next; --p_iter->i_left; - return p_ret; + return (p_ret); } unsigned datiter_left(DatIter *p_iter) { - return p_iter->i_left; + return (p_iter->i_left); } Dat* datiter_dat(DatIter *p_iter) { - return p_iter->p_dat; + return (p_iter->p_dat); } diff --git a/src/data/dat.h b/src/data/dat.h index 849306d..4b80568 100644 --- a/src/data/dat.h +++ b/src/data/dat.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/dat.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/hash.c b/src/data/hash.c index 091c679..3c01042 100644 --- a/src/data/hash.c +++ b/src/data/hash.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -50,7 +50,7 @@ hash_new(unsigned i_size) { for (int i = 0; i < i_size; ++i) p_hash->p_elems[i].flag = 'f'; - return p_hash; + return (p_hash); } void @@ -71,7 +71,7 @@ hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type) { int i_addr = hash_getaddr(p_hash, c_key, free_ADDR); if (i_addr == RET_ERROR ) - return RET_NO_SPACE; + return (RET_NO_SPACE); strncpy(p_hash->p_elems[i_addr].c_key, c_key, HASH_MKEYLEN); @@ -80,12 +80,12 @@ hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type) { p_hash->p_elems[i_addr].p_val = p_val; p_hash->i_cur_size++; - return RET_OK; + return (RET_OK); } RETCODE hash_insert(Hash *p_hash, char *c_key, void *p_val) { - return hash_insert_ht(p_hash, c_key, p_val, TYPE_VOIDP); + return (hash_insert_ht(p_hash, c_key, p_val, TYPE_VOIDP)); } void* @@ -96,20 +96,20 @@ hash_remove(Hash *p_hash, char *c_key) { int i_addr = hash_getaddr(p_hash, c_key, OCC_ADDR); if (i_addr == -1 ) - return 0; + return (NULL); void *p_val = p_hash->p_elems[i_addr].p_val; p_hash->p_elems[i_addr].flag = 'm'; p_hash->p_elems[i_addr].p_val = 0; --p_hash->i_cur_size; - return p_val; + return (p_val); } void* hash_get_ht(Hash *p_hash, char *c_key, TYPE *p_type) { int i_addr; - return hash_get_ht_addr(p_hash, c_key, p_type, &i_addr); + return (hash_get_ht_addr(p_hash, c_key, p_type, &i_addr)); } void* @@ -117,16 +117,16 @@ hash_get_ht_addr(Hash *p_hash, char *c_key, TYPE *p_type, int *p_addr) { int i_addr = *p_addr = hash_getaddr(p_hash, c_key, OCC_ADDR); if (i_addr == -1 ) - return 0; + return (NULL); *p_type = p_hash->p_elems[i_addr].type; - return p_hash->p_elems[i_addr].p_val; + return (p_hash->p_elems[i_addr].p_val); } void* hash_get(Hash *p_hash, char *c_key) { TYPE type; - return hash_get_ht(p_hash, c_key, &type); + return (hash_get_ht(p_hash, c_key, &type)); } int @@ -146,60 +146,60 @@ hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP) { switch (OP) { case free_ADDR: if (!hash_addrisfree(p_hash,i_addr)) - return i_addr; + return (i_addr); break; case OCC_ADDR: if (!hash_addrisocc(p_hash,i_addr, c_key)) - return i_addr; + return (i_addr); break; default: - return RET_ERROR; + return (RET_ERROR); } - return hash_nextaddr(p_hash, p_hash->i_size, c_key, i_addr, OP); + return (hash_nextaddr(p_hash, p_hash->i_size, c_key, i_addr, OP)); } RETCODE hash_addrisfree(Hash *p_hash, int i_addr) { if (p_hash->p_elems[i_addr].flag == 'f' || p_hash->p_elems[i_addr].flag == 'm') - return RET_OK; + return (RET_OK); - return RET_ERROR; + return (RET_ERROR); } RETCODE hash_addrisocc(Hash *p_hash, int i_addr, char *c_key) { if (p_hash->p_elems[i_addr].flag == 'o' && !strcmp(p_hash->p_elems[i_addr].c_key, c_key)) - return RET_OK; + return (RET_OK); - return RET_ERROR; + return (RET_ERROR); } int hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr, HASH_OP OP) { if ( --i_max_tries < 0 ) - return RET_ERROR; + return (RET_ERROR); i_addr = (i_addr + 1) % p_hash->i_size; switch (OP) { case free_ADDR: if (!hash_addrisfree(p_hash,i_addr)) - return i_addr; + return (i_addr); break; case OCC_ADDR: if (!hash_addrisocc(p_hash,i_addr, c_key)) - return i_addr; + return (i_addr); break; } - return hash_nextaddr(p_hash, i_max_tries, c_key, i_addr, OP); + return (hash_nextaddr(p_hash, i_max_tries, c_key, i_addr, OP)); } void @@ -280,7 +280,7 @@ hash_size(Hash *p_hash, int i_size) { p_old_elems[i].p_val, p_old_elems[i].type); free(p_old_elems); - return RET_OK; + return (RET_OK); } void diff --git a/src/data/hash.h b/src/data/hash.h index b6d71ff..e49f3c3 100644 --- a/src/data/hash.h +++ b/src/data/hash.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/hash.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/list.c b/src/data/list.c index e4482ce..ab85edb 100644 --- a/src/data/list.c +++ b/src/data/list.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -42,7 +42,7 @@ list_new() { p_list->p_last = NULL; p_list->i_size = 0; - return p_list; + return (p_list); } void @@ -78,12 +78,13 @@ listelem_new() { p_elem->p_next = NULL; p_elem->p_prev = NULL; p_elem->p_val = NULL; - return p_elem; + + return (p_elem); } _Bool list_empty(List *p_list) { - return p_list->i_size == 0; + return (p_list->i_size == 0); } void @@ -172,7 +173,7 @@ list_add_back(List *p_list, void *p_val) { void* list_remove_front(List *p_list) { if (list_empty(p_list)) - return NULL; + return (NULL); ListElem *p_elem = p_list->p_first; p_list->p_first = p_elem->p_next; @@ -185,13 +186,13 @@ list_remove_front(List *p_list) { --p_list->i_size; - return p_val; + return (p_val); } void* list_remove_back(List *p_list) { if (list_empty(p_list)) - return NULL; + return (NULL); ListElem *p_elem = p_list->p_last; p_list->p_last = p_elem->p_prev; @@ -202,7 +203,7 @@ list_remove_back(List *p_list) { --p_list->i_size; - return p_val; + return (p_val); } void @@ -237,7 +238,7 @@ list_delete_and_free_vals(List *p_list) { unsigned list_size(List *p_list) { - return p_list->i_size; + return (p_list->i_size); } void @@ -329,7 +330,7 @@ list_remove_elem(List *p_list, ListElem *p_elem_remove) { ListIterator* listiterator_new(List *p_list) { if (!p_list) - return NULL; + return (NULL); ListIterator *p_iter = malloc(sizeof(ListIterator)); @@ -337,20 +338,20 @@ listiterator_new(List *p_list) { p_iter->b_reverse = false; p_iter->func = NULL; - return p_iter; + return (p_iter); } ListIterator* listiterator_new_reverse(List *p_list) { if (!p_list) - return NULL; + return (NULL); ListIterator *p_iter = listiterator_new(p_list); p_iter->p_cur = p_list->p_last; p_iter->b_reverse = true; - return p_iter; + return (p_iter); } void diff --git a/src/data/list.h b/src/data/list.h index 2654653..f66537f 100644 --- a/src/data/list.h +++ b/src/data/list.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/list.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/map.c b/src/data/map.c index 7981356..4542d88 100644 --- a/src/data/map.c +++ b/src/data/map.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ @@ -36,7 +36,7 @@ Map* map_new(int i_max_size) { - return map_new_named(i_max_size, "noname"); + return (map_new_named(i_max_size, "noname")); } Map* @@ -55,29 +55,29 @@ map_new_named(int i_max_size, char *c_name) { p_map->i_size = 0; p_map->i_max_size = i_max_size; - return p_map; + return (p_map); } _Bool map_empty(Map *p_map) { - return p_map->i_size == 0; + return (p_map->i_size == 0); } _Bool map_full(Map *p_map) { - return p_map->i_size == p_map->i_max_size; + return (p_map->i_size == p_map->i_max_size); } int map_next_free_addr(Map *p_map) { for (int i = 0; i < p_map->i_max_size; ++i) if (p_map->pc_keys[i] == NULL) - return i; + return (i); ERROR("No free space left in the map (%s)", p_map->c_name); // This point should not be reached! - return 0; + return (0); } _Bool @@ -90,14 +90,14 @@ map_insert(Map *p_map, char *c_key, void *p_val) { p_map->pp_vals[i_free_addr] = p_val; ++p_map->i_size; - return true; + return (true); } _Bool map_insert2(Map *p_map, char *c_key1, char *c_key2, void *p_val) { char c_key[HASH_MKEYLEN]; sprintf(c_key, "%s%s%s", c_key1, SEP, c_key2); - return map_insert(p_map, c_key, p_val); + return (map_insert(p_map, c_key, p_val)); } _Bool @@ -105,11 +105,11 @@ map_insert_if_not_exists(Map *p_map, char *c_key, void *p_val) { void *p_void = map_get(p_map, c_key); if (p_void) - return false; + return (false); - return map_insert(p_map, c_key, p_val); + return (map_insert(p_map, c_key, p_val)); - return true; + return (true); } void @@ -130,33 +130,33 @@ map_remove(Map *p_map, char *c_key) { void* map_get(Map *p_map, char *c_key) { if (map_empty(p_map)) - return NULL; + return (NULL); int i_index = map_get_addr(p_map, c_key); - return i_index >= 0 ? p_map->pp_vals[i_index] : NULL; + return (i_index >= 0 ? p_map->pp_vals[i_index] : NULL); } void* map_get2(Map *p_map, char *c_key1, char *c_key2) { char c_key[HASH_MKEYLEN]; sprintf(c_key, "%s%s%s", c_key1, SEP, c_key2); - return map_get(p_map, c_key); + return (map_get(p_map, c_key)); } _Bool map_exists(Map *p_map, char *c_key) { if (map_empty(p_map)) - return false; + return (false); int i_index = map_get_addr(p_map, c_key); - return i_index >= 0 ? true : false; + return (i_index >= 0 ? true : false); } _Bool map_exists2(Map *p_map, char *c_key1, char *c_key2) { if (map_empty(p_map)) - return false; + return (false); char c_key[HASH_MKEYLEN]; sprintf(c_key, "%s%s%s:", c_key1, SEP, c_key2); @@ -168,25 +168,25 @@ map_exists2(Map *p_map, char *c_key1, char *c_key2) { char* map_get_key(Map *p_map, void *p_val) { if (map_empty(p_map)) - return NULL; + return (NULL); for (int i = 0; i < p_map->i_max_size; ++i) if ((unsigned) p_map->pp_vals[i] == (unsigned) p_val) - return p_map->pc_keys[i]; + return (p_map->pc_keys[i]); - return NULL; + return (NULL); } int map_get_addr(Map *p_map, char *c_key) { if (map_empty(p_map)) - return -1; + return (-1); for (int i = 0; i < p_map->i_max_size; ++i) if (p_map->pc_keys[i] != NULL && strcmp(p_map->pc_keys[i], c_key) == 0) - return i; + return (i); - return -1; + return (-1); } void diff --git a/src/data/map.h b/src/data/map.h index c5c58b5..d706311 100644 --- a/src/data/map.h +++ b/src/data/map.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/map.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.c b/src/data/queue.c index c1b897a..ee57bb4 100644 --- a/src/data/queue.c +++ b/src/data/queue.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/queue.h b/src/data/queue.h index bc9d22c..d4e9d7a 100644 --- a/src/data/queue.h +++ b/src/data/queue.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/queue.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.c b/src/data/stack.c index 4ff3cff..5997c86 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/stack.h b/src/data/stack.h index d7cfd3d..88bde8d 100644 --- a/src/data/stack.h +++ b/src/data/stack.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/stack.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.c b/src/data/tree.c index b98b34f..4992a2d 100644 --- a/src/data/tree.c +++ b/src/data/tree.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tree.h b/src/data/tree.h index 6356b1f..9bdb3fa 100644 --- a/src/data/tree.h +++ b/src/data/tree.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tree.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.c b/src/data/tupel.c index 2dd4863..476e108 100644 --- a/src/data/tupel.c +++ b/src/data/tupel.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/tupel.h b/src/data/tupel.h index 8162e63..71be0d4 100644 --- a/src/data/tupel.h +++ b/src/data/tupel.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/tupel.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/data/types.h b/src/data/types.h index f9f20cd..5283b2d 100644 --- a/src/data/types.h +++ b/src/data/types.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/data/types.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/defines.h b/src/defines.h index 30c636b..6ff662a 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/defines.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.c b/src/fype.c index 159cf5c..5bb0aff 100644 --- a/src/fype.c +++ b/src/fype.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/fype.h b/src/fype.h index 8eef520..4be0076 100644 --- a/src/fype.h +++ b/src/fype.h @@ -1,13 +1,13 @@ /*:* *: File: ./src/fype.h *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ diff --git a/src/main.c b/src/main.c index 9bf1ed7..0fb11b6 100644 --- a/src/main.c +++ b/src/main.c @@ -1,13 +1,13 @@ /*:* *: File: ./src/main.c *: A simple interpreter - *: + *: *: WWW : http://fype.buetow.org *: E-Mail : fype@dev.buetow.org - *: - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow + *: + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow *: All rights reserved. - *: + *: *: Redistribution and use in source and binary forms, with or without modi- *: fication, are permitted provided that the following conditions are met: *: * Redistributions of source code must retain the above copyright @@ -15,20 +15,20 @@ *: * Redistributions in binary form must reproduce the above copyright *: notice, this list of conditions and the following disclaimer in the *: documentation and/or other materials provided with the distribution. - *: * Neither the name of P. B. Labs nor the names of its contributors may - *: be used to endorse or promote products derived from this software + *: * Neither the name of P. B. Labs nor the names of its contributors may + *: be used to endorse or promote products derived from this software *: without specific prior written permission. - *: - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + *: + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *: POSSIBILITY OF SUCH DAMAGE. *:*/ -- cgit v1.2.3 From 4aeb6d5394e7c65b8c43b71908d85ef8cfe41c3a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 25 Oct 2008 21:29:11 +0000 Subject: "false" --- docs/help.txt | 2 +- docs/stats.txt | 2 +- docs/version.txt | 2 +- fype | Bin 426269 -> 431269 bytes src/build.h | 2 +- src/data/dat.c | 1 + 6 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/help.txt b/docs/help.txt index d09a1b9..c0fbcdc 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9257 +Fype v0.1-devel Build 9260 (c) Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index a2a5f82..163f9b6 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 42 -===> Num of C source lines : 7575 +===> Num of C source lines : 7577 ===> Num of Fype source examples : 14 ===> Num of Fype source lines : 358 diff --git a/docs/version.txt b/docs/version.txt index a585f2c..c263f95 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9257 +Fype v0.1-devel Build 9260 diff --git a/fype b/fype index 71c7a2d..fe23a6c 100755 Binary files a/fype and b/fype differ diff --git a/src/build.h b/src/build.h index 5752864..d0cf034 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9258 +#define BUILDNR 9260 #define OS_FREEBSD #endif diff --git a/src/data/dat.c b/src/data/dat.c index 82fd42e..f06680e 100644 --- a/src/data/dat.c +++ b/src/data/dat.c @@ -35,6 +35,7 @@ #include "dat.h" #include +#include "../defines.h" Dat* dat_new() { -- cgit v1.2.3 From 380eacd0f4037ec00f37ad5b5e4baa18301cf3dd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 25 Oct 2008 22:44:53 +0000 Subject: small cosmetic fixes --- src/core/scope.c | 7 +++++++ src/core/scope.h | 1 + src/core/token.c | 5 +---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/scope.c b/src/core/scope.c index 0c920c4..2a19390 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -148,3 +148,10 @@ scope_newset(Scope *p_scope, char *c_key, Symbol *p_symbol) { return (true); } + +void +scopes_print(Scope *p_scope) { + printf("Scopes:\n"); + printf("Scope stack size: %d\n", p_scope->p_stack_scopes); + +} diff --git a/src/core/scope.h b/src/core/scope.h index 1bf0c51..be29e67 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -55,5 +55,6 @@ _Bool scope_newset(Scope *p_scope, char *c_key, Symbol *p_symbol); _Bool scope_reset(Scope *p_scope, char *c_key, Symbol *p_symbol); void scope_down(Scope *p_scope); void scope_up(Scope *p_scope); +void scope_print(Scope *p_scope); #endif /* SCOPE_H */ diff --git a/src/core/token.c b/src/core/token.c index f7955fc..71d9551 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -300,14 +300,11 @@ token_new_copy(Token *p_token) { void token_copy_vals(Token *p_token_to, Token *p_token_from) { int i_len; - // TODO: Check against mem leak - // if (p_token_to->c_val) - // free(p_token_to->c_val); - if (p_token_from->c_val) { i_len = strlen(p_token_from->c_val); p_token_to->c_val = calloc(i_len+1, sizeof(char)); strcpy(p_token_to->c_val, p_token_from->c_val); + } else { p_token_to->c_val = NULL; } -- cgit v1.2.3 From a1c3f47491b98cd9026f8e853cc9e72630805c12 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 26 Oct 2008 12:51:57 +0000 Subject: added the "scope" function --- README | 9 +++++++-- TODO | 6 ++++++ docs/help.txt | 2 +- docs/pod/fype.1.gz | Bin 6475 -> 6545 bytes docs/pod/fype.html | 8 ++++++-- docs/pod/fype.man | 12 +++++++++--- docs/pod/fype.pod | 6 +++++- docs/pod/fype.tex | 7 ++++++- docs/pod/fype.txt | 9 +++++++-- docs/stats.txt | 2 +- docs/version.txt | 2 +- examples/scopeing.fy | 4 ++++ fype | Bin 431269 -> 435103 bytes src/build.h | 2 +- src/core/function.c | 7 +++++++ src/core/scope.c | 17 ++++++++++++++--- src/core/scope.h | 1 - src/core/symbol.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/core/symbol.h | 3 +++ src/data/hash.c | 13 ++++++++++--- src/data/hash.h | 3 ++- src/data/stack.c | 29 +++++++++++++++++++++++++++++ src/data/stack.h | 4 ++++ src/defines.h | 2 +- tags | 8 ++++++++ 25 files changed, 178 insertions(+), 24 deletions(-) diff --git a/README b/README index 4e82ce6..a6be7b8 100644 --- a/README +++ b/README @@ -134,8 +134,9 @@ SYNTAX Scopeing A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). - Control statements and functions support scopeings. Here is a small - example how to use scopes: + Control statements and functions support scopeings. The scope function + will print out all available symbols at the current position. Here is a + small example of how to use scopes: my foo = 1; @@ -147,6 +148,10 @@ SYNTAX # Prints out 1 put defined bar; + + # Prints out all available symbols at this + # point to stdout. Those are: bar and foo + scope; } # Prints out 0 diff --git a/TODO b/TODO index 781e7d0..39e51e0 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,10 @@ Todo's (not in any specific order) +Scopes/Garbage output for detailed infos + scopes_print(Scope *p_scope) + for all scopes + for all syms + print Arrays Closures Function arguments and return values @@ -7,3 +12,4 @@ Interactive shell Labels String operators/functions loop, next, break, do + diff --git a/docs/help.txt b/docs/help.txt index c0fbcdc..584924e 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9260 +Fype v0.1-devel Build 9276 (c) Paul C. Buetow (2005 - 2008) -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/pod/fype.1.gz b/docs/pod/fype.1.gz index 64bebfb..164c95c 100644 Binary files a/docs/pod/fype.1.gz and b/docs/pod/fype.1.gz differ diff --git a/docs/pod/fype.html b/docs/pod/fype.html index 6400295..0a709bb 100644 --- a/docs/pod/fype.html +++ b/docs/pod/fype.html @@ -228,7 +228,7 @@ TODO file of the source distribution of Fype!

        Scopeing

        -

        A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:

        +

        A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. The scope function will print out all available symbols at the current position. Here is a small example of how to use scopes:

                 my foo = 1;
        @@ -239,7 +239,11 @@ TODO file of the source distribution of Fype!

        my bar = 2;
                                 # Prints out 1
        -                        put defined bar;
        +                        put defined bar;
        +
        +                        # Prints out all available symbols at this
        +                        # point to stdout. Those are: bar and foo
        +                        scope;
                         }
                         # Prints out 0
        diff --git a/docs/pod/fype.man b/docs/pod/fype.man
        index 36f3ef2..e9b95a7 100644
        --- a/docs/pod/fype.man
        +++ b/docs/pod/fype.man
        @@ -129,7 +129,7 @@
         .\" ========================================================================
         .\"
         .IX Title "FYPE 1"
        -.TH FYPE 1 "2008-10-19" "Fype v0.1-devel Build 9240" "The Fype Users Manual Page"
        +.TH FYPE 1 "2008-10-26" "Fype v0.1-devel Build 9276" "The Fype Users Manual Page"
         .SH "NAME"
         \&\fBFype\fR is \fBF\fRor \fBY\fRour \fBP\fRrogram \fBE\fRxecution
         .PP
        @@ -257,7 +257,7 @@ A Fype program is a list of statements. Each keyword, expression or function cal
         All paranthesis of function calls are optional. They help to make the code better readable. They also help to force precedences of expressions.
         .Sh "Scopeing"
         .IX Subsection "Scopeing"
        -A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:
        +A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings.  The \fBscope\fR function will print out all available symbols at the current position. Here is a small example of how to use scopes: 
         .PP
         .Vb 1
         \&        my foo = 1;
        @@ -271,9 +271,15 @@ A new scope starts with an { and ends with an }. An exception is a procedure, wh
         \&                        my bar = 2;
         .Ve
         .PP
        -.Vb 3
        +.Vb 2
         \&                        # Prints out 1
         \&                        put defined bar;
        +.Ve
        +.PP
        +.Vb 4
        +\&                        # Prints out all available symbols at this
        +\&                        # point to stdout. Those are: bar and foo
        +\&                        scope;
         \&                }
         .Ve
         .PP
        diff --git a/docs/pod/fype.pod b/docs/pod/fype.pod
        index 1e29a6d..5006345 100644
        --- a/docs/pod/fype.pod
        +++ b/docs/pod/fype.pod
        @@ -144,7 +144,7 @@ All paranthesis of function calls are optional. They help to make the code bette
         
         =head2 Scopeing
         
        -A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:
        +A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings.  The B function will print out all available symbols at the current position. Here is a small example of how to use scopes: 
         
         	my foo = 1;
         
        @@ -156,6 +156,10 @@ A new scope starts with an { and ends with an }. An exception is a procedure, wh
         
         			# Prints out 1
         			put defined bar;
        +
        +			# Prints out all available symbols at this
        +			# point to stdout. Those are: bar and foo
        +			scope;
         		}
         
         		# Prints out 0
        diff --git a/docs/pod/fype.tex b/docs/pod/fype.tex
        index 8bdd585..7609a00 100644
        --- a/docs/pod/fype.tex
        +++ b/docs/pod/fype.tex
        @@ -179,7 +179,7 @@ All paranthesis of function calls are optional. They help to make the code bette
         \subsection*{Scopeing\label{Scopeing}\index{Scopeing}}
         
         
        -A new scope starts with an \{ and ends with an \}. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings. Here is a small example how to use scopes:
        +A new scope starts with an \{ and ends with an \}. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopeings.  The \textbf{scope} function will print out all available symbols at the current position. Here is a small example of how to use scopes:
         
         \begin{verbatim}
                 my foo = 1;
        @@ -194,6 +194,11 @@ A new scope starts with an \{ and ends with an \}. An exception is a procedure,
         \begin{verbatim}
                                 # Prints out 1
                                 put defined bar;
        +\end{verbatim}
        +\begin{verbatim}
        +                        # Prints out all available symbols at this
        +                        # point to stdout. Those are: bar and foo
        +                        scope;
                         }
         \end{verbatim}
         \begin{verbatim}
        diff --git a/docs/pod/fype.txt b/docs/pod/fype.txt
        index 4e82ce6..a6be7b8 100644
        --- a/docs/pod/fype.txt
        +++ b/docs/pod/fype.txt
        @@ -134,8 +134,9 @@ SYNTAX
           Scopeing
             A new scope starts with an { and ends with an }. An exception is a
             procedure, which does not use its own scope (see later in this manual).
        -    Control statements and functions support scopeings. Here is a small
        -    example how to use scopes:
        +    Control statements and functions support scopeings. The scope function
        +    will print out all available symbols at the current position. Here is a
        +    small example of how to use scopes:
         
                     my foo = 1;
         
        @@ -147,6 +148,10 @@ SYNTAX
         
                                     # Prints out 1
                                     put defined bar;
        +
        +                            # Prints out all available symbols at this
        +                            # point to stdout. Those are: bar and foo
        +                            scope;
                             }
         
                             # Prints out 0
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 163f9b6..dd0d237 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       42
        -===> Num of C source lines		:     7577 
        +===> Num of C source lines		:     7689 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      358 
        diff --git a/docs/version.txt b/docs/version.txt
        index c263f95..e9c3078 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9260
        +Fype v0.1-devel Build 9276
        diff --git a/examples/scopeing.fy b/examples/scopeing.fy
        index 2e36c2c..434f38f 100644
        --- a/examples/scopeing.fy
        +++ b/examples/scopeing.fy
        @@ -13,6 +13,10 @@ my foo = 1;
         
         		# Prints out 1
         		assert 1 == (put defined bar);
        +
        +		# Prints out all available symbols at
        +		# the current program position.
        +		scope;
         	}
         
         	# Prints out 0
        diff --git a/fype b/fype
        index fe23a6c..d3856ed 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index d0cf034..303e86b 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9260
        +#define BUILDNR 9299
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/function.c b/src/core/function.c
        index a528aa1..8541960 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -524,6 +524,7 @@ function_process(Interpret *p_interpret, Token *p_token_op,
         
         _Bool
         function_is_buildin(Token *p_token_ident) {
        +   /* TODO: optimize this function */
            if (strcmp("assert", token_get_val(p_token_ident)) == 0)
               return (true);
         
        @@ -563,6 +564,9 @@ function_is_buildin(Token *p_token_ident) {
            if (strcmp("put", token_get_val(p_token_ident)) == 0)
               return (true);
         
        +   if (strcmp("scope", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
            if (strcmp("say", token_get_val(p_token_ident)) == 0)
               return (true);
         
        @@ -751,6 +755,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               }
               stackiterator_delete(p_iter);
         
        +   } else if (strcmp("scope", token_get_val(p_token_ident)) == 0) {
        +      scope_print(p_interpret->p_scope);
        +
            } else if (strcmp("say", token_get_val(p_token_ident)) == 0) {
               StackIterator *p_iter = stackiterator_new(p_stack_args);
               while (stackiterator_has_next(p_iter)) {
        diff --git a/src/core/scope.c b/src/core/scope.c
        index 2a19390..8c3d4bf 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -150,8 +150,19 @@ scope_newset(Scope *p_scope, char *c_key, Symbol *p_symbol) {
         }
         
         void
        -scopes_print(Scope *p_scope) {
        +_scope_print_cb(void *p_void, int i_level) {
        +   Hash *p_hash_syms = p_void;
        +   if (i_level > 0)
        +      printf("%d level(s) up:\n", i_level);
        +   hash_iterate_key(p_hash_syms, symbol_print_cb);
        +}
        +
        +void
        +scope_print(Scope *p_scope) {
            printf("Scopes:\n");
        -   printf("Scope stack size: %d\n", p_scope->p_stack_scopes);
        -    
        +   printf("Scope stack size: %d\n", stack_size(p_scope->p_stack_scopes));
        +   printf("Global symbols:\n");
        +   hash_iterate_key(p_scope->p_hash_global, symbol_print_cb);
        +   printf("Local symbols:\n");
        +   stack_iterate_level(p_scope->p_stack_scopes, _scope_print_cb);
         }
        diff --git a/src/core/scope.h b/src/core/scope.h
        index be29e67..4954344 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -40,7 +40,6 @@
         #include "../defines.h"
         #include "symbol.h"
         
        -
         typedef struct {
            Hash *p_hash_global;
            Stack *p_stack_scopes;
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index 8c39f5c..ef5957b 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -35,6 +35,7 @@
         #include "symbol.h"
         
         #include "../data/list.h"
        +#include "token.h"
         
         Symbol*
         symbol_new(SymbolType sym, void *p_val) {
        @@ -67,3 +68,48 @@ void
         symbol_cleanup_hash_syms_cb(void *p_void) {
            symbol_delete(p_void);
         }
        +
        +void
        +symbol_print(Symbol *p_symbol, char *c_key) {
        +   printf("%s: %s", sym_get_name(p_symbol->sym), c_key);
        +
        +   switch (p_symbol->sym) {
        +   case SYM_BUILDIN:
        +   case SYM_CONSTANT:
        +      break;
        +   case SYM_PROCEDURE:
        +   case SYM_FUNCTION:
        +      //list_iterate(symbol_get_val(p_symbol), token_print_cb);
        +      break;
        +   case SYM_VARIABLE:
        +      printf(" ");
        +      token_print(symbol_get_val(p_symbol));
        +      break;
        +   }
        +
        +   printf("\n");
        +}
        +
        +void
        +symbol_print_cb(void *p_void, char *c_key) {
        +   symbol_print(p_void, c_key);
        +}
        +
        +char*
        +sym_get_name(SymbolType sym) {
        +   switch (sym) {
        +   case SYM_CONSTANT:
        +      return ("SYM_CONSTANT");
        +   case SYM_VARIABLE:
        +      return ("SYM_VARIABLE");
        +   case SYM_BUILDIN:
        +      return ("SYM_BUILDIN");
        +   case SYM_PROCEDURE:
        +      return ("SYM_PROCEDURE");
        +   case SYM_FUNCTION:
        +      return ("SYM_FUNCTION");
        +   }
        +
        +   // Never reach this point
        +   return ("NONE");
        +}
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index 2abc67e..e0f8337 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -62,5 +62,8 @@ typedef struct {
         Symbol* symbol_new(SymbolType sym, void *p_val);
         void symbol_delete(Symbol *p_symbol);
         void symbol_cleanup_hash_syms_cb(void *p_void);
        +void symbol_print(Symbol *p_symbol, char *c_key);
        +void symbol_print_cb(void *p_void, char *c_key);
        +char* sym_get_name(SymbolType sym);
         
         #endif
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 3c01042..53a1b50 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -68,7 +68,7 @@ hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type) {
            if (p_hash->i_cur_size == p_hash->i_size)
               hash_size(p_hash, p_hash->i_size *2);
         
        -   int i_addr = hash_getaddr(p_hash, c_key, free_ADDR);
        +   int i_addr = hash_getaddr(p_hash, c_key, FREE_ADDR);
         
            if (i_addr == RET_ERROR )
               return (RET_NO_SPACE);
        @@ -144,7 +144,7 @@ hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP) {
               i_addr = (i_addr *p_hash->i_size + (int) c_key[i]) % p_hash->i_size;
         
            switch (OP) {
        -   case free_ADDR:
        +   case FREE_ADDR:
               if (!hash_addrisfree(p_hash,i_addr))
                  return (i_addr);
               break;
        @@ -188,7 +188,7 @@ hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr,
            i_addr = (i_addr + 1) % p_hash->i_size;
         
            switch (OP) {
        -   case free_ADDR:
        +   case FREE_ADDR:
               if (!hash_addrisfree(p_hash,i_addr))
                  return (i_addr);
               break;
        @@ -289,3 +289,10 @@ hash_iterate(Hash *p_hash, void (*func)(void *)) {
               if (p_hash->p_elems[i].flag == 'o')
                  (*func) (p_hash->p_elems[i].p_val);
         }
        +
        +void
        +hash_iterate_key(Hash *p_hash, void (*func)(void *, char *)) {
        +   for (int i = 0; i < p_hash->i_size; ++i)
        +      if (p_hash->p_elems[i].flag == 'o')
        +         (*func) (p_hash->p_elems[i].p_val, p_hash->p_elems[i].c_key);
        +}
        diff --git a/src/data/hash.h b/src/data/hash.h
        index e49f3c3..9ee8640 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -39,7 +39,7 @@
         #include "types.h"
         
         typedef enum HASH_OP_ {
        -   free_ADDR,
        +   FREE_ADDR,
            OCC_ADDR
         } HASH_OP;
         
        @@ -75,6 +75,7 @@ int hash_nextaddr(Hash *p_hash, int i_max_tries,
                           char *c_key, int i_addr,
                           HASH_OP OP);
         void hash_iterate(Hash *p_hash, void (*func)(void *));
        +void hash_iterate_key(Hash *p_hash, void (*func)(void *, char *));
         
         #define hash_get_cur_size(hash) hash->i_cur_size
         #define hash_get_size(hash) hash->i_size
        diff --git a/src/data/stack.c b/src/data/stack.c
        index 5997c86..e7d5766 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -173,6 +173,35 @@ stack_iterate(Stack *p_stack, void (*func)(void *p_void)) {
            }
         }
         
        +void
        +stack_iterate2(Stack *p_stack, void (*func)(void *p_void, void *p_void2),
        +               void *p_void_arg) {
        +   if (!p_stack)
        +      return;
        +
        +   StackElem *p_elem = p_stack->p_first;
        +
        +   while (p_elem) {
        +      (*func)(p_elem->p_val, p_void_arg);
        +      p_elem = p_elem->p_next;
        +   }
        +}
        +
        +void
        +stack_iterate_level(Stack *p_stack, void (*func)(void *p_void,
        +                    int i_level)) {
        +   if (!p_stack)
        +      return;
        +
        +   StackElem *p_elem = p_stack->p_first;
        +
        +   int i_level = 0;
        +   while (p_elem) {
        +      (*func)(p_elem->p_val, i_level++);
        +      p_elem = p_elem->p_next;
        +   }
        +}
        +
         StackIterator*
         stackiterator_new(Stack *p_stack) {
            StackIterator *p_iter = malloc(sizeof(StackIterator));
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 88bde8d..45acdf8 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -59,6 +59,10 @@ Stack *stack_new();
         StackElem *stackelem_new();
         _Bool stack_empty(Stack *p_stack);
         void stack_iterate(Stack *p_stack, void (*func)(void *p_void));
        +void stack_iterate2(Stack *p_stack, void (*func)(void *p_void, void *p_void2),
        +                    void *p_void_arg);
        +void stack_iterate_level(Stack *p_stack, void (*func)(void *p_void,
        +                         int i_level));
         void stack_push(Stack *p_stack, void *p_val);
         void *stack_pop(Stack *p_stack);
         void stack_clear(Stack *p_stack);
        diff --git a/src/defines.h b/src/defines.h
        index 6ff662a..90ed947 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -75,7 +75,7 @@
         	exit(1); }
         #define DPRINTF(...) printf("DEBUG("); printf(__VA_ARGS__); printf(")\n");
         
        -#define DEBUG_GC
        +//#define DEBUG_GC
         //#define DEBUG_TOKEN_REFCOUNT
         //#define DEBUG_FUNCTION_PROCESS
         //#define DEBUG_TRACK
        diff --git a/tags b/tags
        index 5cddd67..fe248d5 100644
        --- a/tags
        +++ b/tags
        @@ -28,6 +28,7 @@ _program	./src/core/interpret.c	/^_program(Interpret *p_interpret) {$/
         _scanner_get_next_char	./src/core/scanner.c	/^_scanner_get_next_char(Scanner *p_scanner) {$/
         _scanner_has_next_char	./src/core/scanner.c	/^_scanner_has_next_char(Scanner *p_scanner) {$/
         _scope_get_hash	./src/core/scope.c	/^_scope_get_hash(Scope *p_scope, char *c_key) {$/
        +_scope_print_cb	./src/core/scope.c	/^_scope_print_cb(void *p_void, int i_level) {$/
         _statement	./src/core/interpret.c	/^_statement(Interpret *p_interpret) {$/
         _sum	./src/core/interpret.c	/^_sum(Interpret *p_interpret) {$/
         _term	./src/core/interpret.c	/^_term(Interpret *p_interpret) {$/
        @@ -126,6 +127,7 @@ hash_getaddr	./src/data/hash.c	/^hash_getaddr(Hash *p_hash, char *c_key, HASH_OP
         hash_insert	./src/data/hash.c	/^hash_insert(Hash *p_hash, char *c_key, void *p_val/
         hash_insert_ht	./src/data/hash.c	/^hash_insert_ht(Hash *p_hash, char *c_key, void *p_/
         hash_iterate	./src/data/hash.c	/^hash_iterate(Hash *p_hash, void (*func)(void *)) {/
        +hash_iterate_key	./src/data/hash.c	/^hash_iterate_key(Hash *p_hash, void (*func)(void */
         hash_new	./src/data/hash.c	/^hash_new(unsigned i_size) {$/
         hash_nextaddr	./src/data/hash.c	/^hash_nextaddr(Hash *p_hash, int i_max_tries, char /
         hash_print	./src/data/hash.c	/^hash_print(Hash *p_hash) {$/
        @@ -231,6 +233,7 @@ scope_exists	./src/core/scope.c	/^scope_exists(Scope *p_scope, char *c_key) {$/
         scope_get	./src/core/scope.c	/^scope_get(Scope *p_scope, char *c_key) {$/
         scope_new	./src/core/scope.c	/^scope_new(Hash *p_hash_syms) {$/
         scope_newset	./src/core/scope.c	/^scope_newset(Scope *p_scope, char *c_key, Symbol */
        +scope_print	./src/core/scope.c	/^scope_print(Scope *p_scope) {$/
         scope_remove	./src/core/scope.c	/^scope_remove(Scope *p_scope, char *c_key) {$/
         scope_reset	./src/core/scope.c	/^scope_reset(Scope *p_scope, char *c_key, Symbol *p/
         scope_up	./src/core/scope.c	/^scope_up(Scope *p_scope) {$/
        @@ -240,6 +243,8 @@ stack_delete	./src/data/stack.c	/^stack_delete(Stack *p_stack) {$/
         stack_delete_and_free	./src/data/stack.c	/^stack_delete_and_free(Stack *p_stack) {$/
         stack_empty	./src/data/stack.c	/^stack_empty(Stack *p_stack) {$/
         stack_iterate	./src/data/stack.c	/^stack_iterate(Stack *p_stack, void (*func)(void *p/
        +stack_iterate2	./src/data/stack.c	/^stack_iterate2(Stack *p_stack, void (*func)(void */
        +stack_iterate_level	./src/data/stack.c	/^stack_iterate_level(Stack *p_stack, void (*func)(v/
         stack_merge	./src/data/stack.c	/^stack_merge(Stack *p_stack, Stack *p_stack_merge) /
         stack_new	./src/data/stack.c	/^stack_new() {$/
         stack_pop	./src/data/stack.c	/^stack_pop(Stack *p_stack) {$/
        @@ -251,9 +256,12 @@ stackiterator_has_next	./src/data/stack.c	/^stackiterator_has_next(StackIterator
         stackiterator_new	./src/data/stack.c	/^stackiterator_new(Stack *p_stack) {$/
         stackiterator_next	./src/data/stack.c	/^stackiterator_next(StackIterator *p_iter) {$/
         stackiterator_remove_prev	./src/data/stack.c	/^stackiterator_remove_prev(StackIterator *p_iter) {/
        +sym_get_name	./src/core/symbol.c	/^sym_get_name(SymbolType sym) {$/
         symbol_cleanup_hash_syms_cb	./src/core/symbol.c	/^symbol_cleanup_hash_syms_cb(void *p_void) {$/
         symbol_delete	./src/core/symbol.c	/^symbol_delete(Symbol *p_symbol) {$/
         symbol_new	./src/core/symbol.c	/^symbol_new(SymbolType sym, void *p_val) {$/
        +symbol_print	./src/core/symbol.c	/^symbol_print(Symbol *p_symbol, char *c_key) {$/
        +symbol_print_cb	./src/core/symbol.c	/^symbol_print_cb(void *p_void, char *c_key) {$/
         token_copy_cb	./src/core/token.c	/^token_copy_cb(void *p_void) {$/
         token_copy_vals	./src/core/token.c	/^void token_copy_vals(Token *p_token_to, Token *p_t/
         token_delete	./src/core/token.c	/^token_delete(Token *p_token) {$/
        -- 
        cgit v1.2.3
        
        
        From 74576665ff39879f04e50ad6887a2178f42722c3 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Mon, 27 Oct 2008 06:52:06 +0000
        Subject:
        
        ---
         TODO                      |   5 -----
         docs/help.txt             |   2 +-
         docs/stats.txt            |   2 +-
         docs/version.txt          |   2 +-
         examples/all-examples.txt |   9 +++++++++
         fype                      | Bin 435103 -> 435103 bytes
         src/build.h               |   2 +-
         7 files changed, 13 insertions(+), 9 deletions(-)
        
        diff --git a/TODO b/TODO
        index 39e51e0..520a70f 100644
        --- a/TODO
        +++ b/TODO
        @@ -1,10 +1,5 @@
         Todo's (not in any specific order)
         
        -Scopes/Garbage output for detailed infos
        -	scopes_print(Scope *p_scope)
        -		for all scopes
        -			for all syms
        -				print
         Arrays
         Closures
         Function arguments and return values
        diff --git a/docs/help.txt b/docs/help.txt
        index 584924e..faa29c2 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9276
        +Fype v0.1-devel Build 9300
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index dd0d237..f17e1fd 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       42
         ===> Num of C source lines		:     7689 
         ===> Num of Fype source examples	:       14
        -===> Num of Fype source lines		:      358 
        +===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index e9c3078..1d1fc94 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9276
        +Fype v0.1-devel Build 9300
        diff --git a/examples/all-examples.txt b/examples/all-examples.txt
        index b438de3..f71e8a2 100644
        --- a/examples/all-examples.txt
        +++ b/examples/all-examples.txt
        @@ -283,6 +283,10 @@ my foo = 1;
         
         		# Prints out 1
         		assert 1 == (put defined bar);
        +
        +		# Prints out all available symbols at
        +		# the current program position.
        +		scope;
         	}
         
         	# Prints out 0
        @@ -317,7 +321,12 @@ proc baz {
         
         # Make a synonym baz, and undefine baz
         my bay = \baz;
        +
        +# Should be the num of syms for the same value
        +assert 2 == syms baz;
        +assert 2 == syms bay;
         undef baz;
        +assert 1 == syms bay;
         
         # bay still has a reference of the original procedure baz
         bay; # this prints aut "I am baz" 
        diff --git a/fype b/fype
        index d3856ed..ff1e116 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 303e86b..c44f6f4 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9299
        +#define BUILDNR 9300
         #define OS_FREEBSD
         
         #endif
        -- 
        cgit v1.2.3
        
        
        From 1c2c79c47719ca828ce0eb4365ea0327fe89f2d8 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 28 Oct 2008 22:23:40 +0000
        Subject: initial references support. run "make headers"
        
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   4 +--
         docs/version.txt     |   2 +-
         fype                 | Bin 435103 -> 454318 bytes
         src/argv.c           |  30 +++++++++---------
         src/argv.h           |  30 +++++++++---------
         src/build.h          |  32 +++++++++----------
         src/core/convert.c   |  30 +++++++++---------
         src/core/convert.h   |  30 +++++++++---------
         src/core/function.c  |  30 +++++++++---------
         src/core/function.h  |  30 +++++++++---------
         src/core/garbage.c   |  30 +++++++++---------
         src/core/garbage.h   |  30 +++++++++---------
         src/core/interpret.c |  87 +++++++++++++++++++++++++++++++++------------------
         src/core/interpret.h |  30 +++++++++---------
         src/core/reference.c |  55 ++++++++++++++++++++++++++++++++
         src/core/reference.h |  49 +++++++++++++++++++++++++++++
         src/core/scanner.c   |  30 +++++++++---------
         src/core/scanner.h   |  30 +++++++++---------
         src/core/scope.c     |  30 +++++++++---------
         src/core/scope.h     |  30 +++++++++---------
         src/core/symbol.c    |  34 +++++++++++---------
         src/core/symbol.h    |  37 +++++++++++-----------
         src/core/token.c     |  32 ++++++++++---------
         src/core/token.h     |  31 +++++++++---------
         src/data/array.c     |  30 +++++++++---------
         src/data/array.h     |  30 +++++++++---------
         src/data/dat.c       |  30 +++++++++---------
         src/data/dat.h       |  30 +++++++++---------
         src/data/hash.c      |  30 +++++++++---------
         src/data/hash.h      |  30 +++++++++---------
         src/data/list.c      |  30 +++++++++---------
         src/data/list.h      |  30 +++++++++---------
         src/data/map.c       |  30 +++++++++---------
         src/data/map.h       |  30 +++++++++---------
         src/data/queue.c     |  30 +++++++++---------
         src/data/queue.h     |  30 +++++++++---------
         src/data/stack.c     |  30 +++++++++---------
         src/data/stack.h     |  30 +++++++++---------
         src/data/tree.c      |  30 +++++++++---------
         src/data/tree.h      |  30 +++++++++---------
         src/data/tupel.c     |  30 +++++++++---------
         src/data/tupel.h     |  30 +++++++++---------
         src/data/types.h     |  30 +++++++++---------
         src/defines.h        |  32 +++++++++----------
         src/fype.c           |  30 +++++++++---------
         src/fype.h           |  30 +++++++++---------
         src/main.c           |  30 +++++++++---------
         tags                 |   3 ++
         49 files changed, 796 insertions(+), 654 deletions(-)
         create mode 100644 src/core/reference.c
         create mode 100644 src/core/reference.h
        
        diff --git a/docs/help.txt b/docs/help.txt
        index faa29c2..6ae4db7 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9300
        +Fype v0.1-devel Build 9309
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index f17e1fd..de8b984 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
        -===> Num of C source files		:       42
        -===> Num of C source lines		:     7689 
        +===> Num of C source files		:       44
        +===> Num of C source lines		:     7828 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 1d1fc94..7b886bc 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9300
        +Fype v0.1-devel Build 9309
        diff --git a/fype b/fype
        index ff1e116..7744de6 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/argv.c b/src/argv.c
        index 4485853..68d83d9 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/argv.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/argv.h b/src/argv.h
        index 6527d50..d7675db 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/argv.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/build.h b/src/build.h
        index c44f6f4..fe825ba 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/build.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,27 +15,27 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9300
        +#define BUILDNR 9314
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index c909cf0..971fe2e 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/convert.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.h b/src/core/convert.h
        index 1c841b7..5a80159 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/convert.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.c b/src/core/function.c
        index 8541960..0c80e0a 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/function.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.h b/src/core/function.h
        index 7d8b251..9b232df 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/function.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index b7a43aa..f1e6bba 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/garbage.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index 65f2238..31ca467 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/garbage.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index dea808c..3d2524a 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -54,27 +54,27 @@
         #define _NEXT_TT _next_tt(p_interpret)
         #define _SKIP _next(p_interpret);
         
        -void _print_lookahead(Interpret *p_interpret);
        -int _next(Interpret *p_interpret);
        -int _program(Interpret *p_interpret);
        -int _var_decl(Interpret *p_interpret);
        -int _var_assign(Interpret *p_interpret);
        -int _var_list(Interpret *p_interpret);
        -int _expression_get(Interpret *p_interpret, List *p_list_block);
        +int _block(Interpret *p_interpret);
         int _block_get(Interpret *p_interpret, List *p_list_block);
         int _block_skip(Interpret *p_interpret);
        -int _proc_decl(Interpret *p_interpret);
        -int _func_decl(Interpret *p_interpret);
        -int _statement(Interpret *p_interpret);
        -int _block(Interpret *p_interpret);
        +int _compare(Interpret *p_interpret);
        +int _control(Interpret *p_interpret);
         int _expression(Interpret *p_interpret);
         int _expression_(Interpret *p_interpret);
        -int _control(Interpret *p_interpret);
        -int _compare(Interpret *p_interpret);
        -int _sum(Interpret *p_interpret);
        +int _expression_get(Interpret *p_interpret, List *p_list_block);
        +int _func_decl(Interpret *p_interpret);
        +int _next(Interpret *p_interpret);
        +int _proc_decl(Interpret *p_interpret);
         int _product(Interpret *p_interpret);
         int _product2(Interpret *p_interpret);
        +int _program(Interpret *p_interpret);
        +int _statement(Interpret *p_interpret);
        +int _sum(Interpret *p_interpret);
         int _term(Interpret *p_interpret);
        +int _var_assign(Interpret *p_interpret);
        +int _var_decl(Interpret *p_interpret);
        +int _var_list(Interpret *p_interpret);
        +void _print_lookahead(Interpret *p_interpret);
         
         Interpret*
         interpret_new(List *p_list_token, Hash *p_hash_syms) {
        @@ -175,7 +175,6 @@ _var_decl(Interpret *p_interpret) {
            _CHECK TRACK
         
            switch (p_interpret->tt) {
        -      //case TT_ARR: //TODO cleanup TT_ARR
            case TT_MY:
            {
               if (_NEXT_TT != TT_IDENT)
        @@ -949,6 +948,34 @@ _term(Interpret *p_interpret) {
            }
            break;
         
        +   /* Reference operator */
        +   case TT_AAND:
        +   {
        +      _NEXT
        +      if (p_interpret->tt != TT_IDENT)
        +         _INTERPRET_ERROR("Expexted identifier for '&'",
        +                          p_interpret->p_token);
        +      _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +
        +      _NEXT;
        +      return (1);
        +   }
        +   break;
        +
        +   /* Dereference opeator */
        +   case TT_MULT:
        +   {
        +      _NEXT
        +      if (p_interpret->tt != TT_IDENT)
        +         _INTERPRET_ERROR("Expexted identifier for '*'",
        +                          p_interpret->p_token);
        +
        +      _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +      _NEXT;
        +      return (1);
        +   }
        +   break;
        +
            /*
            case TT_PARANT_AL:
            {
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index cea9ec8..9168883 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.c b/src/core/reference.c
        new file mode 100644
        index 0000000..2c97c6a
        --- /dev/null
        +++ b/src/core/reference.c
        @@ -0,0 +1,55 @@
        +/*:*
        + *: File: ./src/core/reference.c
        + *: A simple interpreter
        + *: 
        + *: WWW		: http://fype.buetow.org
        + *: E-Mail	: fype@dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *: All rights reserved.
        + *: 
        + *: Redistribution and use in source and binary forms, with or without modi-
        + *: fication, are permitted provided that the following conditions are met:
        + *:  * Redistributions of source code must retain the above copyright
        + *:    notice, this list of conditions and the following disclaimer.
        + *:  * Redistributions in binary form must reproduce the above copyright
        + *:    notice, this list of conditions and the following disclaimer in the
        + *:    documentation and/or other materials provided with the distribution.
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
        + *:    without specific prior written permission.
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: POSSIBILITY OF SUCH DAMAGE.
        + *:*/
        +
        +#include "reference.h"
        +
        +Reference*
        +reference_new(Symbol *p_symbol) {
        +   Reference *p_reference = malloc(sizeof(Reference));
        +
        +   p_reference->p_symbol = p_symbol;
        +
        +   return (p_reference);
        +}
        +
        +void
        +reference_delete_cb(void *p_void) {
        +   reference_delete(p_void);
        +}
        +
        +void
        +reference_delete(Reference *p_reference) {
        +   symbol_delete(p_reference->p_symbol);
        +   free(p_reference);
        +}
        diff --git a/src/core/reference.h b/src/core/reference.h
        new file mode 100644
        index 0000000..dd682bd
        --- /dev/null
        +++ b/src/core/reference.h
        @@ -0,0 +1,49 @@
        +/*:*
        + *: File: ./src/core/reference.h
        + *: A simple interpreter
        + *: 
        + *: WWW		: http://fype.buetow.org
        + *: E-Mail	: fype@dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *: All rights reserved.
        + *: 
        + *: Redistribution and use in source and binary forms, with or without modi-
        + *: fication, are permitted provided that the following conditions are met:
        + *:  * Redistributions of source code must retain the above copyright
        + *:    notice, this list of conditions and the following disclaimer.
        + *:  * Redistributions in binary form must reproduce the above copyright
        + *:    notice, this list of conditions and the following disclaimer in the
        + *:    documentation and/or other materials provided with the distribution.
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
        + *:    without specific prior written permission.
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: POSSIBILITY OF SUCH DAMAGE.
        + *:*/
        +
        +#ifndef REFERENCE_H
        +#define REFERENCE_H
        +
        +#include "../defines.h"
        +#include "symbol.h"
        +
        +typedef struct {
        +   Symbol *p_symbol;
        +} Reference;
        +
        +Reference* reference_new(Symbol *p_symbol);
        +void reference_delete_cb(void *p_void);
        +void reference_delete(Reference *p_reference);
        +
        +#endif /* REFERENCE_H */
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index dad154f..3607c0f 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scanner.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index b986964..c1ca7d8 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scanner.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.c b/src/core/scope.c
        index 8c3d4bf..180d22e 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scope.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.h b/src/core/scope.h
        index 4954344..48eda06 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scope.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index ef5957b..fca9ea2 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/symbol.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -81,6 +81,8 @@ symbol_print(Symbol *p_symbol, char *c_key) {
            case SYM_FUNCTION:
               //list_iterate(symbol_get_val(p_symbol), token_print_cb);
               break;
        +   case SYM_REFERENCE:
        +      break;
            case SYM_VARIABLE:
               printf(" ");
               token_print(symbol_get_val(p_symbol));
        @@ -100,6 +102,8 @@ sym_get_name(SymbolType sym) {
            switch (sym) {
            case SYM_CONSTANT:
               return ("SYM_CONSTANT");
        +   case SYM_REFERENCE:
        +      return ("SYM_REFERENCE");
            case SYM_VARIABLE:
               return ("SYM_VARIABLE");
            case SYM_BUILDIN:
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index e0f8337..b152f45 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/symbol.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -46,11 +46,12 @@
         #define IS_NOT_A_FUNCTION(s) !IS_A_FUNCTION(s)
         
         typedef enum {
        -   SYM_CONSTANT,
        -   SYM_VARIABLE,
            SYM_BUILDIN,
        -   SYM_PROCEDURE,
        +   SYM_CONSTANT,
            SYM_FUNCTION,
        +   SYM_PROCEDURE,
        +   SYM_REFERENCE,
        +   SYM_VARIABLE,
         } SymbolType;
         
         typedef struct {
        diff --git a/src/core/token.c b/src/core/token.c
        index 71d9551..e735995 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/token.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -81,6 +81,7 @@ get_tt(char *c_token) {
            CHECK("<<") TT_LSHIFT;
            CHECK(">>") TT_RSHIFT;
            CHECK("and") TT_AND;
        +   CHECK("&") TT_AAND;
            CHECK("or") TT_OR;
            CHECK("xor") TT_XOR;
            CHECK("=") TT_ASSIGN;
        @@ -163,6 +164,7 @@ tt_get_name(TokenType tt_cur) {
               CASE(TT_LSHIFT,"TT_LSHIFT")
               CASE(TT_RSHIFT,"TT_RSHIFT")
               CASE(TT_AND,"TT_AND")
        +      CASE(TT_AAND,"TT_AAND")
               CASE(TT_OR,"TT_OR")
               CASE(TT_XOR,"TT_XOR")
               CASE(TT_NOT,"TT_NOT")
        diff --git a/src/core/token.h b/src/core/token.h
        index 9d1a560..38af53f 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/token.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -126,6 +126,7 @@ typedef enum {
            START_OPERATORS,
            TT_ADD,
            TT_AND,
        +   TT_AAND,
            TT_ASSIGN,
            TT_COMMA,
            TT_DDOT,
        diff --git a/src/data/array.c b/src/data/array.c
        index 5ed61c3..93b3375 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/array.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.h b/src/data/array.h
        index c6ac81f..4abb4ef 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/array.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.c b/src/data/dat.c
        index f06680e..ab30241 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/dat.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.h b/src/data/dat.h
        index 4b80568..849306d 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/dat.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 53a1b50..e380ad4 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/hash.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 9ee8640..73aa0c0 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/hash.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.c b/src/data/list.c
        index ab85edb..3b7f1ff 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/list.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.h b/src/data/list.h
        index f66537f..2654653 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/list.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.c b/src/data/map.c
        index 4542d88..11629f1 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/map.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.h b/src/data/map.h
        index d706311..c5c58b5 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/map.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.c b/src/data/queue.c
        index ee57bb4..c1b897a 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/queue.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.h b/src/data/queue.h
        index d4e9d7a..bc9d22c 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/queue.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.c b/src/data/stack.c
        index e7d5766..bdbc3cc 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/stack.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 45acdf8..9b766bd 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/stack.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.c b/src/data/tree.c
        index 4992a2d..b98b34f 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tree.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.h b/src/data/tree.h
        index 9bdb3fa..6356b1f 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tree.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index 476e108..2dd4863 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tupel.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 71be0d4..8162e63 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tupel.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/types.h b/src/data/types.h
        index 5283b2d..f9f20cd 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/types.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/defines.h b/src/defines.h
        index 90ed947..10e9ccc 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/defines.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -78,7 +78,7 @@
         //#define DEBUG_GC
         //#define DEBUG_TOKEN_REFCOUNT
         //#define DEBUG_FUNCTION_PROCESS
        -//#define DEBUG_TRACK
        +#define DEBUG_TRACK
         //#define DEBUG_BLOCK_GET
         //#define DEBUG_EXPRESSION_GET
         
        diff --git a/src/fype.c b/src/fype.c
        index 5bb0aff..159cf5c 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/fype.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.h b/src/fype.h
        index 4be0076..8eef520 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/fype.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/main.c b/src/main.c
        index 0fb11b6..9bf1ed7 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/main.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/tags b/tags
        index fe248d5..ff2fa1b 100644
        --- a/tags
        +++ b/tags
        @@ -220,6 +220,9 @@ queueiter_new	./src/data/queue.c	/^queueiter_new(Queue *p_queue) {$/
         queueiter_next	./src/data/queue.c	/^queueiter_next(QueueIter *p_iter) {$/
         queueiter_next_t	./src/data/queue.c	/^queueiter_next_t(QueueIter *p_iter, TYPE *p_type) /
         queueiter_queue	./src/data/queue.c	/^queueiter_queue(QueueIter *p_iter) {$/
        +reference_delete	./src/core/reference.c	/^reference_delete(Reference *p_reference) {$/
        +reference_delete_cb	./src/core/reference.c	/^reference_delete_cb(void *p_void) {$/
        +reference_new	./src/core/reference.c	/^reference_new(Symbol *p_symbol) {$/
         scanner_add_token	./src/core/scanner.c	/^scanner_add_token(Scanner *p_scanner, char **cc_to/
         scanner_cleanup_list_token_cb	./src/core/scanner.c	/^scanner_cleanup_list_token_cb(void *p_void) {$/
         scanner_delete	./src/core/scanner.c	/^scanner_delete(Scanner *p_scanner) {$/
        -- 
        cgit v1.2.3
        
        
        From d8bff74a889e0be1781666e8c249a6b991c2ad6b Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 28 Oct 2008 22:36:59 +0000
        Subject: symbol_ref_up added.
        
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 454318 -> 457142 bytes
         src/build.h          |   2 +-
         src/core/reference.c |   1 +
         6 files changed, 5 insertions(+), 4 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 6ae4db7..3f9c73c 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9309
        +Fype v0.1-devel Build 9317
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index de8b984..3eccd1b 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7828 
        +===> Num of C source lines		:     7829 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 7b886bc..48c9680 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9309
        +Fype v0.1-devel Build 9317
        diff --git a/fype b/fype
        index 7744de6..c175877 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index fe825ba..4fc243d 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9314
        +#define BUILDNR 9317
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/reference.c b/src/core/reference.c
        index 2c97c6a..211ef23 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -38,6 +38,7 @@ Reference*
         reference_new(Symbol *p_symbol) {
            Reference *p_reference = malloc(sizeof(Reference));
         
        +   symbol_ref_up(p_symbol);
            p_reference->p_symbol = p_symbol;
         
            return (p_reference);
        -- 
        cgit v1.2.3
        
        
        From 8933f024f5a7374de8d62065a11524875ef68dca Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 28 Oct 2008 23:07:42 +0000
        Subject: feierabend f. heute
        
        ---
         src/core/function.c  |  1 -
         src/core/interpret.c | 36 +++++++++++++++++++-----------------
         src/core/reference.h |  2 ++
         3 files changed, 21 insertions(+), 18 deletions(-)
        
        diff --git a/src/core/function.c b/src/core/function.c
        index 0c80e0a..bf8f1df 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -772,7 +772,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
                     break;
        -            NO_DEFAULT;
                  }
               }
               stackiterator_delete(p_iter);
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 3d2524a..ae69db0 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -955,7 +955,9 @@ _term(Interpret *p_interpret) {
               if (p_interpret->tt != TT_IDENT)
                  _INTERPRET_ERROR("Expexted identifier for '&'",
                                   p_interpret->p_token);
        -      _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +
        +	  
        +	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
         
               _NEXT;
               return (1);
        @@ -970,7 +972,7 @@ _term(Interpret *p_interpret) {
                  _INTERPRET_ERROR("Expexted identifier for '*'",
                                   p_interpret->p_token);
         
        -      _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
               _NEXT;
               return (1);
            }
        diff --git a/src/core/reference.h b/src/core/reference.h
        index dd682bd..b410766 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -38,6 +38,8 @@
         #include "../defines.h"
         #include "symbol.h"
         
        +#define reference_get_sym(r) (r->p_symbol)
        +
         typedef struct {
            Symbol *p_symbol;
         } Reference;
        -- 
        cgit v1.2.3
        
        
        From eb2a3bdc387eb76908dcd59b165738adccc28786 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sat, 1 Nov 2008 18:57:20 +0000
        Subject: modified headers
        
        ---
         docs/header.txt      |   4 +-
         docs/stats.txt       |   2 +-
         fype                 | Bin 457142 -> 457178 bytes
         src/argv.c           |   4 +-
         src/argv.h           |   4 +-
         src/build.h          |   6 +-
         src/core/convert.c   |   4 +-
         src/core/convert.h   |   4 +-
         src/core/function.c  |   4 +-
         src/core/function.h  |   4 +-
         src/core/garbage.c   |   4 +-
         src/core/garbage.h   |   4 +-
         src/core/interpret.c |  30 ++--
         src/core/interpret.h |   4 +-
         src/core/reference.c |   4 +-
         src/core/reference.h |   4 +-
         src/core/scanner.c   |   4 +-
         src/core/scanner.h   |   4 +-
         src/core/scope.c     |   4 +-
         src/core/scope.h     |   4 +-
         src/core/symbol.c    |   4 +-
         src/core/symbol.h    |   4 +-
         src/core/token.c     |   4 +-
         src/core/token.h     |   4 +-
         src/data/array.c     |   4 +-
         src/data/array.h     |   4 +-
         src/data/dat.c       |   4 +-
         src/data/dat.h       |   4 +-
         src/data/hash.c      |   4 +-
         src/data/hash.h      |   4 +-
         src/data/list.c      |   4 +-
         src/data/list.h      |   4 +-
         src/data/map.c       |   4 +-
         src/data/map.h       |   4 +-
         src/data/queue.c     |   4 +-
         src/data/queue.h     |   4 +-
         src/data/stack.c     |   4 +-
         src/data/stack.h     |   4 +-
         src/data/tree.c      |   4 +-
         src/data/tree.h      |   4 +-
         src/data/tupel.c     |   4 +-
         src/data/tupel.h     |   4 +-
         src/data/types.h     |   4 +-
         src/defines.h        |   4 +-
         src/fype.c           |   4 +-
         src/fype.h           |   4 +-
         src/main.c           |   4 +-
         tmp/test.out         | 406 ++++++++++++++++++++++++++++++++++++++++-----------
         48 files changed, 429 insertions(+), 187 deletions(-)
        
        diff --git a/docs/header.txt b/docs/header.txt
        index b758e84..663bcac 100644
        --- a/docs/header.txt
        +++ b/docs/header.txt
        @@ -18,10 +18,10 @@ fication, are permitted provided that the following conditions are met:
            be used to endorse or promote products derived from this software 
            without specific prior written permission.
         
        -THIS SOFTWARE IS PROVIDED BY Paul Buetow ``AS IS'' AND ANY EXPRESS OR 
        +THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW ``AS IS'' AND ANY EXPRESS OR 
         IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
         WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        -DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        +DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
         INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
         (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 3eccd1b..e0195c6 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7829 
        +===> Num of C source lines		:     7832 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/fype b/fype
        index c175877..bb28a31 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/argv.c b/src/argv.c
        index 68d83d9..dbe398e 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/argv.h b/src/argv.h
        index d7675db..855d99a 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/build.h b/src/build.h
        index 4fc243d..0093a97 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9317
        +#define BUILDNR 9320
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index 971fe2e..a5f910d 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/convert.h b/src/core/convert.h
        index 5a80159..eb1cce1 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/function.c b/src/core/function.c
        index bf8f1df..2db865a 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/function.h b/src/core/function.h
        index 9b232df..f71a191 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index f1e6bba..29ce0d8 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index 31ca467..17c1d35 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index ae69db0..d2956e2 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index 9168883..083a2ba 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/reference.c b/src/core/reference.c
        index 211ef23..eccf4e9 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/reference.h b/src/core/reference.h
        index b410766..8944689 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index 3607c0f..2bc0877 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index c1ca7d8..1a6c700 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/scope.c b/src/core/scope.c
        index 180d22e..bcea5d9 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/scope.h b/src/core/scope.h
        index 48eda06..e983beb 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index fca9ea2..b9a8b24 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index b152f45..4c498f2 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/token.c b/src/core/token.c
        index e735995..9d56736 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/core/token.h b/src/core/token.h
        index 38af53f..8f09cc2 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/array.c b/src/data/array.c
        index 93b3375..09022ff 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/array.h b/src/data/array.h
        index 4abb4ef..f89c0ff 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/dat.c b/src/data/dat.c
        index ab30241..17c935b 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/dat.h b/src/data/dat.h
        index 849306d..060783f 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/hash.c b/src/data/hash.c
        index e380ad4..6a27c5b 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 73aa0c0..6cfe2a3 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/list.c b/src/data/list.c
        index 3b7f1ff..385091c 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/list.h b/src/data/list.h
        index 2654653..9bb7a00 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/map.c b/src/data/map.c
        index 11629f1..18f4e5c 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/map.h b/src/data/map.h
        index c5c58b5..7ae9ff1 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/queue.c b/src/data/queue.c
        index c1b897a..7c8271a 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/queue.h b/src/data/queue.h
        index bc9d22c..d3e6319 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/stack.c b/src/data/stack.c
        index bdbc3cc..a9bbdf7 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 9b766bd..86accd9 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/tree.c b/src/data/tree.c
        index b98b34f..2b0b280 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/tree.h b/src/data/tree.h
        index 6356b1f..c3327fd 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index 2dd4863..e772c45 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 8162e63..747e363 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/data/types.h b/src/data/types.h
        index f9f20cd..a50e273 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/defines.h b/src/defines.h
        index 10e9ccc..6c2fb59 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/fype.c b/src/fype.c
        index 159cf5c..bf9a3ca 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/fype.h b/src/fype.h
        index 8eef520..37c8851 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/src/main.c b/src/main.c
        index 9bf1ed7..d48a395 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -19,10 +19,10 @@
          *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
          *: 
        - *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
          *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT, 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
          *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
          *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
          *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        diff --git a/tmp/test.out b/tmp/test.out
        index 06f3a18..c4bed13 100644
        --- a/tmp/test.out
        +++ b/tmp/test.out
        @@ -87,87 +87,329 @@ Token (id=00053, line=00028, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.
         Token (id=00054, line=00031, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=1)
         Token (id=00055, line=00031, pos=0010, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1)
         Token (id=00056, line=00031, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -DEBUG::GC: Freed 0 items
        -DEBUG::GC: Freed 0 items
        -DEBUG::GC: Freeing Token (id=00000, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freed 1 items
        +DEBUG(Track: ./src/core/interpret.c:_program:165)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: foo)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: bar)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: bar)
         bar
        -DEBUG::GC: Freeing Token (id=00000, line=00010, pos=0007, type=TT_INTEGER, val=bar, ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00000, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=-1)
        -DEBUG::GC: Freed 2 items
        -DEBUG::GC: Freed 0 items
        -DEBUG::GC: Freed 0 items
        -DEBUG::GC: Freeing Token (id=00060, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freed 1 items
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: proc)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: proc)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: my)
        +DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: bay)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: ;)
        +DEBUG(Track: ./src/core/interpret.c:_program:165)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: I am baz)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: I am baz)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: I am baz)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: I am baz)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: I am baz)
         I am baz
        -DEBUG::GC: Freed 0 items
        -DEBUG::GC: Freeing Token (id=00061, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freed 1 items
        -DEBUG::GC: Freeing Token (id=00063, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00000, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00000, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=-1)
        -DEBUG::GC: Freed 3 items
        -DEBUG::GC: Freeing Token (id=00066, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00000, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00000, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=-1)
        -DEBUG::GC: Freed 3 items
        -DEBUG::GC: Freeing Token (id=00068, line=-0001, pos=-001, type=TT_INTEGER, val=(null), ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freed 1 items
        -DEBUG::GC: Freeing Token (id=00000, line=00006, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00001, line=00006, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00002, line=00006, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00003, line=00006, pos=0010, type=TT_STRING, val=foo, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00004, line=00006, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00005, line=00007, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00006, line=00007, pos=0007, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00007, line=00007, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00008, line=00007, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00009, line=00007, pos=0014, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00010, line=00007, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00011, line=00010, pos=0004, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00012, line=00010, pos=0006, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00057, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00014, line=00010, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00015, line=00013, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00059, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00017, line=00013, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00018, line=00013, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00019, line=00013, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00020, line=00013, pos=0020, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00021, line=00013, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00022, line=00016, pos=0005, type=TT_PROC, val=proc, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00023, line=00016, pos=0009, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00024, line=00016, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00025, line=00017, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00026, line=00017, pos=0006, type=TT_STRING, val=I am baz, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00027, line=00017, pos=0008, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00028, line=00018, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00029, line=00021, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00030, line=00021, pos=0007, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00031, line=00021, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00032, line=00021, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00033, line=00021, pos=0014, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00034, line=00021, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00035, line=00022, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00036, line=00022, pos=0010, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00037, line=00022, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00038, line=00025, pos=0004, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00039, line=00025, pos=0005, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00040, line=00027, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00064, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00042, line=00027, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00043, line=00027, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00044, line=00027, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00045, line=00027, pos=0024, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00046, line=00027, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00047, line=00028, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00067, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00049, line=00028, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00050, line=00028, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00051, line=00028, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00052, line=00028, pos=0024, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00053, line=00028, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00054, line=00031, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00055, line=00031, pos=0010, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freeing Token (id=00056, line=00031, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=0)
        -DEBUG::GC: Freed 57 items
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: 0)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: 0)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: 0)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: 0)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: 0)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: assert)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: 1)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: 1)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: 1)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: 1)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: 1)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: defined)
        +DEBUG(Track: ./src/core/interpret.c:_statement:430)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_control:489)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_expression:465)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_compare:624)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_sum:675)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_product:726)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_product2:764)
        +DEBUG(Token: undef)
        +DEBUG(Track: ./src/core/interpret.c:_term:798)
        +DEBUG(Token: undef)
        -- 
        cgit v1.2.3
        
        
        From a7e28edcf236e3f9ab17008cb596394d1526f3f3 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sat, 1 Nov 2008 19:01:33 +0000
        Subject: initial vimsession
        
        ---
         docs/help.txt    |   2 +-
         docs/version.txt |   2 +-
         src/build.h      |   2 +-
         vimsession       | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
         4 files changed, 293 insertions(+), 3 deletions(-)
         create mode 100644 vimsession
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 3f9c73c..3d0edfd 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9317
        +Fype v0.1-devel Build 9320
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/version.txt b/docs/version.txt
        index 48c9680..fe60012 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9317
        +Fype v0.1-devel Build 9320
        diff --git a/src/build.h b/src/build.h
        index 0093a97..225bf2a 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9320
        +#define BUILDNR 9321
         #define OS_FREEBSD
         
         #endif
        diff --git a/vimsession b/vimsession
        new file mode 100644
        index 0000000..894f44c
        --- /dev/null
        +++ b/vimsession
        @@ -0,0 +1,290 @@
        +let SessionLoad = 1
        +if &cp | set nocp | endif
        +map + :next 
        +map ,e :e =expand("%:p:h") . "/" 
        +map ,conf :source ~/.vimrc 
        +map ,v :sp ~/.vimrc 
        +map ,u :set ff=unix 
        +map ,t :w! 
         :make test
        +map ,r :w! 
         :make run 
        +map ,m :w! 
         :make 
        +map ,d :set ff=dos 
        +map - :previous 
        +let s:cpo_save=&cpo
        +set cpo&vim
        +nmap gx NetrwBrowseX
        +map t :TlistToggle
        +nnoremap  NetrwBrowseX :call netrw#NetBrowseX(expand(""),0)
        +iabbr sout System.out.println
        +iabbr ite \item
        +iabbr tabul \begin{tabular}{}
        
        \end{tabular}
        2ki	
        +iabbr bitem \begin{itemize}
        
        \end{itemize}
        2ki	\item
        +iabbr benum \begin{enumerate}
        
        \end{enumerate}
        2ki	\item
        +iabbr nsssec \subsubsection{}ba
        +iabbr nssec \subsection{}ba
        +iabbr nsec \section{}ba
        +let &cpo=s:cpo_save
        +unlet s:cpo_save
        +set autoindent
        +set background=dark
        +set backup
        +set backupdir=~/.vim/backups
        +set cindent
        +set ignorecase
        +set incsearch
        +set ruler
        +set shiftwidth=3
        +set showcmd
        +set showmatch
        +set smartcase
        +set tabstop=4
        +set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        +set title
        +set visualbell
        +let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
        +let v:this_session=expand(":p")
        +silent only
        +cd ~/svn/fype/trunk
        +if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
        +  let s:wipebuf = bufnr('%')
        +endif
        +set shortmess=aoO
        +badd +1 src/core/interpret.h
        +args src/core/interpret.h
        +edit src/core/interpret.h
        +set splitbelow splitright
        +wincmd _ | wincmd |
        +split
        +1wincmd k
        +wincmd w
        +set nosplitbelow
        +set nosplitright
        +wincmd t
        +set winheight=1 winwidth=1
        +exe '1resize ' . ((&lines * 20 + 18) / 36)
        +exe '2resize ' . ((&lines * 13 + 18) / 36)
        +argglobal
        +edit /usr/local/share/vim/vim71/doc/starting.txt
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal nobuflisted
        +setlocal buftype=help
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != 'help'
        +setlocal filetype=help
        +endif
        +setlocal foldcolumn=0
        +setlocal nofoldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=!-~,^*,^|,^\",192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal nomodifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal readonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != 'help'
        +setlocal syntax=help
        +endif
        +setlocal tabstop=8
        +setlocal tags=
        +setlocal textwidth=78
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 1197 - ((19 * winheight(0) + 10) / 20)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +1197
        +normal! 039l
        +wincmd w
        +argglobal
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal buflisted
        +setlocal buftype=
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != 'cpp'
        +setlocal filetype=cpp
        +endif
        +setlocal foldcolumn=0
        +setlocal foldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=@,48-57,_,192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal modifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal noreadonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != 'cpp'
        +setlocal syntax=cpp
        +endif
        +setlocal tabstop=4
        +setlocal tags=
        +setlocal textwidth=0
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 1 - ((0 * winheight(0) + 6) / 13)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +1
        +normal! 0
        +wincmd w
        +exe '1resize ' . ((&lines * 20 + 18) / 36)
        +exe '2resize ' . ((&lines * 13 + 18) / 36)
        +tabnext 1
        +if exists('s:wipebuf')
        +  silent exe 'bwipe ' . s:wipebuf
        +endif
        +unlet! s:wipebuf
        +set winheight=1 winwidth=20 shortmess=filnxtToO
        +let s:sx = expand(":p:r")."x.vim"
        +if file_readable(s:sx)
        +  exe "source " . s:sx
        +endif
        +let &so = s:so_save | let &siso = s:siso_save
        +doautoall SessionLoadPost
        +unlet SessionLoad
        +" vim: set ft=vim :
        -- 
        cgit v1.2.3
        
        
        From 71f02b4a701b6fb5f54950ef9925672b8c608211 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sat, 1 Nov 2008 19:09:58 +0000
        Subject: renamed to std name
        
        ---
         Session.vim | 176 ++++++++++++++++++++++++++++++++++++
         vimsession  | 290 ------------------------------------------------------------
         2 files changed, 176 insertions(+), 290 deletions(-)
         create mode 100644 Session.vim
         delete mode 100644 vimsession
        
        diff --git a/Session.vim b/Session.vim
        new file mode 100644
        index 0000000..88a7555
        --- /dev/null
        +++ b/Session.vim
        @@ -0,0 +1,176 @@
        +let SessionLoad = 1
        +if &cp | set nocp | endif
        +map + :next 
        +map ,e :e =expand("%:p:h") . "/" 
        +map ,conf :source ~/.vimrc 
        +map ,v :sp ~/.vimrc 
        +map ,u :set ff=unix 
        +map ,t :w! 
         :make test
        +map ,r :w! 
         :make run 
        +map ,m :w! 
         :make 
        +map ,d :set ff=dos 
        +map - :previous 
        +let s:cpo_save=&cpo
        +set cpo&vim
        +nmap gx NetrwBrowseX
        +map t :TlistToggle
        +nnoremap  NetrwBrowseX :call netrw#NetBrowseX(expand(""),0)
        +iabbr sout System.out.println
        +iabbr ite \item
        +iabbr tabul \begin{tabular}{}
        
        \end{tabular}
        2ki	
        +iabbr bitem \begin{itemize}
        
        \end{itemize}
        2ki	\item
        +iabbr benum \begin{enumerate}
        
        \end{enumerate}
        2ki	\item
        +iabbr nsssec \subsubsection{}ba
        +iabbr nssec \subsection{}ba
        +iabbr nsec \section{}ba
        +let &cpo=s:cpo_save
        +unlet s:cpo_save
        +set autoindent
        +set background=dark
        +set backup
        +set backupdir=~/.vim/backups
        +set cindent
        +set ignorecase
        +set incsearch
        +set ruler
        +set shiftwidth=3
        +set showcmd
        +set showmatch
        +set smartcase
        +set tabstop=4
        +set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        +set title
        +set visualbell
        +let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
        +let v:this_session=expand(":p")
        +silent only
        +cd ~/svn/fype/trunk
        +if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
        +  let s:wipebuf = bufnr('%')
        +endif
        +set shortmess=aoO
        +badd +1 src/core/interpret.h
        +args src/core/interpret.h
        +edit src/core/interpret.h
        +set splitbelow splitright
        +set nosplitbelow
        +set nosplitright
        +wincmd t
        +set winheight=1 winwidth=1
        +argglobal
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal buflisted
        +setlocal buftype=
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != 'cpp'
        +setlocal filetype=cpp
        +endif
        +setlocal foldcolumn=0
        +setlocal foldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=@,48-57,_,192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal modifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal noreadonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != 'cpp'
        +setlocal syntax=cpp
        +endif
        +setlocal tabstop=4
        +setlocal tags=
        +setlocal textwidth=0
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 1 - ((0 * winheight(0) + 17) / 35)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +1
        +normal! 0
        +tabnext 1
        +if exists('s:wipebuf')
        +  silent exe 'bwipe ' . s:wipebuf
        +endif
        +unlet! s:wipebuf
        +set winheight=1 winwidth=20 shortmess=filnxtToO
        +let s:sx = expand(":p:r")."x.vim"
        +if file_readable(s:sx)
        +  exe "source " . s:sx
        +endif
        +let &so = s:so_save | let &siso = s:siso_save
        +doautoall SessionLoadPost
        +unlet SessionLoad
        +" vim: set ft=vim :
        diff --git a/vimsession b/vimsession
        deleted file mode 100644
        index 894f44c..0000000
        --- a/vimsession
        +++ /dev/null
        @@ -1,290 +0,0 @@
        -let SessionLoad = 1
        -if &cp | set nocp | endif
        -map + :next 
        -map ,e :e =expand("%:p:h") . "/" 
        -map ,conf :source ~/.vimrc 
        -map ,v :sp ~/.vimrc 
        -map ,u :set ff=unix 
        -map ,t :w! 
         :make test
        -map ,r :w! 
         :make run 
        -map ,m :w! 
         :make 
        -map ,d :set ff=dos 
        -map - :previous 
        -let s:cpo_save=&cpo
        -set cpo&vim
        -nmap gx NetrwBrowseX
        -map t :TlistToggle
        -nnoremap  NetrwBrowseX :call netrw#NetBrowseX(expand(""),0)
        -iabbr sout System.out.println
        -iabbr ite \item
        -iabbr tabul \begin{tabular}{}
        
        \end{tabular}
        2ki	
        -iabbr bitem \begin{itemize}
        
        \end{itemize}
        2ki	\item
        -iabbr benum \begin{enumerate}
        
        \end{enumerate}
        2ki	\item
        -iabbr nsssec \subsubsection{}ba
        -iabbr nssec \subsection{}ba
        -iabbr nsec \section{}ba
        -let &cpo=s:cpo_save
        -unlet s:cpo_save
        -set autoindent
        -set background=dark
        -set backup
        -set backupdir=~/.vim/backups
        -set cindent
        -set ignorecase
        -set incsearch
        -set ruler
        -set shiftwidth=3
        -set showcmd
        -set showmatch
        -set smartcase
        -set tabstop=4
        -set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        -set title
        -set visualbell
        -let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
        -let v:this_session=expand(":p")
        -silent only
        -cd ~/svn/fype/trunk
        -if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
        -  let s:wipebuf = bufnr('%')
        -endif
        -set shortmess=aoO
        -badd +1 src/core/interpret.h
        -args src/core/interpret.h
        -edit src/core/interpret.h
        -set splitbelow splitright
        -wincmd _ | wincmd |
        -split
        -1wincmd k
        -wincmd w
        -set nosplitbelow
        -set nosplitright
        -wincmd t
        -set winheight=1 winwidth=1
        -exe '1resize ' . ((&lines * 20 + 18) / 36)
        -exe '2resize ' . ((&lines * 13 + 18) / 36)
        -argglobal
        -edit /usr/local/share/vim/vim71/doc/starting.txt
        -setlocal keymap=
        -setlocal noarabic
        -setlocal autoindent
        -setlocal balloonexpr=
        -setlocal nobinary
        -setlocal bufhidden=
        -setlocal nobuflisted
        -setlocal buftype=help
        -setlocal cindent
        -setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        -setlocal cinoptions=
        -setlocal cinwords=if,else,while,do,for,switch
        -setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        -setlocal commentstring=/*%s*/
        -setlocal complete=.,w,b,u,t,i
        -setlocal completefunc=
        -setlocal nocopyindent
        -setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        -setlocal define=
        -setlocal dictionary=
        -setlocal nodiff
        -setlocal equalprg=
        -setlocal errorformat=
        -setlocal noexpandtab
        -if &filetype != 'help'
        -setlocal filetype=help
        -endif
        -setlocal foldcolumn=0
        -setlocal nofoldenable
        -setlocal foldexpr=0
        -setlocal foldignore=#
        -setlocal foldlevel=0
        -setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        -setlocal foldminlines=1
        -setlocal foldnestmax=20
        -setlocal foldtext=foldtext()
        -setlocal formatexpr=
        -setlocal formatoptions=tcq
        -setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        -setlocal grepprg=
        -setlocal iminsert=2
        -setlocal imsearch=2
        -setlocal include=
        -setlocal includeexpr=
        -setlocal indentexpr=
        -setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        -setlocal noinfercase
        -setlocal iskeyword=!-~,^*,^|,^\",192-255
        -setlocal keywordprg=
        -setlocal nolinebreak
        -setlocal nolisp
        -setlocal nolist
        -setlocal makeprg=
        -setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        -setlocal nomodifiable
        -setlocal nrformats=octal,hex
        -setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        -setlocal omnifunc=
        -setlocal path=
        -setlocal nopreserveindent
        -setlocal nopreviewwindow
        -setlocal quoteescape=\\
        -setlocal readonly
        -setlocal norightleft
        -setlocal rightleftcmd=search
        -setlocal noscrollbind
        -setlocal shiftwidth=3
        -setlocal noshortname
        -setlocal nosmartindent
        -setlocal softtabstop=0
        -setlocal nospell
        -setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        -setlocal spellfile=
        -setlocal spelllang=en
        -setlocal statusline=
        -setlocal suffixesadd=
        -setlocal swapfile
        -setlocal synmaxcol=3000
        -if &syntax != 'help'
        -setlocal syntax=help
        -endif
        -setlocal tabstop=8
        -setlocal tags=
        -setlocal textwidth=78
        -setlocal thesaurus=
        -setlocal nowinfixheight
        -setlocal nowinfixwidth
        -setlocal wrap
        -setlocal wrapmargin=0
        -let s:l = 1197 - ((19 * winheight(0) + 10) / 20)
        -if s:l < 1 | let s:l = 1 | endif
        -exe s:l
        -normal! zt
        -1197
        -normal! 039l
        -wincmd w
        -argglobal
        -setlocal keymap=
        -setlocal noarabic
        -setlocal autoindent
        -setlocal balloonexpr=
        -setlocal nobinary
        -setlocal bufhidden=
        -setlocal buflisted
        -setlocal buftype=
        -setlocal cindent
        -setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        -setlocal cinoptions=
        -setlocal cinwords=if,else,while,do,for,switch
        -setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        -setlocal commentstring=/*%s*/
        -setlocal complete=.,w,b,u,t,i
        -setlocal completefunc=
        -setlocal nocopyindent
        -setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        -setlocal define=
        -setlocal dictionary=
        -setlocal nodiff
        -setlocal equalprg=
        -setlocal errorformat=
        -setlocal noexpandtab
        -if &filetype != 'cpp'
        -setlocal filetype=cpp
        -endif
        -setlocal foldcolumn=0
        -setlocal foldenable
        -setlocal foldexpr=0
        -setlocal foldignore=#
        -setlocal foldlevel=0
        -setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        -setlocal foldminlines=1
        -setlocal foldnestmax=20
        -setlocal foldtext=foldtext()
        -setlocal formatexpr=
        -setlocal formatoptions=tcq
        -setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        -setlocal grepprg=
        -setlocal iminsert=2
        -setlocal imsearch=2
        -setlocal include=
        -setlocal includeexpr=
        -setlocal indentexpr=
        -setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        -setlocal noinfercase
        -setlocal iskeyword=@,48-57,_,192-255
        -setlocal keywordprg=
        -setlocal nolinebreak
        -setlocal nolisp
        -setlocal nolist
        -setlocal makeprg=
        -setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        -setlocal modifiable
        -setlocal nrformats=octal,hex
        -setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        -setlocal omnifunc=
        -setlocal path=
        -setlocal nopreserveindent
        -setlocal nopreviewwindow
        -setlocal quoteescape=\\
        -setlocal noreadonly
        -setlocal norightleft
        -setlocal rightleftcmd=search
        -setlocal noscrollbind
        -setlocal shiftwidth=3
        -setlocal noshortname
        -setlocal nosmartindent
        -setlocal softtabstop=0
        -setlocal nospell
        -setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        -setlocal spellfile=
        -setlocal spelllang=en
        -setlocal statusline=
        -setlocal suffixesadd=
        -setlocal swapfile
        -setlocal synmaxcol=3000
        -if &syntax != 'cpp'
        -setlocal syntax=cpp
        -endif
        -setlocal tabstop=4
        -setlocal tags=
        -setlocal textwidth=0
        -setlocal thesaurus=
        -setlocal nowinfixheight
        -setlocal nowinfixwidth
        -setlocal wrap
        -setlocal wrapmargin=0
        -let s:l = 1 - ((0 * winheight(0) + 6) / 13)
        -if s:l < 1 | let s:l = 1 | endif
        -exe s:l
        -normal! zt
        -1
        -normal! 0
        -wincmd w
        -exe '1resize ' . ((&lines * 20 + 18) / 36)
        -exe '2resize ' . ((&lines * 13 + 18) / 36)
        -tabnext 1
        -if exists('s:wipebuf')
        -  silent exe 'bwipe ' . s:wipebuf
        -endif
        -unlet! s:wipebuf
        -set winheight=1 winwidth=20 shortmess=filnxtToO
        -let s:sx = expand(":p:r")."x.vim"
        -if file_readable(s:sx)
        -  exe "source " . s:sx
        -endif
        -let &so = s:so_save | let &siso = s:siso_save
        -doautoall SessionLoadPost
        -unlet SessionLoad
        -" vim: set ft=vim :
        -- 
        cgit v1.2.3
        
        
        From 48cf82bfc6cd65cc95f7658582fc532602a85ac0 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 20:42:29 +0000
        Subject: few more make fules.
        
        ---
         Makefile         |   8 +-
         Session.vim      | 357 +++++++++++++++++++++++++++++++++++++++++++++++-
         docs/help.txt    |   2 +-
         docs/version.txt |   2 +-
         fype             | Bin 457178 -> 448574 bytes
         src/build.h      |   2 +-
         src/defines.h    |   2 +-
         tmp/test.fy      |  30 +----
         tmp/test.out     | 405 +------------------------------------------------------
         9 files changed, 369 insertions(+), 439 deletions(-)
        
        diff --git a/Makefile b/Makefile
        index e9501d3..071ddac 100644
        --- a/Makefile
        +++ b/Makefile
        @@ -66,9 +66,12 @@ stats:
         		tail -n 1 | sed s/total//`"'
         stats-tofile:
         	make stats | tee ./docs/stats.txt
        -test: all
        +testrun:
         	cat ./tmp/test.fy > ./tmp/test.out
         	./$(BIN) -V ./tmp/test.fy | tee -a ./tmp/test.out
        +tr: testrun
        +test: all testrun
        +t: test
         run:
         	./$(BIN) ./tmp/test.fy
         core:
        @@ -109,4 +112,5 @@ deinstall:
         uninstall: deinstall
         pod:
         	@cd ./docs/pod; make clean all
        -
        +sess:
        +	vim -S Session.vim
        diff --git a/Session.vim b/Session.vim
        index 88a7555..1358ee6 100644
        --- a/Session.vim
        +++ b/Session.vim
        @@ -41,6 +41,7 @@ set tabstop=4
         set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
         set title
         set visualbell
        +set window=46
         let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
         let v:this_session=expand(":p")
         silent only
        @@ -49,15 +50,241 @@ if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
           let s:wipebuf = bufnr('%')
         endif
         set shortmess=aoO
        -badd +1 src/core/interpret.h
        +badd +51 src/core/interpret.h
        +badd +26 tmp/test.fy
        +badd +81 src/defines.h
        +badd +0 TODO
         args src/core/interpret.h
        -edit src/core/interpret.h
        +edit TODO
         set splitbelow splitright
        +wincmd _ | wincmd |
        +vsplit
        +1wincmd h
        +wincmd _ | wincmd |
        +split
        +1wincmd k
        +wincmd w
        +wincmd w
         set nosplitbelow
         set nosplitright
         wincmd t
         set winheight=1 winwidth=1
        +exe '1resize ' . ((&lines * 22 + 23) / 47)
        +exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        +exe '2resize ' . ((&lines * 21 + 23) / 47)
        +exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
        +exe 'vert 3resize ' . ((&columns * 71 + 71) / 143)
        +argglobal
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal buflisted
        +setlocal buftype=
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != ''
        +setlocal filetype=
        +endif
        +setlocal foldcolumn=0
        +setlocal foldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=@,48-57,_,192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal modifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal noreadonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != ''
        +setlocal syntax=
        +endif
        +setlocal tabstop=4
        +setlocal tags=
        +setlocal textwidth=0
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 2 - ((1 * winheight(0) + 11) / 22)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +2
        +normal! 0
        +wincmd w
         argglobal
        +edit tmp/test.fy
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal buflisted
        +setlocal buftype=
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != 'conf'
        +setlocal filetype=conf
        +endif
        +setlocal foldcolumn=0
        +setlocal foldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=@,48-57,_,192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal modifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal noreadonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != 'conf'
        +setlocal syntax=conf
        +endif
        +setlocal tabstop=4
        +setlocal tags=
        +setlocal textwidth=0
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 26 - ((12 * winheight(0) + 10) / 21)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +26
        +normal! 0
        +wincmd w
        +argglobal
        +edit src/core/interpret.h
         setlocal keymap=
         setlocal noarabic
         setlocal autoindent
        @@ -88,7 +315,7 @@ if &filetype != 'cpp'
         setlocal filetype=cpp
         endif
         setlocal foldcolumn=0
        -setlocal foldenable
        +setlocal nofoldenable
         setlocal foldexpr=0
         setlocal foldignore=#
         setlocal foldlevel=0
        @@ -154,12 +381,130 @@ setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 1 - ((0 * winheight(0) + 17) / 35)
        +let s:l = 69 - ((36 * winheight(0) + 22) / 44)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        -1
        -normal! 0
        +69
        +normal! 012l
        +wincmd w
        +3wincmd w
        +exe '1resize ' . ((&lines * 22 + 23) / 47)
        +exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        +exe '2resize ' . ((&lines * 21 + 23) / 47)
        +exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
        +exe 'vert 3resize ' . ((&columns * 71 + 71) / 143)
        +tabnew
        +set splitbelow splitright
        +set nosplitbelow
        +set nosplitright
        +wincmd t
        +set winheight=1 winwidth=1
        +argglobal
        +edit /usr/local/share/vim/vim71/doc/windows.txt
        +setlocal keymap=
        +setlocal noarabic
        +setlocal autoindent
        +setlocal balloonexpr=
        +setlocal nobinary
        +setlocal bufhidden=
        +setlocal nobuflisted
        +setlocal buftype=help
        +setlocal cindent
        +setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        +setlocal cinoptions=
        +setlocal cinwords=if,else,while,do,for,switch
        +setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        +setlocal commentstring=/*%s*/
        +setlocal complete=.,w,b,u,t,i
        +setlocal completefunc=
        +setlocal nocopyindent
        +setlocal nocursorcolumn
        +set cursorline
        +setlocal cursorline
        +setlocal define=
        +setlocal dictionary=
        +setlocal nodiff
        +setlocal equalprg=
        +setlocal errorformat=
        +setlocal noexpandtab
        +if &filetype != 'help'
        +setlocal filetype=help
        +endif
        +setlocal foldcolumn=0
        +setlocal nofoldenable
        +setlocal foldexpr=0
        +setlocal foldignore=#
        +setlocal foldlevel=0
        +setlocal foldmarker={{{,}}}
        +set foldmethod=indent
        +setlocal foldmethod=indent
        +setlocal foldminlines=1
        +setlocal foldnestmax=20
        +setlocal foldtext=foldtext()
        +setlocal formatexpr=
        +setlocal formatoptions=tcq
        +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        +setlocal grepprg=
        +setlocal iminsert=2
        +setlocal imsearch=2
        +setlocal include=
        +setlocal includeexpr=
        +setlocal indentexpr=
        +setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        +setlocal noinfercase
        +setlocal iskeyword=!-~,^*,^|,^\",192-255
        +setlocal keywordprg=
        +setlocal nolinebreak
        +setlocal nolisp
        +setlocal nolist
        +setlocal makeprg=
        +setlocal matchpairs=(:),{:},[:]
        +setlocal modeline
        +setlocal nomodifiable
        +setlocal nrformats=octal,hex
        +setlocal nonumber
        +set numberwidth=1
        +setlocal numberwidth=1
        +setlocal omnifunc=
        +setlocal path=
        +setlocal nopreserveindent
        +setlocal nopreviewwindow
        +setlocal quoteescape=\\
        +setlocal readonly
        +setlocal norightleft
        +setlocal rightleftcmd=search
        +setlocal noscrollbind
        +setlocal shiftwidth=3
        +setlocal noshortname
        +setlocal nosmartindent
        +setlocal softtabstop=0
        +setlocal nospell
        +setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        +setlocal spellfile=
        +setlocal spelllang=en
        +setlocal statusline=
        +setlocal suffixesadd=
        +setlocal swapfile
        +setlocal synmaxcol=3000
        +if &syntax != 'help'
        +setlocal syntax=help
        +endif
        +setlocal tabstop=8
        +setlocal tags=
        +setlocal textwidth=78
        +setlocal thesaurus=
        +setlocal nowinfixheight
        +setlocal nowinfixwidth
        +setlocal wrap
        +setlocal wrapmargin=0
        +let s:l = 38 - ((6 * winheight(0) + 22) / 45)
        +if s:l < 1 | let s:l = 1 | endif
        +exe s:l
        +normal! zt
        +38
        +normal! 064l
        +3wincmd w
         tabnext 1
         if exists('s:wipebuf')
           silent exe 'bwipe ' . s:wipebuf
        diff --git a/docs/help.txt b/docs/help.txt
        index 3d0edfd..687d983 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9320
        +Fype v0.1-devel Build 9323
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/version.txt b/docs/version.txt
        index fe60012..e24a456 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9320
        +Fype v0.1-devel Build 9323
        diff --git a/fype b/fype
        index bb28a31..0ac468b 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 225bf2a..e185370 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9321
        +#define BUILDNR 9325
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/defines.h b/src/defines.h
        index 6c2fb59..603ad31 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -78,7 +78,7 @@
         //#define DEBUG_GC
         //#define DEBUG_TOKEN_REFCOUNT
         //#define DEBUG_FUNCTION_PROCESS
        -#define DEBUG_TRACK
        +//#define DEBUG_TRACK
         //#define DEBUG_BLOCK_GET
         //#define DEBUG_EXPRESSION_GET
         
        diff --git a/tmp/test.fy b/tmp/test.fy
        index 3ffb105..609f0c2 100644
        --- a/tmp/test.fy
        +++ b/tmp/test.fy
        @@ -1,32 +1,8 @@
         #*
        - * Examples of how to use synonyms
        + * Examples of how to use references
          *#
         
        -# Create a variable foo, and bar is a synonym for foo
        +# Create a variable foo, and bar is a reference to foo
         my foo = "foo";
        -my bar = \foo;
        -
        -# Reset the value of foo
        -foo = "bar";
        -
        -# The synonym variable should now also set to "bar"
        -assert "bar" == say bar;
        -
        -# Create a new procedure baz
        -proc baz { 
        -	say "I am baz";
        -}
        -
        -# Make a synonym baz, and undefine baz
        -my bay = \baz;
        -undef baz;
        -
        -# bay still has a reference of the original procedure baz
        -bay; # this prints aut "I am baz" 
        -
        -assert 0 == defined baz;
        -assert 1 == defined bay;
        -
        -# This removes the procedure from memory
        -undef bay; 
        +my bar = &foo;
         
        diff --git a/tmp/test.out b/tmp/test.out
        index c4bed13..eae02b0 100644
        --- a/tmp/test.out
        +++ b/tmp/test.out
        @@ -1,34 +1,10 @@
         #*
        - * Examples of how to use synonyms
        + * Examples of how to use references
          *#
         
        -# Create a variable foo, and bar is a synonym for foo
        +# Create a variable foo, and bar is a reference to foo
         my foo = "foo";
        -my bar = \foo;
        -
        -# Reset the value of foo
        -foo = "bar";
        -
        -# The synonym variable should now also set to "bar"
        -assert "bar" == say bar;
        -
        -# Create a new procedure baz
        -proc baz { 
        -	say "I am baz";
        -}
        -
        -# Make a synonym baz, and undefine baz
        -my bay = \baz;
        -undef baz;
        -
        -# bay still has a reference of the original procedure baz
        -bay; # this prints aut "I am baz" 
        -
        -assert 0 == defined baz;
        -assert 1 == defined bay;
        -
        -# This removes the procedure from memory
        -undef bay; 
        +my bar = &foo;
         
         Token (id=00000, line=00006, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
         Token (id=00001, line=00006, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        @@ -38,378 +14,7 @@ Token (id=00004, line=00006, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.
         Token (id=00005, line=00007, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
         Token (id=00006, line=00007, pos=0007, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
         Token (id=00007, line=00007, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00008, line=00007, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=1)
        +Token (id=00008, line=00007, pos=0011, type=TT_AAND, val=&, ival=0, dval=0.000000, refs=1)
         Token (id=00009, line=00007, pos=0014, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
         Token (id=00010, line=00007, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00011, line=00010, pos=0004, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00012, line=00010, pos=0006, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00013, line=00010, pos=0007, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=1)
        -Token (id=00014, line=00010, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00015, line=00013, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1)
        -Token (id=00016, line=00013, pos=0008, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=1)
        -Token (id=00017, line=00013, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00018, line=00013, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00019, line=00013, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        -Token (id=00020, line=00013, pos=0020, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        -Token (id=00021, line=00013, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00022, line=00016, pos=0005, type=TT_PROC, val=proc, ival=0, dval=0.000000, refs=1)
        -Token (id=00023, line=00016, pos=0009, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1)
        -Token (id=00024, line=00016, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1)
        -Token (id=00025, line=00017, pos=0005, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        -Token (id=00026, line=00017, pos=0006, type=TT_STRING, val=I am baz, ival=0, dval=0.000000, refs=1)
        -Token (id=00027, line=00017, pos=0008, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00028, line=00018, pos=0002, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=1)
        -Token (id=00029, line=00021, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        -Token (id=00030, line=00021, pos=0007, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1)
        -Token (id=00031, line=00021, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00032, line=00021, pos=0011, type=TT_VID, val=\, ival=0, dval=0.000000, refs=1)
        -Token (id=00033, line=00021, pos=0014, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1)
        -Token (id=00034, line=00021, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00035, line=00022, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=1)
        -Token (id=00036, line=00022, pos=0010, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1)
        -Token (id=00037, line=00022, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00038, line=00025, pos=0004, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1)
        -Token (id=00039, line=00025, pos=0005, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00040, line=00027, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1)
        -Token (id=00041, line=00027, pos=0009, type=TT_INTEGER, val=0, ival=0, dval=0.000000, refs=1)
        -Token (id=00042, line=00027, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00043, line=00027, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00044, line=00027, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=1)
        -Token (id=00045, line=00027, pos=0024, type=TT_IDENT, val=baz, ival=0, dval=0.000000, refs=1)
        -Token (id=00046, line=00027, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00047, line=00028, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1)
        -Token (id=00048, line=00028, pos=0009, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1)
        -Token (id=00049, line=00028, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00050, line=00028, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00051, line=00028, pos=0020, type=TT_DEFINED, val=defined, ival=0, dval=0.000000, refs=1)
        -Token (id=00052, line=00028, pos=0024, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1)
        -Token (id=00053, line=00028, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00054, line=00031, pos=0006, type=TT_UNDEF, val=undef, ival=0, dval=0.000000, refs=1)
        -Token (id=00055, line=00031, pos=0010, type=TT_IDENT, val=bay, ival=0, dval=0.000000, refs=1)
        -Token (id=00056, line=00031, pos=0011, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -DEBUG(Track: ./src/core/interpret.c:_program:165)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: foo)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: bar)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: bar)
        -bar
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: proc)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: proc)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: my)
        -DEBUG(Track: ./src/core/interpret.c:_var_assign:210)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_var_list:270)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: bay)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: ;)
        -DEBUG(Track: ./src/core/interpret.c:_program:165)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: I am baz)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: I am baz)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: I am baz)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: I am baz)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: I am baz)
        -I am baz
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: 0)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: 0)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: 0)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: 0)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: 0)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: assert)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: 1)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: 1)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: 1)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: 1)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: 1)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: defined)
        -DEBUG(Track: ./src/core/interpret.c:_statement:430)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:362)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:396)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:175)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_control:489)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_expression:465)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_compare:624)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_sum:675)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_product:726)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_product2:764)
        -DEBUG(Token: undef)
        -DEBUG(Track: ./src/core/interpret.c:_term:798)
        -DEBUG(Token: undef)
        +nyi: Interpret error in ./tmp/test.fy line 7 pos 14 near 'foo' (Fype @ ./src/core/interpret.c line 960)
        -- 
        cgit v1.2.3
        
        
        From ff0828f06a1f317681c45402feda48bde592a076 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 21:20:56 +0000
        Subject: array_new_size array_new_copy
        
        implemented
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 448574 -> 449199 bytes
         src/build.h          |   2 +-
         src/core/convert.c   |   5 +++++
         src/core/interpret.c |  11 ++++++++---
         src/core/symbol.c    |   8 +++++---
         src/core/symbol.h    |   2 +-
         src/core/token.c     |   7 ++++++-
         src/data/array.c     |  23 +++++++++++++++++++++++
         src/data/array.h     |   2 ++
         tags                 |   3 +++
         tmp/test.fy          |   8 +++-----
         tmp/test.out         |  28 +++++++++++-----------------
         15 files changed, 71 insertions(+), 34 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 687d983..54bb8cb 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9323
        +Fype v0.1-devel Build 9328
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index e0195c6..ba901aa 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7832 
        +===> Num of C source lines		:     7874 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index e24a456..8457f26 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9323
        +Fype v0.1-devel Build 9328
        diff --git a/fype b/fype
        index 0ac468b..0039bf7 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index e185370..9b4930d 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9325
        +#define BUILDNR 9335
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index a5f910d..aac54d1 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -33,6 +33,7 @@
          *:*/
         
         #include "convert.h"
        +#include "../data/array.h"
         
         void
         convert_to_integer(Token *p_token) {
        @@ -47,6 +48,10 @@ convert_to_integer(Token *p_token) {
               token_set_tt(p_token, TT_INTEGER);
               token_set_ival(p_token, atoi(token_get_val(p_token)));
               break;
        +   case TT_ARRAY:
        +      token_set_tt(p_token, TT_INTEGER);
        +      token_set_ival(p_token, array_get_size(p_token->p_array));
        +      break;
            default:
               ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token)));
               break;
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index d2956e2..aced534 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -948,7 +948,8 @@ _term(Interpret *p_interpret) {
            }
            break;
         
        -   /* Reference operator */
        +   /*
        +   // Reference operator
            case TT_AAND:
            {
               _NEXT
        @@ -956,7 +957,9 @@ _term(Interpret *p_interpret) {
                  _INTERPRET_ERROR("Expexted identifier for '&'",
                                   p_interpret->p_token);
         
        -	  
        +      char *c_name = token_get_val(p_interpret->p_token);
        +      Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name);
        +
         	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
         
               _NEXT;
        @@ -964,7 +967,7 @@ _term(Interpret *p_interpret) {
            }
            break;
         
        -   /* Dereference opeator */
        +   // Dereference opeator
            case TT_MULT:
            {
               _NEXT
        @@ -972,11 +975,13 @@ _term(Interpret *p_interpret) {
                  _INTERPRET_ERROR("Expexted identifier for '*'",
                                   p_interpret->p_token);
         
        +
         	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
               _NEXT;
               return (1);
            }
            break;
        +   */
         
            /*
            case TT_PARANT_AL:
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index b9a8b24..19801a7 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -57,6 +57,8 @@ symbol_delete(Symbol *p_symbol) {
                  List *p_list_token = symbol_get_val(p_symbol);
                  list_delete(p_list_token);
               }
        +	  case SYM_ARRAY:
        +	  symbol_delete(symbol_get_val(p_symbol));
               break;
               NO_DEFAULT;
               }
        @@ -81,7 +83,7 @@ symbol_print(Symbol *p_symbol, char *c_key) {
            case SYM_FUNCTION:
               //list_iterate(symbol_get_val(p_symbol), token_print_cb);
               break;
        -   case SYM_REFERENCE:
        +   case SYM_ARRAY:
               break;
            case SYM_VARIABLE:
               printf(" ");
        @@ -102,8 +104,8 @@ sym_get_name(SymbolType sym) {
            switch (sym) {
            case SYM_CONSTANT:
               return ("SYM_CONSTANT");
        -   case SYM_REFERENCE:
        -      return ("SYM_REFERENCE");
        +   case SYM_ARRAY:
        +      return ("SYM_ARRAY");
            case SYM_VARIABLE:
               return ("SYM_VARIABLE");
            case SYM_BUILDIN:
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index 4c498f2..49a8d99 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -50,7 +50,7 @@ typedef enum {
            SYM_CONSTANT,
            SYM_FUNCTION,
            SYM_PROCEDURE,
        -   SYM_REFERENCE,
        +   SYM_ARRAY,
            SYM_VARIABLE,
         } SymbolType;
         
        diff --git a/src/core/token.c b/src/core/token.c
        index 9d56736..ee2a0b8 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -317,6 +317,9 @@ void token_copy_vals(Token *p_token_to, Token *p_token_from) {
            p_token_to->i_line_nr = p_token_from->i_line_nr;
            p_token_to->i_pos_nr = p_token_from->i_pos_nr;
            p_token_to->c_filename = p_token_from->c_filename;
        +
        +   if (NULL != p_token_from->p_array)
        +   		p_token_to->p_array = array_new_copy(p_token_from);
         }
         
         void
        @@ -346,8 +349,10 @@ token_delete(Token *p_token) {
                  if (p_token->c_val)
                     free(p_token->c_val);
         
        -         if (p_token->p_array)
        +         if (NULL != p_token->p_array) {
        +			array_iterate(p_token->p_array, token_delete_cb);
                     array_delete(p_token->p_array);
        +		 }
         
                  free(p_token);
               }
        diff --git a/src/data/array.c b/src/data/array.c
        index 09022ff..6a2b1fa 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -44,6 +44,29 @@ array_new() {
            return (p_array);
         }
         
        +Array*
        +array_new_size(int i_size) {
        +   Array *p_array = malloc(sizeof(Array));
        +
        +   p_array->i_size = 0;
        +   p_array->pp_ae = NULL;
        +   array_resize(p_array, i_size);
        +
        +   return (p_array);
        +}
        +
        +void
        +_array_new_copy_cb(void *p_array, void *p_void) {
        +   array_unshift(p_array, p_void);
        +}
        +
        +Array*
        +array_new_copy(Array *p_array) {
        +   Array *p_array_cpy = array_new_size(array_get_size(p_array));
        +   array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);   
        +
        +   return (p_array_cpy);
        +}
         
         void
         array_delete(Array *p_array) {
        diff --git a/src/data/array.h b/src/data/array.h
        index f89c0ff..75f6365 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -61,6 +61,8 @@ typedef struct {
         } ArrayIterator;
         
         Array *array_new();
        +Array *array_new_size(int i_size);
        +Array *array_new_copy(Array *p_array);
         void array_delete(Array *p_array);
         void array_set(Array *p_array, int i_index, void *p_val);
         void array_insert(Array *p_array, int i_index, void *p_val);
        diff --git a/tags b/tags
        index ff2fa1b..86ed559 100644
        --- a/tags
        +++ b/tags
        @@ -6,6 +6,7 @@ _GARBAGE_ERROR	./src/core/garbage.c	/^#define _GARBAGE_ERROR(m) \\$/
         _Garbage	./src/core/garbage.c	/^} _Garbage;$/
         _INTERPRET_ERROR	./src/core/interpret.c	/^#define _INTERPRET_ERROR(m,t) \\$/
         _add_semicolon_to_list	./src/core/scanner.c	/^_add_semicolon_to_list(Scanner *p_scanner) {$/
        +_array_new_copy_cb	./src/data/array.c	/^_array_new_copy_cb(void *p_array, void *p_void) {$/
         _block	./src/core/interpret.c	/^_block(Interpret *p_interpret) {$/
         _block_get	./src/core/interpret.c	/^_block_get(Interpret *p_interpret, List *p_list_bl/
         _block_skip	./src/core/interpret.c	/^_block_skip(Interpret *p_interpret) {$/
        @@ -54,6 +55,8 @@ array_insert	./src/data/array.c	/^array_insert(Array *p_array, int i_index, void
         array_iterate	./src/data/array.c	/^array_iterate(Array *p_array, void (*func)(void *)/
         array_iterate2	./src/data/array.c	/^array_iterate2(Array *p_array, void (*func)(void */
         array_new	./src/data/array.c	/^array_new() {$/
        +array_new_copy	./src/data/array.c	/^array_new_copy(Array *p_array) {$/
        +array_new_size	./src/data/array.c	/^array_new_size(int i_size) {$/
         array_print_int	./src/data/array.c	/^array_print_int(Array *p_array) {$/
         array_push	./src/data/array.c	/^array_push(Array *p_array, void *p_void) {$/
         array_remove	./src/data/array.c	/^array_remove(Array *p_array, int i_index) {$/
        diff --git a/tmp/test.fy b/tmp/test.fy
        index 609f0c2..8fe78a1 100644
        --- a/tmp/test.fy
        +++ b/tmp/test.fy
        @@ -1,8 +1,6 @@
         #*
        - * Examples of how to use references
        + * Examples of how to use arrays
          *#
         
        -# Create a variable foo, and bar is a reference to foo
        -my foo = "foo";
        -my bar = &foo;
        -
        +my foo = 1, bar = 2;
        +my arr = [foo bar];
        diff --git a/tmp/test.out b/tmp/test.out
        index eae02b0..79fda72 100644
        --- a/tmp/test.out
        +++ b/tmp/test.out
        @@ -1,20 +1,14 @@
         #*
        - * Examples of how to use references
        + * Examples of how to use arrays
          *#
         
        -# Create a variable foo, and bar is a reference to foo
        -my foo = "foo";
        -my bar = &foo;
        -
        -Token (id=00000, line=00006, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        -Token (id=00001, line=00006, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00002, line=00006, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00003, line=00006, pos=0010, type=TT_STRING, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00004, line=00006, pos=0012, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00005, line=00007, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        -Token (id=00006, line=00007, pos=0007, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        -Token (id=00007, line=00007, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00008, line=00007, pos=0011, type=TT_AAND, val=&, ival=0, dval=0.000000, refs=1)
        -Token (id=00009, line=00007, pos=0014, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00010, line=00007, pos=0015, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -nyi: Interpret error in ./tmp/test.fy line 7 pos 14 near 'foo' (Fype @ ./src/core/interpret.c line 960)
        +my foo = 1, bar = 2;
        +Token (id=00000, line=00005, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        +Token (id=00001, line=00005, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00002, line=00005, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00003, line=00005, pos=0011, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1)
        +Token (id=00004, line=00005, pos=0012, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00005, line=00005, pos=0016, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        +Token (id=00006, line=00005, pos=0018, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00007, line=00005, pos=0020, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1)
        +Token (id=00008, line=00005, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -- 
        cgit v1.2.3
        
        
        From 37c687c229f89202e5625bc3d3f9b1c85cb94b51 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 21:29:33 +0000
        Subject: array_delete_iterate implemented..
        
        ---
         Session.vim      | 193 +++++++++++++------------------------------------------
         docs/help.txt    |   2 +-
         docs/stats.txt   |   2 +-
         docs/version.txt |   2 +-
         fype             | Bin 449199 -> 449532 bytes
         src/build.h      |   2 +-
         src/core/token.c |   9 ++-
         src/data/array.c |  17 +++++
         src/data/array.h |   1 +
         tags             |   1 +
         10 files changed, 70 insertions(+), 159 deletions(-)
        
        diff --git a/Session.vim b/Session.vim
        index 1358ee6..0800758 100644
        --- a/Session.vim
        +++ b/Session.vim
        @@ -39,9 +39,9 @@ set showmatch
         set smartcase
         set tabstop=4
         set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        +set textwidth=80
         set title
         set visualbell
        -set window=46
         let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
         let v:this_session=expand(":p")
         silent only
        @@ -50,136 +50,35 @@ if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
           let s:wipebuf = bufnr('%')
         endif
         set shortmess=aoO
        -badd +51 src/core/interpret.h
        -badd +26 tmp/test.fy
        +badd +72 src/core/interpret.h
        +badd +7 tmp/test.fy
         badd +81 src/defines.h
        -badd +0 TODO
        +badd +4 TODO
        +badd +1005 ./src/core/interpret.c
        +badd +73 Makefile
        +badd +67 src/core/symbol.h
        +badd +115 ./src/core/symbol.c
        +badd +25 src/core/function.c
        +badd +173 src/core/token.h
        +badd +322 ./src/core/token.c
        +badd +50 src/core/convert.c
        +badd +65 ./src/data/array.c
        +badd +1 src/core/array.h
        +badd +63 src/data/array.h
         args src/core/interpret.h
        -edit TODO
        +edit tmp/test.fy
         set splitbelow splitright
         wincmd _ | wincmd |
         vsplit
         1wincmd h
        -wincmd _ | wincmd |
        -split
        -1wincmd k
        -wincmd w
         wincmd w
         set nosplitbelow
         set nosplitright
         wincmd t
         set winheight=1 winwidth=1
        -exe '1resize ' . ((&lines * 22 + 23) / 47)
         exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        -exe '2resize ' . ((&lines * 21 + 23) / 47)
         exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
        -exe 'vert 3resize ' . ((&columns * 71 + 71) / 143)
        -argglobal
        -setlocal keymap=
        -setlocal noarabic
        -setlocal autoindent
        -setlocal balloonexpr=
        -setlocal nobinary
        -setlocal bufhidden=
        -setlocal buflisted
        -setlocal buftype=
        -setlocal cindent
        -setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        -setlocal cinoptions=
        -setlocal cinwords=if,else,while,do,for,switch
        -setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        -setlocal commentstring=/*%s*/
        -setlocal complete=.,w,b,u,t,i
        -setlocal completefunc=
        -setlocal nocopyindent
        -setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        -setlocal define=
        -setlocal dictionary=
        -setlocal nodiff
        -setlocal equalprg=
        -setlocal errorformat=
        -setlocal noexpandtab
        -if &filetype != ''
        -setlocal filetype=
        -endif
        -setlocal foldcolumn=0
        -setlocal foldenable
        -setlocal foldexpr=0
        -setlocal foldignore=#
        -setlocal foldlevel=0
        -setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        -setlocal foldminlines=1
        -setlocal foldnestmax=20
        -setlocal foldtext=foldtext()
        -setlocal formatexpr=
        -setlocal formatoptions=tcq
        -setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        -setlocal grepprg=
        -setlocal iminsert=2
        -setlocal imsearch=2
        -setlocal include=
        -setlocal includeexpr=
        -setlocal indentexpr=
        -setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        -setlocal noinfercase
        -setlocal iskeyword=@,48-57,_,192-255
        -setlocal keywordprg=
        -setlocal nolinebreak
        -setlocal nolisp
        -setlocal nolist
        -setlocal makeprg=
        -setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        -setlocal modifiable
        -setlocal nrformats=octal,hex
        -setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        -setlocal omnifunc=
        -setlocal path=
        -setlocal nopreserveindent
        -setlocal nopreviewwindow
        -setlocal quoteescape=\\
        -setlocal noreadonly
        -setlocal norightleft
        -setlocal rightleftcmd=search
        -setlocal noscrollbind
        -setlocal shiftwidth=3
        -setlocal noshortname
        -setlocal nosmartindent
        -setlocal softtabstop=0
        -setlocal nospell
        -setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        -setlocal spellfile=
        -setlocal spelllang=en
        -setlocal statusline=
        -setlocal suffixesadd=
        -setlocal swapfile
        -setlocal synmaxcol=3000
        -if &syntax != ''
        -setlocal syntax=
        -endif
        -setlocal tabstop=4
        -setlocal tags=
        -setlocal textwidth=0
        -setlocal thesaurus=
        -setlocal nowinfixheight
        -setlocal nowinfixwidth
        -setlocal wrap
        -setlocal wrapmargin=0
        -let s:l = 2 - ((1 * winheight(0) + 11) / 22)
        -if s:l < 1 | let s:l = 1 | endif
        -exe s:l
        -normal! zt
        -2
        -normal! 0
        -wincmd w
         argglobal
        -edit tmp/test.fy
         setlocal keymap=
         setlocal noarabic
         setlocal autoindent
        @@ -276,15 +175,15 @@ setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 26 - ((12 * winheight(0) + 10) / 21)
        +let s:l = 4 - ((3 * winheight(0) + 22) / 44)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        -26
        +4
         normal! 0
         wincmd w
         argglobal
        -edit src/core/interpret.h
        +edit ./src/core/interpret.c
         setlocal keymap=
         setlocal noarabic
         setlocal autoindent
        @@ -311,8 +210,8 @@ setlocal nodiff
         setlocal equalprg=
         setlocal errorformat=
         setlocal noexpandtab
        -if &filetype != 'cpp'
        -setlocal filetype=cpp
        +if &filetype != 'c'
        +setlocal filetype=c
         endif
         setlocal foldcolumn=0
         setlocal nofoldenable
        @@ -370,46 +269,41 @@ setlocal statusline=
         setlocal suffixesadd=
         setlocal swapfile
         setlocal synmaxcol=3000
        -if &syntax != 'cpp'
        -setlocal syntax=cpp
        +if &syntax != 'c'
        +setlocal syntax=c
         endif
         setlocal tabstop=4
         setlocal tags=
        -setlocal textwidth=0
        +setlocal textwidth=80
         setlocal thesaurus=
         setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 69 - ((36 * winheight(0) + 22) / 44)
        +let s:l = 947 - ((9 * winheight(0) + 22) / 44)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        -69
        -normal! 012l
        +947
        +normal! 0
         wincmd w
        -3wincmd w
        -exe '1resize ' . ((&lines * 22 + 23) / 47)
         exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        -exe '2resize ' . ((&lines * 21 + 23) / 47)
         exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
        -exe 'vert 3resize ' . ((&columns * 71 + 71) / 143)
        -tabnew
        +tabedit ./src/data/array.c
         set splitbelow splitright
         set nosplitbelow
         set nosplitright
         wincmd t
         set winheight=1 winwidth=1
         argglobal
        -edit /usr/local/share/vim/vim71/doc/windows.txt
         setlocal keymap=
         setlocal noarabic
         setlocal autoindent
         setlocal balloonexpr=
         setlocal nobinary
         setlocal bufhidden=
        -setlocal nobuflisted
        -setlocal buftype=help
        +setlocal buflisted
        +setlocal buftype=
         setlocal cindent
         setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
         setlocal cinoptions=
        @@ -428,8 +322,8 @@ setlocal nodiff
         setlocal equalprg=
         setlocal errorformat=
         setlocal noexpandtab
        -if &filetype != 'help'
        -setlocal filetype=help
        +if &filetype != 'c'
        +setlocal filetype=c
         endif
         setlocal foldcolumn=0
         setlocal nofoldenable
        @@ -453,7 +347,7 @@ setlocal includeexpr=
         setlocal indentexpr=
         setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
         setlocal noinfercase
        -setlocal iskeyword=!-~,^*,^|,^\",192-255
        +setlocal iskeyword=@,48-57,_,192-255
         setlocal keywordprg=
         setlocal nolinebreak
         setlocal nolisp
        @@ -461,7 +355,7 @@ setlocal nolist
         setlocal makeprg=
         setlocal matchpairs=(:),{:},[:]
         setlocal modeline
        -setlocal nomodifiable
        +setlocal modifiable
         setlocal nrformats=octal,hex
         setlocal nonumber
         set numberwidth=1
        @@ -471,7 +365,7 @@ setlocal path=
         setlocal nopreserveindent
         setlocal nopreviewwindow
         setlocal quoteescape=\\
        -setlocal readonly
        +setlocal noreadonly
         setlocal norightleft
         setlocal rightleftcmd=search
         setlocal noscrollbind
        @@ -487,25 +381,24 @@ setlocal statusline=
         setlocal suffixesadd=
         setlocal swapfile
         setlocal synmaxcol=3000
        -if &syntax != 'help'
        -setlocal syntax=help
        +if &syntax != 'c'
        +setlocal syntax=c
         endif
        -setlocal tabstop=8
        +setlocal tabstop=4
         setlocal tags=
        -setlocal textwidth=78
        +setlocal textwidth=80
         setlocal thesaurus=
         setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 38 - ((6 * winheight(0) + 22) / 45)
        +let s:l = 89 - ((44 * winheight(0) + 22) / 45)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        -38
        -normal! 064l
        -3wincmd w
        -tabnext 1
        +89
        +normal! 02l
        +tabnext 2
         if exists('s:wipebuf')
           silent exe 'bwipe ' . s:wipebuf
         endif
        diff --git a/docs/help.txt b/docs/help.txt
        index 54bb8cb..21d596e 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9328
        +Fype v0.1-devel Build 9338
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index ba901aa..f6e3e1f 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7874 
        +===> Num of C source lines		:     7891 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 8457f26..520eab4 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9328
        +Fype v0.1-devel Build 9338
        diff --git a/fype b/fype
        index 0039bf7..b98fbff 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 9b4930d..204d15b 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9335
        +#define BUILDNR 9340
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/token.c b/src/core/token.c
        index ee2a0b8..16d0eab 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -319,7 +319,8 @@ void token_copy_vals(Token *p_token_to, Token *p_token_from) {
            p_token_to->c_filename = p_token_from->c_filename;
         
            if (NULL != p_token_from->p_array)
        -   		p_token_to->p_array = array_new_copy(p_token_from);
        +	    // Copy all tokens by reference (pointers)
        +   		p_token_to->p_array = array_new_copy(p_token_from->p_array);
         }
         
         void
        @@ -349,10 +350,8 @@ token_delete(Token *p_token) {
                  if (p_token->c_val)
                     free(p_token->c_val);
         
        -         if (NULL != p_token->p_array) {
        -			array_iterate(p_token->p_array, token_delete_cb);
        -            array_delete(p_token->p_array);
        -		 }
        +         if (NULL != p_token->p_array) 
        +            array_delete_iterate(p_token->p_array, token_delete_cb);
         
                  free(p_token);
               }
        diff --git a/src/data/array.c b/src/data/array.c
        index 6a2b1fa..553d6f5 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -83,6 +83,23 @@ array_delete(Array *p_array) {
            free(p_array);
         }
         
        +void
        +array_delete_iterate(Array *p_array, void (*func)(void *)) {
        +   if (!p_array)
        +      return;
        +
        +   array_iterate(p_array, func);
        +
        +   if (p_array->i_size)
        +      for (int i = p_array->i_size - 1; i >= 0; --i)
        +         arrayelement_delete(p_array->pp_ae[i]);
        +
        +   if (p_array->pp_ae)
        +      free(p_array->pp_ae);
        +
        +   free(p_array);
        +}
        +
         void
         array_set(Array *p_array, int i_index, void *p_val) {
            if (p_array->i_size > i_index) {
        diff --git a/src/data/array.h b/src/data/array.h
        index 75f6365..14e3851 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -64,6 +64,7 @@ Array *array_new();
         Array *array_new_size(int i_size);
         Array *array_new_copy(Array *p_array);
         void array_delete(Array *p_array);
        +void array_delete_iterate(Array *p_array, void (*func)(void*));
         void array_set(Array *p_array, int i_index, void *p_val);
         void array_insert(Array *p_array, int i_index, void *p_val);
         void *array_remove(Array *p_array, int i_index);
        diff --git a/tags b/tags
        index 86ed559..6915cc7 100644
        --- a/tags
        +++ b/tags
        @@ -50,6 +50,7 @@ argv_synopsis	./src/argv.c	/^argv_synopsis(Tupel *p_tupel_argv) {$/
         argv_tupel_delete	./src/argv.c	/^argv_tupel_delete(Tupel *p_tupel_argv) {$/
         array_defined	./src/data/array.c	/^array_defined(Array *p_array, int i_index) {$/
         array_delete	./src/data/array.c	/^array_delete(Array *p_array) {$/
        +array_delete_iterate	./src/data/array.c	/^array_delete_iterate(Array *p_array, void (*func)(/
         array_get	./src/data/array.c	/^array_get(Array *p_array, int i_index) {$/
         array_insert	./src/data/array.c	/^array_insert(Array *p_array, int i_index, void *p_/
         array_iterate	./src/data/array.c	/^array_iterate(Array *p_array, void (*func)(void *)/
        -- 
        cgit v1.2.3
        
        
        From 43cdc845c8c10bbf0e4c0f70b09a6f5290931832 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 22:19:07 +0000
        Subject: bugfix
        
        ---
         src/core/function.c | 9 +++++++++
         1 file changed, 9 insertions(+)
        
        diff --git a/src/core/function.c b/src/core/function.c
        index 2db865a..36f57f5 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -179,12 +179,21 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                  token_set_dval(p_token_store,
                                 token_get_dval(p_token_next) +
                                 token_get_dval(p_token_store));
        +         break;
               case TT_STRING:
                  token_set_ival(p_token_store,
                                 atoi(token_get_val(p_token_next)) +
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +		 /*
        +      case TT_ARRAY:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) +
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +		 */
                  NO_DEFAULT;
               }
               break;
        -- 
        cgit v1.2.3
        
        
        From 87de8060633801d3793246967f43c6159b0f5351 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 22:55:22 +0000
        Subject: astyle
        
        ---
         docs/stats.txt       |   2 +-
         fype                 | Bin 449532 -> 449989 bytes
         src/argv.c           |  30 +++++++++---------
         src/argv.h           |  30 +++++++++---------
         src/build.h          |  32 +++++++++----------
         src/core/convert.c   |  85 ++++++++++++++++++++++++++++++++++++++++++---------
         src/core/convert.h   |  31 ++++++++++---------
         src/core/function.c  |  46 ++++++++++++++--------------
         src/core/function.h  |  30 +++++++++---------
         src/core/garbage.c   |  30 +++++++++---------
         src/core/garbage.h   |  30 +++++++++---------
         src/core/interpret.c |  34 ++++++++++-----------
         src/core/interpret.h |  30 +++++++++---------
         src/core/reference.c |  30 +++++++++---------
         src/core/reference.h |  30 +++++++++---------
         src/core/scanner.c   |  30 +++++++++---------
         src/core/scanner.h   |  30 +++++++++---------
         src/core/scope.c     |  30 +++++++++---------
         src/core/scope.h     |  30 +++++++++---------
         src/core/symbol.c    |  38 +++++++++++------------
         src/core/symbol.h    |  30 +++++++++---------
         src/core/token.c     |  39 ++++++++++++-----------
         src/core/token.h     |  30 +++++++++---------
         src/data/array.c     |  32 +++++++++----------
         src/data/array.h     |  30 +++++++++---------
         src/data/dat.c       |  30 +++++++++---------
         src/data/dat.h       |  30 +++++++++---------
         src/data/hash.c      |  30 +++++++++---------
         src/data/hash.h      |  30 +++++++++---------
         src/data/list.c      |  30 +++++++++---------
         src/data/list.h      |  30 +++++++++---------
         src/data/map.c       |  30 +++++++++---------
         src/data/map.h       |  30 +++++++++---------
         src/data/queue.c     |  30 +++++++++---------
         src/data/queue.h     |  30 +++++++++---------
         src/data/stack.c     |  30 +++++++++---------
         src/data/stack.h     |  30 +++++++++---------
         src/data/tree.c      |  30 +++++++++---------
         src/data/tree.h      |  30 +++++++++---------
         src/data/tupel.c     |  30 +++++++++---------
         src/data/tupel.h     |  30 +++++++++---------
         src/data/types.h     |  30 +++++++++---------
         src/defines.h        |  30 +++++++++---------
         src/fype.c           |  30 +++++++++---------
         src/fype.h           |  30 +++++++++---------
         src/main.c           |  30 +++++++++---------
         tags                 |   1 +
         47 files changed, 740 insertions(+), 680 deletions(-)
        
        diff --git a/docs/stats.txt b/docs/stats.txt
        index f6e3e1f..ca8db03 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7891 
        +===> Num of C source lines		:     7950 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/fype b/fype
        index b98fbff..e107378 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/argv.c b/src/argv.c
        index dbe398e..d9b9131 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/argv.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/argv.h b/src/argv.h
        index 855d99a..0515125 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/argv.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/build.h b/src/build.h
        index 204d15b..4249787 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/build.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,27 +15,27 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9340
        +#define BUILDNR 9344
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index aac54d1..d156007 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/convert.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -67,6 +67,9 @@ convert_to_integer_get(Token *p_token) {
               return ((int) token_get_dval(p_token));
            case TT_STRING:
               return (atoi(token_get_val(p_token)));
        +   case TT_ARRAY:
        +      return (array_get_size(p_token->p_array));
        +      break;
            default:
               ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token)));
            }
        @@ -87,6 +90,10 @@ convert_to_double(Token *p_token) {
               token_set_tt(p_token, TT_DOUBLE);
               token_set_dval(p_token, atof(token_get_val(p_token)));
               break;
        +   case TT_ARRAY:
        +      token_set_tt(p_token, TT_DOUBLE);
        +      token_set_dval(p_token, array_get_size(p_token->p_array));
        +      break;
            default:
               token_print_val(p_token);
               ERROR("Datatype conversion error '%s'", token_get_val(p_token));
        @@ -118,6 +125,16 @@ convert_to_string(Token *p_token) {
               strcpy(p_token->c_val, c_tmp);
               p_token->c_val[i_len] = 0;
            }
        +   case TT_ARRAY:
        +   {
        +      token_set_tt(p_token, TT_STRING);
        +      char c_tmp[1024];
        +      sprintf(c_tmp, "%d", array_get_size(p_token->p_array));
        +      int i_len = strlen(c_tmp);
        +      p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1));
        +      strcpy(p_token->c_val, c_tmp);
        +      p_token->c_val[i_len] = 0;
        +   }
            break;
            case TT_STRING:
               break;
        @@ -127,6 +144,41 @@ convert_to_string(Token *p_token) {
            }
         }
         
        +void
        +convert_to_array(Token *p_token) {
        +   ERROR("not yet implemented");
        +   switch (token_get_tt(p_token)) {
        +   case TT_INTEGER:
        +   {
        +      token_set_tt(p_token, TT_STRING);
        +      char c_tmp[1024];
        +      sprintf(c_tmp, "%d", token_get_ival(p_token));
        +      int i_len = strlen(c_tmp);
        +      p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1));
        +      strcpy(p_token->c_val, c_tmp);
        +      p_token->c_val[i_len] = 0;
        +   }
        +   break;
        +   case TT_DOUBLE:
        +   {
        +      token_set_tt(p_token, TT_STRING);
        +      char c_tmp[1024];
        +      sprintf(c_tmp, "%f", token_get_dval(p_token));
        +      int i_len = strlen(c_tmp);
        +      p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1));
        +      strcpy(p_token->c_val, c_tmp);
        +      p_token->c_val[i_len] = 0;
        +   }
        +   case TT_STRING:
        +      break;
        +   case TT_ARRAY:
        +      break;
        +   default:
        +      ERROR("Datatype conversion error");
        +      break;
        +   }
        +}
        +
         void
         convert_to_tt(Token *p_token, TokenType tt) {
            switch (tt) {
        @@ -139,6 +191,9 @@ convert_to_tt(Token *p_token, TokenType tt) {
            case TT_STRING:
               convert_to_string(p_token);
               break;
        +   case TT_ARRAY:
        +      convert_to_array(p_token);
        +      break;
            default:
               ERROR("Ouups!");
            }
        diff --git a/src/core/convert.h b/src/core/convert.h
        index eb1cce1..ab0fc20 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/convert.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -45,6 +45,7 @@ int convert_to_integer_get(Token *p_token);
         void convert_to_integer(Token *p_token);
         void convert_to_double(Token *p_token);
         void convert_to_string(Token *p_token);
        +void convert_to_array(Token *p_token);
         void convert_to_tt(Token *p_token, TokenType tt);
         TokenType convert_to_highest(Token *p_token1, Token *p_token2);
         TokenType convert_function_arg_types_to_highest(Stack *p_stack_args, int
        diff --git a/src/core/function.c b/src/core/function.c
        index 36f57f5..fbdf53d 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/function.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -186,14 +186,14 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        -		 /*
        -      case TT_ARRAY:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) +
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -		 */
        +         /*
        +         case TT_ARRAY:
        +           token_set_ival(p_token_store,
        +                          atoi(token_get_val(p_token_next)) +
        +                          atoi(token_get_val(p_token_store)));
        +           token_set_tt(p_token_store, TT_INTEGER);
        +           break;
        +         */
                  NO_DEFAULT;
               }
               break;
        diff --git a/src/core/function.h b/src/core/function.h
        index f71a191..2e3e72e 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/function.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index 29ce0d8..1d6cf2c 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/garbage.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index 17c1d35..c366ac2 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/garbage.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index aced534..098111b 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -960,7 +960,7 @@ _term(Interpret *p_interpret) {
               char *c_name = token_get_val(p_interpret->p_token);
               Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name);
         
        -	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +     _INTERPRET_ERROR("nyi", p_interpret->p_token);
         
               _NEXT;
               return (1);
        @@ -976,7 +976,7 @@ _term(Interpret *p_interpret) {
                                   p_interpret->p_token);
         
         
        -	  _INTERPRET_ERROR("nyi", p_interpret->p_token);
        +     _INTERPRET_ERROR("nyi", p_interpret->p_token);
               _NEXT;
               return (1);
            }
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index 083a2ba..10ebb1c 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/interpret.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.c b/src/core/reference.c
        index eccf4e9..8fb1082 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/reference.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.h b/src/core/reference.h
        index 8944689..2afbaec 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/reference.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index 2bc0877..3e093ec 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scanner.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index 1a6c700..7ec2b1f 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scanner.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.c b/src/core/scope.c
        index bcea5d9..db2ade3 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scope.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.h b/src/core/scope.h
        index e983beb..6a03a19 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/scope.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index 19801a7..f949a11 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/symbol.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -57,10 +57,10 @@ symbol_delete(Symbol *p_symbol) {
                  List *p_list_token = symbol_get_val(p_symbol);
                  list_delete(p_list_token);
               }
        -	  case SYM_ARRAY:
        -	  symbol_delete(symbol_get_val(p_symbol));
        -      break;
        -      NO_DEFAULT;
        +      case SYM_ARRAY:
        +         symbol_delete(symbol_get_val(p_symbol));
        +         break;
        +         NO_DEFAULT;
               }
               free(p_symbol);
            }
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index 49a8d99..05cfafb 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/symbol.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.c b/src/core/token.c
        index 16d0eab..6a9d966 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/token.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -319,8 +319,8 @@ void token_copy_vals(Token *p_token_to, Token *p_token_from) {
            p_token_to->c_filename = p_token_from->c_filename;
         
            if (NULL != p_token_from->p_array)
        -	    // Copy all tokens by reference (pointers)
        -   		p_token_to->p_array = array_new_copy(p_token_from->p_array);
        +      // Copy all tokens by reference (pointers)
        +      p_token_to->p_array = array_new_copy(p_token_from->p_array);
         }
         
         void
        @@ -350,7 +350,7 @@ token_delete(Token *p_token) {
                  if (p_token->c_val)
                     free(p_token->c_val);
         
        -         if (NULL != p_token->p_array) 
        +         if (NULL != p_token->p_array)
                     array_delete_iterate(p_token->p_array, token_delete_cb);
         
                  free(p_token);
        @@ -397,6 +397,9 @@ token_print_val(Token *p_token) {
            case TT_STRING:
               printf("(%s, %s)", tt_get_name(tt), token_get_val(p_token));
               break;
        +   case TT_ARRAY:
        +      printf("(%s, size:%d)", tt_get_name(tt), array_get_size(p_token->p_array));
        +      break;
            default:
               ERROR("Ouups(%s)!", tt_get_name(tt));
            }
        diff --git a/src/core/token.h b/src/core/token.h
        index 8f09cc2..2758d75 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/core/token.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.c b/src/data/array.c
        index 553d6f5..8e3419a 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/array.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -63,7 +63,7 @@ _array_new_copy_cb(void *p_array, void *p_void) {
         Array*
         array_new_copy(Array *p_array) {
            Array *p_array_cpy = array_new_size(array_get_size(p_array));
        -   array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);   
        +   array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);
         
            return (p_array_cpy);
         }
        diff --git a/src/data/array.h b/src/data/array.h
        index 14e3851..63d8cc9 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/array.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.c b/src/data/dat.c
        index 17c935b..e67ee58 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/dat.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.h b/src/data/dat.h
        index 060783f..e51c725 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/dat.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 6a27c5b..7aab8bc 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/hash.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 6cfe2a3..130ddb6 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/hash.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.c b/src/data/list.c
        index 385091c..719ac40 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/list.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.h b/src/data/list.h
        index 9bb7a00..b32c2af 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/list.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.c b/src/data/map.c
        index 18f4e5c..e12d7a6 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/map.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.h b/src/data/map.h
        index 7ae9ff1..cd63149 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/map.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.c b/src/data/queue.c
        index 7c8271a..1ec5375 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/queue.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.h b/src/data/queue.h
        index d3e6319..43f6223 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/queue.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.c b/src/data/stack.c
        index a9bbdf7..f1da22a 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/stack.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 86accd9..6d42d87 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/stack.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.c b/src/data/tree.c
        index 2b0b280..7edc647 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tree.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.h b/src/data/tree.h
        index c3327fd..289bad0 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tree.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index e772c45..85c6cc4 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tupel.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 747e363..9f77b43 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/tupel.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/types.h b/src/data/types.h
        index a50e273..0f1db87 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/data/types.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/defines.h b/src/defines.h
        index 603ad31..19c0179 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/defines.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.c b/src/fype.c
        index bf9a3ca..754aab6 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/fype.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.h b/src/fype.h
        index 37c8851..02e1e85 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/fype.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/main.c b/src/main.c
        index d48a395..f2d851f 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -1,13 +1,13 @@
         /*:*
          *: File: ./src/main.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: E-Mail	: fype@dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +15,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/tags b/tags
        index 6915cc7..1896056 100644
        --- a/tags
        +++ b/tags
        @@ -72,6 +72,7 @@ arrayiterator_has_next	./src/data/array.c	/^arrayiterator_has_next(ArrayIterator
         arrayiterator_new	./src/data/array.c	/^arrayiterator_new(Array *p_array) {$/
         arrayiterator_next	./src/data/array.c	/^arrayiterator_next(ArrayIterator *p_arrayiterator)/
         convert_function_arg_types_to_highest	./src/core/convert.c	/^convert_function_arg_types_to_highest(Stack *p_sta/
        +convert_to_array	./src/core/convert.c	/^convert_to_array(Token *p_token) {$/
         convert_to_double	./src/core/convert.c	/^convert_to_double(Token *p_token) {$/
         convert_to_highest	./src/core/convert.c	/^convert_to_highest(Token *p_token1, Token *p_token/
         convert_to_integer	./src/core/convert.c	/^convert_to_integer(Token *p_token) {$/
        -- 
        cgit v1.2.3
        
        
        From f0b2170a9c769425082604c9e9252ba422902f3e Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 22:56:26 +0000
        Subject:
        
        ---
         src/core/garbage.c | 8 --------
         1 file changed, 8 deletions(-)
        
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index 1d6cf2c..f73d8c7 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -60,14 +60,6 @@ garbage_destroy() {
                       " which don't have a zero ref count!\n",
                       list_size(LIST_GARBAGE));
         
        -      /*
        -       ListIterator *p_iter = listiterator_new(LIST_GARBAGE);
        -       while (listiterator_has_next(p_iter)) {
        -          _Garbage *p_garbage = listiterator_next(p_iter);
        -       }
        -       listiterator_delete(p_iter);
        -      */
        -
               _GARBAGE_ERROR("Garbage left");
            }
         
        -- 
        cgit v1.2.3
        
        
        From d2713783c48ca9fbdd6f4ea3aab03fe856fdd52a Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 23:24:42 +0000
        Subject: big step forward for arrays in fype.
        
        ---
         docs/help.txt        |  2 +-
         docs/stats.txt       |  2 +-
         docs/version.txt     |  2 +-
         src/build.h          |  2 +-
         src/core/convert.c   | 30 -----------------
         src/core/function.c  | 94 ++++++++++++++++++++++++++++++++++++----------------
         src/core/interpret.c |  1 +
         src/core/token.c     |  3 +-
         src/data/array.c     | 11 ++++--
         src/data/array.h     |  1 +
         tags                 |  3 +-
         11 files changed, 84 insertions(+), 67 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 21d596e..1327bde 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9338
        +Fype v0.1-devel Build 9347
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index ca8db03..2a52d18 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7950 
        +===> Num of C source lines		:     7965 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 520eab4..e3059ba 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9338
        +Fype v0.1-devel Build 9347
        diff --git a/src/build.h b/src/build.h
        index 4249787..8b24407 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9344
        +#define BUILDNR 9347
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index d156007..ee9ab9b 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -147,36 +147,6 @@ convert_to_string(Token *p_token) {
         void
         convert_to_array(Token *p_token) {
            ERROR("not yet implemented");
        -   switch (token_get_tt(p_token)) {
        -   case TT_INTEGER:
        -   {
        -      token_set_tt(p_token, TT_STRING);
        -      char c_tmp[1024];
        -      sprintf(c_tmp, "%d", token_get_ival(p_token));
        -      int i_len = strlen(c_tmp);
        -      p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1));
        -      strcpy(p_token->c_val, c_tmp);
        -      p_token->c_val[i_len] = 0;
        -   }
        -   break;
        -   case TT_DOUBLE:
        -   {
        -      token_set_tt(p_token, TT_STRING);
        -      char c_tmp[1024];
        -      sprintf(c_tmp, "%f", token_get_dval(p_token));
        -      int i_len = strlen(c_tmp);
        -      p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1));
        -      strcpy(p_token->c_val, c_tmp);
        -      p_token->c_val[i_len] = 0;
        -   }
        -   case TT_STRING:
        -      break;
        -   case TT_ARRAY:
        -      break;
        -   default:
        -      ERROR("Datatype conversion error");
        -      break;
        -   }
         }
         
         void
        diff --git a/src/core/function.c b/src/core/function.c
        index fbdf53d..8d5dbf6 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -186,14 +186,10 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        -         /*
        -         case TT_ARRAY:
        -           token_set_ival(p_token_store,
        -                          atoi(token_get_val(p_token_next)) +
        -                          atoi(token_get_val(p_token_store)));
        -           token_set_tt(p_token_store, TT_INTEGER);
        -           break;
        -         */
        +      case TT_ARRAY:
        +         array_append(p_token_store->p_array,
        +                      p_token_next->p_array);
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -215,6 +211,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY - TT_ARRAY not yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -236,6 +235,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY * TT_ARRAY not yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -257,6 +259,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atof(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_DOUBLE);
                  break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY / TT_ARRAY not yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -278,6 +283,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 strcmp(token_get_val(p_token_next),
                                        token_get_val(p_token_store)) == 0);
                  token_set_tt(p_token_store, TT_INTEGER);
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY eq TT_ARRAY not yet implemented");
                  break;
                  NO_DEFAULT;
               }
        @@ -301,6 +308,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                        token_get_val(p_token_store)) != 0);
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -323,6 +333,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                        token_get_val(p_token_store)) <= 0);
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -345,6 +358,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                        token_get_val(p_token_store)) >= 0);
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -367,6 +383,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                        token_get_val(p_token_store)) < 0);
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -389,27 +408,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                        token_get_val(p_token_store)) > 0);
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_AND:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) &
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) &
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) &
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
                  break;
                  NO_DEFAULT;
               }
        @@ -433,6 +433,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -455,6 +458,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -477,6 +483,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -499,6 +508,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 atoi(token_get_val(p_token_store)));
                  token_set_tt(p_token_store, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
               break;
        @@ -617,6 +629,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  if (atoi(token_get_val(p_token)) == 0)
                     _FUNCTION_ERROR("Assert failed", p_token);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
         
        @@ -636,6 +651,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  convert_to_integer(p_token);
                  token_set_ival(p_token, token_get_ival(p_token) - 1);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
         
        @@ -684,6 +702,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  convert_to_integer(p_token);
                  token_set_ival(p_token, token_get_ival(p_token) + 1);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
         
        @@ -716,6 +737,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  token_set_ival(p_token, -atoi(token_get_val(p_token)));
                  token_set_tt(p_token, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
         
        @@ -739,6 +763,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                     token_set_ival(p_token, !atoi(token_get_val(p_token)));
                     token_set_tt(p_token, TT_INTEGER);
                     break;
        +         case TT_ARRAY:
        +            ERROR("ARRAY bla yet implemented");
        +            break;
                     NO_DEFAULT;
                  }
               }
        @@ -759,6 +786,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
                     break;
        +         case TT_ARRAY:
        +            ERROR("ARRAY bla yet implemented");
        +            break;
                     NO_DEFAULT;
                  }
               }
        @@ -780,6 +810,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                     break;
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
        +         case TT_ARRAY:
        +            ERROR("ARRAY bla yet implemented");
        +            break;
                     break;
                  }
               }
        @@ -827,6 +860,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  token_set_ival(p_token, !atoi(token_get_val(p_token)));
                  token_set_tt(p_token, TT_INTEGER);
                  break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
                  NO_DEFAULT;
               }
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 098111b..c6b66de 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -801,6 +801,7 @@ _term(Interpret *p_interpret) {
            case TT_INTEGER:
            case TT_DOUBLE:
            case TT_STRING:
        +   case TT_ARRAY:
               stack_push(p_interpret->p_stack, p_interpret->p_token);
               _NEXT
               return (1);
        diff --git a/src/core/token.c b/src/core/token.c
        index 6a9d966..3a2e413 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -398,7 +398,8 @@ token_print_val(Token *p_token) {
               printf("(%s, %s)", tt_get_name(tt), token_get_val(p_token));
               break;
            case TT_ARRAY:
        -      printf("(%s, size:%d)", tt_get_name(tt), array_get_size(p_token->p_array));
        +      printf("(%s, size:%d)", tt_get_name(tt),
        +             array_get_size(p_token->p_array));
               break;
            default:
               ERROR("Ouups(%s)!", tt_get_name(tt));
        diff --git a/src/data/array.c b/src/data/array.c
        index 8e3419a..9bd0101 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -56,14 +56,14 @@ array_new_size(int i_size) {
         }
         
         void
        -_array_new_copy_cb(void *p_array, void *p_void) {
        +_unshift_cb(void *p_array, void *p_void) {
            array_unshift(p_array, p_void);
         }
         
         Array*
         array_new_copy(Array *p_array) {
            Array *p_array_cpy = array_new_size(array_get_size(p_array));
        -   array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);
        +   array_iterate2(p_array, _unshift_cb, p_array_cpy);
         
            return (p_array_cpy);
         }
        @@ -238,6 +238,13 @@ array_push(Array *p_array, void *p_void) {
            array_set(p_array, 0, p_void);
         }
         
        +void
        +array_append(Array *p_array, Array *p_array_append) {
        +   int i_size = array_get_size(p_array) + array_get_size(p_array_append);
        +   array_resize(p_array, i_size);
        +   array_iterate2(p_array_append, _unshift_cb, p_array);
        +}
        +
         void
         array_iterate(Array *p_array, void (*func)(void *)) {
            if (!p_array)
        diff --git a/src/data/array.h b/src/data/array.h
        index 63d8cc9..a6648bf 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -74,6 +74,7 @@ _Bool array_defined(Array *p_array, int i_index);
         void array_print_int(Array *p_array);
         void array_splice(Array *p_array, int i_index, Array *p_array2);
         void array_push(Array *p_array, void *p_void);
        +void array_append(Array *p_array, Array *p_array_append);
         void array_unshift(Array *p_array, void *p_void);
         void array_iterate(Array *p_array, void (*func)(void *));
         void array_iterate2(Array *p_array, void (*func)(void *, void *),
        diff --git a/tags b/tags
        index 1896056..ec8ff65 100644
        --- a/tags
        +++ b/tags
        @@ -6,7 +6,6 @@ _GARBAGE_ERROR	./src/core/garbage.c	/^#define _GARBAGE_ERROR(m) \\$/
         _Garbage	./src/core/garbage.c	/^} _Garbage;$/
         _INTERPRET_ERROR	./src/core/interpret.c	/^#define _INTERPRET_ERROR(m,t) \\$/
         _add_semicolon_to_list	./src/core/scanner.c	/^_add_semicolon_to_list(Scanner *p_scanner) {$/
        -_array_new_copy_cb	./src/data/array.c	/^_array_new_copy_cb(void *p_array, void *p_void) {$/
         _block	./src/core/interpret.c	/^_block(Interpret *p_interpret) {$/
         _block_get	./src/core/interpret.c	/^_block_get(Interpret *p_interpret, List *p_list_bl/
         _block_skip	./src/core/interpret.c	/^_block_skip(Interpret *p_interpret) {$/
        @@ -36,6 +35,7 @@ _term	./src/core/interpret.c	/^_term(Interpret *p_interpret) {$/
         _tree_print	./src/data/tree.c	/^_tree_print(TreeNode *p_treenode, int i_indent) {$/
         _tree_print_cb	./src/data/tree.c	/^_tree_print_cb(void *p_void, void *p_indent) {$/
         _tree_print_cb2	./src/data/tree.c	/^_tree_print_cb2(void *p_void, void *p_indent) {$/
        +_unshift_cb	./src/data/array.c	/^_unshift_cb(void *p_array, void *p_void) {$/
         _var_assign	./src/core/interpret.c	/^_var_assign(Interpret *p_interpret) {$/
         _var_decl	./src/core/interpret.c	/^_var_decl(Interpret *p_interpret) {$/
         _var_list	./src/core/interpret.c	/^_var_list(Interpret *p_interpret) {$/
        @@ -48,6 +48,7 @@ argv_run	./src/argv.c	/^argv_run(Fype *p_fype, int i_argc, char **pc_argv)/
         argv_switch	./src/argv.c	/^argv_switch(char c_arg, Tupel *p_tupel_argv, unsig/
         argv_synopsis	./src/argv.c	/^argv_synopsis(Tupel *p_tupel_argv) {$/
         argv_tupel_delete	./src/argv.c	/^argv_tupel_delete(Tupel *p_tupel_argv) {$/
        +array_append	./src/data/array.c	/^array_append(Array *p_array, Array *p_array_append/
         array_defined	./src/data/array.c	/^array_defined(Array *p_array, int i_index) {$/
         array_delete	./src/data/array.c	/^array_delete(Array *p_array) {$/
         array_delete_iterate	./src/data/array.c	/^array_delete_iterate(Array *p_array, void (*func)(/
        -- 
        cgit v1.2.3
        
        
        From 7575536c805e379b009630947e72f636c006751f Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Tue, 4 Nov 2008 23:43:30 +0000
        Subject: fixed bugs which happened.
        
        ---
         docs/help.txt       |   2 +-
         docs/stats.txt      |   2 +-
         docs/version.txt    |   2 +-
         fype                | Bin 449989 -> 455007 bytes
         src/build.h         |   2 +-
         src/core/function.c |  28 +++++++++++++++++++++++++++-
         src/core/token.c    |   2 ++
         7 files changed, 33 insertions(+), 5 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 1327bde..d7a5530 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9347
        +Fype v0.1-devel Build 9348
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 2a52d18..5172f37 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7965 
        +===> Num of C source lines		:     7995 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index e3059ba..180a0b9 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9347
        +Fype v0.1-devel Build 9348
        diff --git a/fype b/fype
        index e107378..7c8fcfe 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 8b24407..a313b8c 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9347
        +#define BUILDNR 9362
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/function.c b/src/core/function.c
        index 8d5dbf6..a102d7b 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -283,6 +283,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                                 strcmp(token_get_val(p_token_next),
                                        token_get_val(p_token_store)) == 0);
                  token_set_tt(p_token_store, TT_INTEGER);
        +         break;
               case TT_ARRAY:
                  ERROR("TT_ARRAY eq TT_ARRAY not yet implemented");
                  break;
        @@ -414,6 +415,31 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
                  NO_DEFAULT;
               }
               break;
        +   case TT_AND:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) &
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) &
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) &
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
            case TT_OR:
               switch (tt_highest) {
               case TT_INTEGER:
        @@ -810,10 +836,10 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                     break;
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
        +            break;
                  case TT_ARRAY:
                     ERROR("ARRAY bla yet implemented");
                     break;
        -            break;
                  }
               }
               stackiterator_delete(p_iter);
        diff --git a/src/core/token.c b/src/core/token.c
        index 3a2e413..a60a790 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -275,6 +275,7 @@ token_new_dummy() {
            p_token->c_filename = NULL;
            p_token->u_token_id = TOKEN_ID_COUNTER++;
            p_token->i_ref_count = 0;
        +   p_token->p_array = NULL;
         
            /* Register the token in the garbage collector */
            garbage_add_token(p_token);
        @@ -290,6 +291,7 @@ token_new_copy(Token *p_token) {
            if (p_token_copy == NULL)
               ERROR("Memory alloc error");
         
        +   p_token->p_array = NULL;
            token_copy_vals(p_token_copy, p_token);
            p_token_copy->i_ref_count = 0;
         
        -- 
        cgit v1.2.3
        
        
        From fbff89d91c2a13155423bd83d2bbefd5d6891e23 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Wed, 5 Nov 2008 20:47:38 +0000
        Subject:
        
        ---
         Makefile             |   2 --
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 455007 -> 455135 bytes
         src/build.h          |   2 +-
         src/core/interpret.c |   6 ++----
         tmp/test.fy          |   2 +-
         tmp/test.out         |  10 +---------
         9 files changed, 8 insertions(+), 20 deletions(-)
        
        diff --git a/Makefile b/Makefile
        index 071ddac..0ab034a 100644
        --- a/Makefile
        +++ b/Makefile
        @@ -112,5 +112,3 @@ deinstall:
         uninstall: deinstall
         pod:
         	@cd ./docs/pod; make clean all
        -sess:
        -	vim -S Session.vim
        diff --git a/docs/help.txt b/docs/help.txt
        index d7a5530..821034c 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9348
        +Fype v0.1-devel Build 9363
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 5172f37..4d2b190 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7995 
        +===> Num of C source lines		:     7993 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 180a0b9..2dac819 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9348
        +Fype v0.1-devel Build 9363
        diff --git a/fype b/fype
        index 7c8fcfe..1458a11 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index a313b8c..0fecd98 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9362
        +#define BUILDNR 9375
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index c6b66de..67ebc22 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -984,18 +984,16 @@ _term(Interpret *p_interpret) {
            break;
            */
         
        -   /*
            case TT_PARANT_AL:
            {
               Token *p_token = p_interpret->p_token;
               _NEXT
         
        +      _INTERPRET_ERROR("arrays not yet fully implemented", p_token);
               Token *p_token_arr = token_new_array(ARRAY_SIZE);
        -      stack_push(p_interpret->p_stack, p_token_arr);
        -      _INTERPRET_ERROR("arrays not yet fully implemented", p_token_arr);
        +      //stack_push(p_interpret->p_stack, p_token_arr);
            }
            break;
        -   */
         
            case TT_PARANT_L:
            {
        diff --git a/tmp/test.fy b/tmp/test.fy
        index 8fe78a1..e91b86d 100644
        --- a/tmp/test.fy
        +++ b/tmp/test.fy
        @@ -3,4 +3,4 @@
          *#
         
         my foo = 1, bar = 2;
        -my arr = [foo bar];
        +my baz = [foo, bar];
        diff --git a/tmp/test.out b/tmp/test.out
        index 79fda72..e91b86d 100644
        --- a/tmp/test.out
        +++ b/tmp/test.out
        @@ -3,12 +3,4 @@
          *#
         
         my foo = 1, bar = 2;
        -Token (id=00000, line=00005, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        -Token (id=00001, line=00005, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00002, line=00005, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00003, line=00005, pos=0011, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1)
        -Token (id=00004, line=00005, pos=0012, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00005, line=00005, pos=0016, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        -Token (id=00006, line=00005, pos=0018, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        -Token (id=00007, line=00005, pos=0020, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1)
        -Token (id=00008, line=00005, pos=0021, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +my baz = [foo, bar];
        -- 
        cgit v1.2.3
        
        
        From a46655f67043af257e70715903badf9d4321c4de Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Fri, 7 Nov 2008 22:11:06 +0000
        Subject: one step further for arrays.
        
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 455135 -> 456748 bytes
         src/build.h          |   2 +-
         src/core/function.c  |  46 +++++++++++++---------------------
         src/core/interpret.c |  68 +++++++++++++++++++++------------------------------
         src/core/token.c     |   4 +++
         src/data/array.c     |  34 +++++++++++++++++++-------
         src/data/array.h     |   3 +++
         src/data/stack.c     |   8 ++++++
         src/data/stack.h     |   3 +--
         src/defines.h        |   1 +
         tags                 |   2 ++
         tmp/test.fy          |   3 +--
         tmp/test.out         |  55 +++++++++++++++++++++++++++++++++++++++--
         16 files changed, 147 insertions(+), 88 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 821034c..f27684b 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9363
        +Fype v0.1-devel Build 9477
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 4d2b190..4d4d8c6 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     7993 
        +===> Num of C source lines		:     8000 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 2dac819..754e1f7 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9363
        +Fype v0.1-devel Build 9477
        diff --git a/fype b/fype
        index 1458a11..3228448 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 0fecd98..01a4ce8 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9375
        +#define BUILDNR 9608
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/function.c b/src/core/function.c
        index a102d7b..0df0b65 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -636,12 +636,27 @@ void
         function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                                  Stack *p_stack_args) {
         
        +   Token *p_token = stack_top(p_stack_args);
        +
        +   if (token_get_tt(p_token) == TT_ARRAY) {
        +      ArrayIterator *p_iter = arrayiterator_new(p_token->p_array);
        +
        +      while (arrayiterator_has_next(p_iter)) {
        +         stack_push(p_stack_args, arrayiterator_next(p_iter));
        +         function_process_buildin(p_interpret, p_token_ident,
        +                                  p_stack_args);
        +         stack_pop(p_stack_args);
        +      }
        +
        +      arrayiterator_delete(p_iter);
        +
        +      return;
        +   }
        +
            if (strcmp("assert", token_get_val(p_token_ident)) == 0) {
               if (0 == stack_size(p_stack_args))
                  _FUNCTION_ERROR("No argument given", p_token_ident);
         
        -      Token *p_token = stack_top(p_stack_args);
        -
               switch (token_get_tt(p_token)) {
               case TT_INTEGER:
                  if (token_get_ival(p_token) == 0)
        @@ -655,9 +670,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  if (atoi(token_get_val(p_token)) == 0)
                     _FUNCTION_ERROR("Assert failed", p_token);
                  break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
                  NO_DEFAULT;
               }
         
        @@ -665,7 +677,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               if (0 == stack_size(p_stack_args))
                  _FUNCTION_ERROR("No argument given", p_token_ident);
         
        -      Token *p_token = stack_top(p_stack_args);
               switch (token_get_tt(p_token)) {
               case TT_INTEGER:
                  token_set_ival(p_token, token_get_ival(p_token) - 1);
        @@ -677,9 +688,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  convert_to_integer(p_token);
                  token_set_ival(p_token, token_get_ival(p_token) - 1);
                  break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
                  NO_DEFAULT;
               }
         
        @@ -707,7 +715,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               if (0 == stack_size(p_stack_args))
                  _FUNCTION_ERROR("No argument given", p_token_ident);
         
        -      Token *p_token = stack_top(p_stack_args);
               p_token = token_new_copy(p_token);
               convert_to_integer(p_token);
               exit(token_get_ival(p_token));
        @@ -716,7 +723,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               if (0 == stack_size(p_stack_args))
                  _FUNCTION_ERROR("No argument given", p_token_ident);
         
        -      Token *p_token = stack_top(p_stack_args);
               switch (token_get_tt(p_token)) {
               case TT_INTEGER:
                  token_set_ival(p_token, token_get_ival(p_token) + 1);
        @@ -728,9 +734,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  convert_to_integer(p_token);
                  token_set_ival(p_token, token_get_ival(p_token) + 1);
                  break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
                  NO_DEFAULT;
               }
         
        @@ -763,9 +766,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  token_set_ival(p_token, -atoi(token_get_val(p_token)));
                  token_set_tt(p_token, TT_INTEGER);
                  break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
                  NO_DEFAULT;
               }
         
        @@ -789,9 +789,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                     token_set_ival(p_token, !atoi(token_get_val(p_token)));
                     token_set_tt(p_token, TT_INTEGER);
                     break;
        -         case TT_ARRAY:
        -            ERROR("ARRAY bla yet implemented");
        -            break;
                     NO_DEFAULT;
                  }
               }
        @@ -812,9 +809,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
                     break;
        -         case TT_ARRAY:
        -            ERROR("ARRAY bla yet implemented");
        -            break;
                     NO_DEFAULT;
                  }
               }
        @@ -837,9 +831,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  case TT_STRING:
                     printf("%s", token_get_val(p_token));
                     break;
        -         case TT_ARRAY:
        -            ERROR("ARRAY bla yet implemented");
        -            break;
                  }
               }
               stackiterator_delete(p_iter);
        @@ -886,9 +877,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  token_set_ival(p_token, !atoi(token_get_val(p_token)));
                  token_set_tt(p_token, TT_INTEGER);
                  break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
                  NO_DEFAULT;
               }
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 67ebc22..cc1d87f 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -50,6 +50,7 @@
         
         #define _CHECK if (p_interpret->p_token == NULL) return (0);
         #define _HAS_NEXT listiterator_has_next(p_interpret->p_iter)
        +#define _NEXT_ORG _next(p_interpret);
         #define _NEXT if (!_next(p_interpret)) { return (2); }
         #define _NEXT_TT _next_tt(p_interpret)
         #define _SKIP _next(p_interpret);
        @@ -146,6 +147,7 @@ _next(Interpret *p_interpret) {
         
            p_interpret->p_token = NULL;
            p_interpret->tt = TT_NONE;
        +   //printf("==>\n");
         
            return (0);
         }
        @@ -465,7 +467,8 @@ _expression(Interpret *p_interpret) {
            _CHECK TRACK
         
            if (_expression_(p_interpret)) {
        -      if (p_interpret->tt == TT_SEMICOLON) {
        +      TokenType tt = p_interpret->tt;
        +      if (tt == TT_SEMICOLON || tt == TT_NONE) {
                  _NEXT
         
               } else {
        @@ -798,13 +801,18 @@ _term(Interpret *p_interpret) {
            _CHECK TRACK
         
            switch (p_interpret->tt) {
        +   case TT_STRING:
            case TT_INTEGER:
            case TT_DOUBLE:
        -   case TT_STRING:
            case TT_ARRAY:
               stack_push(p_interpret->p_stack, p_interpret->p_token);
        -      _NEXT
        -      return (1);
        +      // Checks if the term is the last element of an array
        +      //	say ["element"] # The "element"
        +      // or of a function
        +      // 	func foo { say 1 } # The 1
        +      if (_NEXT_TT != TT_PARANT_AR && _NEXT_TT != TT_PARANT_CR)
        +         _NEXT
        +         return (1);
         
            case TT_IDENT:
            {
        @@ -949,49 +957,29 @@ _term(Interpret *p_interpret) {
            }
            break;
         
        -   /*
        -   // Reference operator
        -   case TT_AAND:
        +   case TT_PARANT_AL:
            {
        -      _NEXT
        -      if (p_interpret->tt != TT_IDENT)
        -         _INTERPRET_ERROR("Expexted identifier for '&'",
        -                          p_interpret->p_token);
        -
        -      char *c_name = token_get_val(p_interpret->p_token);
        -      Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name);
        -
        -     _INTERPRET_ERROR("nyi", p_interpret->p_token);
        -
        -      _NEXT;
        -      return (1);
        -   }
        -   break;
        +      Token *p_token_arr = token_new_array(ARRAY_SIZE);
        +      Array *p_array = p_token_arr->p_array;
         
        -   // Dereference opeator
        -   case TT_MULT:
        -   {
               _NEXT
        -      if (p_interpret->tt != TT_IDENT)
        -         _INTERPRET_ERROR("Expexted identifier for '*'",
        -                          p_interpret->p_token);
        +      // Get the array elements
        +      while (p_interpret->tt != TT_PARANT_AR) {
        +         TokenType tt = tt = p_interpret->tt;
        +         if (tt != TT_COMMA && tt != TT_SEMICOLON) {
        +            UNLESS (_expression_(p_interpret)) {
        +               Token *p_token = p_interpret->p_token;
        +               _INTERPRET_ERROR("Expected expression", p_token);
        +            }
         
        +            array_unshift(p_array, stack_pop(p_interpret->p_stack));
        +         }
         
        -     _INTERPRET_ERROR("nyi", p_interpret->p_token);
        -      _NEXT;
        -      return (1);
        -   }
        -   break;
        -   */
        +         _NEXT
        +      }
         
        -   case TT_PARANT_AL:
        -   {
        -      Token *p_token = p_interpret->p_token;
        +      stack_push(p_interpret->p_stack, p_token_arr);
               _NEXT
        -
        -      _INTERPRET_ERROR("arrays not yet fully implemented", p_token);
        -      Token *p_token_arr = token_new_array(ARRAY_SIZE);
        -      //stack_push(p_interpret->p_stack, p_token_arr);
            }
            break;
         
        diff --git a/src/core/token.c b/src/core/token.c
        index a60a790..8f8adb0 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -252,7 +252,10 @@ token_new_string(char *c_val) {
         Token*
         token_new_array(int i_size) {
            Token *p_token = token_new_dummy();
        +
            token_set_tt(p_token, TT_ARRAY);
        +   p_token->p_array = array_new();
        +
            array_resize(p_token->p_array, i_size);
         
            return (p_token);
        @@ -415,3 +418,4 @@ token_print_cb(void *p_void) {
            token_print(p_token);
            printf("\n");
         }
        +
        diff --git a/src/data/array.c b/src/data/array.c
        index 9bd0101..ba9cf2a 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -40,16 +40,15 @@ array_new() {
         
            p_array->i_size = 0;
            p_array->pp_ae = NULL;
        +   array_set_used(p_array, 0);
         
            return (p_array);
         }
         
         Array*
         array_new_size(int i_size) {
        -   Array *p_array = malloc(sizeof(Array));
        +   Array *p_array = array_new();
         
        -   p_array->i_size = 0;
        -   p_array->pp_ae = NULL;
            array_resize(p_array, i_size);
         
            return (p_array);
        @@ -109,8 +108,18 @@ array_set(Array *p_array, int i_index, void *p_val) {
               array_resize(p_array, i_index + 1);
               p_array->pp_ae[i_index]->p_val = p_val;
            }
        +
        +   if (p_array->i_used < i_index)
        +      array_set_used(p_array, i_index);
         }
         
        +void
        +array_set_used(Array *p_array, int i_used) {
        +   //printf("foo %d",i_used);
        +   p_array->i_used = i_used;
        +}
        +
        +
         void
         array_insert(Array *p_array, int i_index, void *p_val) {
            if (p_array->i_size <= i_index) {
        @@ -127,6 +136,9 @@ array_insert(Array *p_array, int i_index, void *p_val) {
               p_array->pp_ae[i] = p_ae;
               p_ae->p_val = p_val;
            }
        +
        +   if (p_array->i_used < i_index)
        +      array_set_used(p_array, i_index);
         }
         
         void*
        @@ -144,7 +156,6 @@ array_remove(Array *p_array, int i_index) {
            p_array->pp_ae[i-1] = p_ae;
         
            array_resize(p_array, p_array->i_size - 1);
        -
            return (p_ret);
         }
         
        @@ -182,6 +193,9 @@ array_resize(Array *p_array, int i_size) {
                  p_array->pp_ae[i] = arrayelement_new(NULL);
         
            p_array->i_size = i_size;
        +   //printf("[%d > %d]", p_array->i_used, i_size);
        +   if (p_array->i_used > i_size)
        +      array_set_used(p_array, i_size);
         }
         
         void*
        @@ -223,8 +237,9 @@ array_splice(Array *p_array, int i_index, Array *p_array2) {
         
         void
         array_unshift(Array *p_array, void *p_void) {
        -   int i_size = array_get_size(p_array);
        -   array_set(p_array, i_size, p_void);
        +   int i_used = array_get_used(p_array);
        +   array_set(p_array, i_used, p_void);
        +   array_set_used(p_array, 1+i_used);
         }
         
         void
        @@ -250,7 +265,7 @@ array_iterate(Array *p_array, void (*func)(void *)) {
            if (!p_array)
               return;
         
        -   for (int i = 0; i < array_get_size(p_array); ++i)
        +   for (int i = 0; i < array_get_used(p_array); ++i)
               (*func) (array_get(p_array, i));
         }
         
        @@ -259,7 +274,7 @@ array_iterate2(Array *p_array, void (*func)(void *, void *), void *p_void) {
            if (!p_array)
               return;
         
        -   for (int i = 0; i < array_get_size(p_array); ++i)
        +   for (int i = 0; i < array_get_used(p_array); ++i)
               (*func) (array_get(p_array, i), p_void);
         }
         
        @@ -300,8 +315,9 @@ arrayiterator_delete(ArrayIterator *p_arrayiterator) {
         
         _Bool
         arrayiterator_has_next(ArrayIterator *p_arrayiterator) {
        +   //printf("[%d]", p_arrayiterator->p_array->i_used);
            return (p_arrayiterator->i_cur_pos <
        -           array_get_size(p_arrayiterator->p_array));
        +           array_get_used(p_arrayiterator->p_array));
         }
         
         void*
        diff --git a/src/data/array.h b/src/data/array.h
        index a6648bf..eb935e9 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -41,6 +41,7 @@
         #include "../defines.h"
         
         #define array_get_size(a) a->i_size
        +#define array_get_used(a) a->i_used
         #define array_empty(a) a->i_size == 0
         #define array_clear(a) array_resize(a, 0)
         #define array_get_first(a) array_get(a, 0)
        @@ -52,6 +53,7 @@ typedef struct {
         
         typedef struct {
            ArrayElement **pp_ae;
        +   int i_used;
            int i_size;
         } Array;
         
        @@ -79,6 +81,7 @@ void array_unshift(Array *p_array, void *p_void);
         void array_iterate(Array *p_array, void (*func)(void *));
         void array_iterate2(Array *p_array, void (*func)(void *, void *),
                             void *p_void);
        +void array_set_used(Array *p_array, int i_used);
         
         ArrayElement *arrayelement_new(void *p_val);
         void arrayelement_delete(ArrayElement *p_ae);
        diff --git a/src/data/stack.c b/src/data/stack.c
        index f1da22a..00d5d88 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -93,6 +93,14 @@ stack_pop(Stack *p_stack) {
            return (p_val);
         }
         
        +void*
        +stack_top(Stack *p_stack) {
        +   if (stack_empty(p_stack))
        +      return (NULL);
        +
        +   return (p_stack->p_first->p_val);
        +}
        +
         void
         stack_clear(Stack *p_stack) {
            for (;!stack_empty(p_stack); stack_pop(p_stack));
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 6d42d87..4468bbe 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -35,8 +35,6 @@
         #ifndef STACK_H
         #define STACK_H
         
        -#define stack_top(s) s->p_first->p_val;
        -
         #include 
         
         typedef struct StackElem_ {
        @@ -65,6 +63,7 @@ void stack_iterate_level(Stack *p_stack, void (*func)(void *p_void,
                                  int i_level));
         void stack_push(Stack *p_stack, void *p_val);
         void *stack_pop(Stack *p_stack);
        +void *stack_top(Stack *p_stack);
         void stack_clear(Stack *p_stack);
         void stack_delete(Stack *p_stack);
         void stack_delete_and_free(Stack *p_stack);
        diff --git a/src/defines.h b/src/defines.h
        index 19c0179..fdcd701 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -66,6 +66,7 @@
         #define true (_Bool)1
         #endif
         
        +#define UNLESS(x) if (!x)
         // Makes the compiler always happy (end of switch statements) :)
         #define NO_DEFAULT default: if (0)
         
        diff --git a/tags b/tags
        index ec8ff65..38492ee 100644
        --- a/tags
        +++ b/tags
        @@ -64,6 +64,7 @@ array_push	./src/data/array.c	/^array_push(Array *p_array, void *p_void) {$/
         array_remove	./src/data/array.c	/^array_remove(Array *p_array, int i_index) {$/
         array_resize	./src/data/array.c	/^array_resize(Array *p_array, int i_size) {$/
         array_set	./src/data/array.c	/^array_set(Array *p_array, int i_index, void *p_val/
        +array_set_used	./src/data/array.c	/^array_set_used(Array *p_array, int i_used) {$/
         array_splice	./src/data/array.c	/^array_splice(Array *p_array, int i_index, Array *p/
         array_unshift	./src/data/array.c	/^array_unshift(Array *p_array, void *p_void) {$/
         arrayelement_delete	./src/data/array.c	/^arrayelement_delete(ArrayElement *p_ae) {$/
        @@ -259,6 +260,7 @@ stack_new	./src/data/stack.c	/^stack_new() {$/
         stack_pop	./src/data/stack.c	/^stack_pop(Stack *p_stack) {$/
         stack_push	./src/data/stack.c	/^stack_push(Stack *p_stack, void *p_val) {$/
         stack_size	./src/data/stack.c	/^stack_size(Stack *p_stack) {$/
        +stack_top	./src/data/stack.c	/^stack_top(Stack *p_stack) {$/
         stackelem_new	./src/data/stack.c	/^stackelem_new() {$/
         stackiterator_delete	./src/data/stack.c	/^stackiterator_delete(StackIterator *p_iter) {$/
         stackiterator_has_next	./src/data/stack.c	/^stackiterator_has_next(StackIterator *p_iter) {$/
        diff --git a/tmp/test.fy b/tmp/test.fy
        index e91b86d..84dda3a 100644
        --- a/tmp/test.fy
        +++ b/tmp/test.fy
        @@ -2,5 +2,4 @@
          * Examples of how to use arrays
          *#
         
        -my foo = 1, bar = 2;
        -my baz = [foo, bar];
        +say ["string"];
        diff --git a/tmp/test.out b/tmp/test.out
        index e91b86d..dddf01d 100644
        --- a/tmp/test.out
        +++ b/tmp/test.out
        @@ -2,5 +2,56 @@
          * Examples of how to use arrays
          *#
         
        -my foo = 1, bar = 2;
        -my baz = [foo, bar];
        +say ["string"];
        +Token (id=00000, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00001, line=00005, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00002, line=00005, pos=0006, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        +Token (id=00003, line=00005, pos=0008, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00004, line=00005, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +DEBUG(Track: ./src/core/interpret.c:_program:167)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_statement:432)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_proc_decl:364)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_func_decl:398)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_var_decl:177)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_control:492)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_expression:467)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_compare:627)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_sum:678)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product:729)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_product2:767)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_term:801)
        +DEBUG(Token: say)
        +DEBUG(Track: ./src/core/interpret.c:_compare:627)
        +DEBUG(Token: [)
        +DEBUG(Track: ./src/core/interpret.c:_sum:678)
        +DEBUG(Token: [)
        +DEBUG(Track: ./src/core/interpret.c:_product:729)
        +DEBUG(Token: [)
        +DEBUG(Track: ./src/core/interpret.c:_product2:767)
        +DEBUG(Token: [)
        +DEBUG(Track: ./src/core/interpret.c:_term:801)
        +DEBUG(Token: [)
        +DEBUG(Track: ./src/core/interpret.c:_compare:627)
        +DEBUG(Token: string)
        +DEBUG(Track: ./src/core/interpret.c:_sum:678)
        +DEBUG(Token: string)
        +DEBUG(Track: ./src/core/interpret.c:_product:729)
        +DEBUG(Token: string)
        +DEBUG(Track: ./src/core/interpret.c:_product2:767)
        +DEBUG(Token: string)
        +DEBUG(Track: ./src/core/interpret.c:_term:801)
        +DEBUG(Token: string)
        +==>
        +
        +==>
        -- 
        cgit v1.2.3
        
        
        From c33e87f7b07553e999db94ca0ac6529ed1816332 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Fri, 7 Nov 2008 22:19:48 +0000
        Subject: renamed stuff
        
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 456748 -> 456748 bytes
         src/build.h          |   2 +-
         src/core/interpret.c |  21 ++++++++++---------
         test.fy              |   5 +++++
         tmp/Makefile         |  10 ---------
         tmp/test.fy          |   5 -----
         tmp/test.out         |  57 ---------------------------------------------------
         10 files changed, 20 insertions(+), 86 deletions(-)
         create mode 100644 test.fy
         delete mode 100644 tmp/Makefile
         delete mode 100644 tmp/test.fy
         delete mode 100644 tmp/test.out
        
        diff --git a/docs/help.txt b/docs/help.txt
        index f27684b..f528b8c 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9477
        +Fype v0.1-devel Build 9609
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 4d4d8c6..30d2e85 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     8000 
        +===> Num of C source lines		:     8001 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 754e1f7..3eb92b7 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9477
        +Fype v0.1-devel Build 9609
        diff --git a/fype b/fype
        index 3228448..a9bbf97 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 01a4ce8..3bfad5c 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9608
        +#define BUILDNR 9610
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index cc1d87f..37906e4 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -467,7 +467,7 @@ _expression(Interpret *p_interpret) {
            _CHECK TRACK
         
            if (_expression_(p_interpret)) {
        -      TokenType tt = p_interpret->tt;
        +	  TokenType tt = p_interpret->tt;
               if (tt == TT_SEMICOLON || tt == TT_NONE) {
                  _NEXT
         
        @@ -806,13 +806,13 @@ _term(Interpret *p_interpret) {
            case TT_DOUBLE:
            case TT_ARRAY:
               stack_push(p_interpret->p_stack, p_interpret->p_token);
        -      // Checks if the term is the last element of an array
        -      //	say ["element"] # The "element"
        -      // or of a function
        -      // 	func foo { say 1 } # The 1
        -      if (_NEXT_TT != TT_PARANT_AR && _NEXT_TT != TT_PARANT_CR)
        -         _NEXT
        -         return (1);
        +	  // Checks if the term is the last element of an array 
        +	  //	say ["element"] # The "element"
        +	  // or of a function
        +	  // 	func foo { say 1 } # The 1
        +	  if (_NEXT_TT != TT_PARANT_AR && _NEXT_TT != TT_PARANT_CR) 
        +		 _NEXT
        +      return (1);
         
            case TT_IDENT:
            {
        @@ -824,7 +824,8 @@ _term(Interpret *p_interpret) {
         
                     if (_HAS_NEXT) {
                        _NEXT
        -               if (_expression_(p_interpret));
        +               //if (_expression_(p_interpret));
        +               _expression_(p_interpret);
         
                     } else {
                        _SKIP
        @@ -974,7 +975,7 @@ _term(Interpret *p_interpret) {
         
                     array_unshift(p_array, stack_pop(p_interpret->p_stack));
                  }
        -
        +		 
                  _NEXT
               }
         
        diff --git a/test.fy b/test.fy
        new file mode 100644
        index 0000000..84dda3a
        --- /dev/null
        +++ b/test.fy
        @@ -0,0 +1,5 @@
        +#*
        + * Examples of how to use arrays
        + *#
        +
        +say ["string"];
        diff --git a/tmp/Makefile b/tmp/Makefile
        deleted file mode 100644
        index eece6e4..0000000
        --- a/tmp/Makefile
        +++ /dev/null
        @@ -1,10 +0,0 @@
        -all:
        -	cd ../ && yasm -f elf ./tmp/test2.s -o ./tmp/test2.o && \
        -	cc -lc ./tmp/test2.o -o ./tmp/test2 
        -run: all
        -	./test2
        -clean:
        -	for i in test2.o test2; do \
        -		if [ -f $$i ]; then rm $$i; fi; \
        -	done
        -	
        diff --git a/tmp/test.fy b/tmp/test.fy
        deleted file mode 100644
        index 84dda3a..0000000
        --- a/tmp/test.fy
        +++ /dev/null
        @@ -1,5 +0,0 @@
        -#*
        - * Examples of how to use arrays
        - *#
        -
        -say ["string"];
        diff --git a/tmp/test.out b/tmp/test.out
        deleted file mode 100644
        index dddf01d..0000000
        --- a/tmp/test.out
        +++ /dev/null
        @@ -1,57 +0,0 @@
        -#*
        - * Examples of how to use arrays
        - *#
        -
        -say ["string"];
        -Token (id=00000, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        -Token (id=00001, line=00005, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        -Token (id=00002, line=00005, pos=0006, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        -Token (id=00003, line=00005, pos=0008, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        -Token (id=00004, line=00005, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -DEBUG(Track: ./src/core/interpret.c:_program:167)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_statement:432)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_proc_decl:364)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_func_decl:398)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_var_decl:177)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_control:492)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_expression:467)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_compare:627)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_sum:678)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product:729)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_product2:767)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_term:801)
        -DEBUG(Token: say)
        -DEBUG(Track: ./src/core/interpret.c:_compare:627)
        -DEBUG(Token: [)
        -DEBUG(Track: ./src/core/interpret.c:_sum:678)
        -DEBUG(Token: [)
        -DEBUG(Track: ./src/core/interpret.c:_product:729)
        -DEBUG(Token: [)
        -DEBUG(Track: ./src/core/interpret.c:_product2:767)
        -DEBUG(Token: [)
        -DEBUG(Track: ./src/core/interpret.c:_term:801)
        -DEBUG(Token: [)
        -DEBUG(Track: ./src/core/interpret.c:_compare:627)
        -DEBUG(Token: string)
        -DEBUG(Track: ./src/core/interpret.c:_sum:678)
        -DEBUG(Token: string)
        -DEBUG(Track: ./src/core/interpret.c:_product:729)
        -DEBUG(Token: string)
        -DEBUG(Track: ./src/core/interpret.c:_product2:767)
        -DEBUG(Token: string)
        -DEBUG(Track: ./src/core/interpret.c:_term:801)
        -DEBUG(Token: string)
        -==>
        -
        -==>
        -- 
        cgit v1.2.3
        
        
        From d0122e88576f6b05e4142df3a0b25735f5e82e29 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Fri, 7 Nov 2008 22:20:48 +0000
        Subject:
        
        ---
         Makefile    |   8 ++++----
         fype        | Bin 456748 -> 456748 bytes
         src/build.h |   2 +-
         test.out    |  11 +++++++++++
         4 files changed, 16 insertions(+), 5 deletions(-)
         create mode 100644 test.out
        
        diff --git a/Makefile b/Makefile
        index 0ab034a..d7a9f87 100644
        --- a/Makefile
        +++ b/Makefile
        @@ -67,17 +67,17 @@ stats:
         stats-tofile:
         	make stats | tee ./docs/stats.txt
         testrun:
        -	cat ./tmp/test.fy > ./tmp/test.out
        -	./$(BIN) -V ./tmp/test.fy | tee -a ./tmp/test.out
        +	cat ./test.fy > ./test.out
        +	./$(BIN) -V ./test.fy | tee -a ./test.out
         tr: testrun
         test: all testrun
         t: test
         run:
        -	./$(BIN) ./tmp/test.fy
        +	./$(BIN) ./test.fy
         core:
         	gdb $(BIN) $(BIN).core
         gdb:
        -	gdb --args $(BIN) ./tmp/test.fy
        +	gdb --args $(BIN) .//test.fy
         newline:
         	@echo 
         examples: all
        diff --git a/fype b/fype
        index a9bbf97..50639bf 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 3bfad5c..d691dcb 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9610
        +#define BUILDNR 9612
         #define OS_FREEBSD
         
         #endif
        diff --git a/test.out b/test.out
        new file mode 100644
        index 0000000..0e2531d
        --- /dev/null
        +++ b/test.out
        @@ -0,0 +1,11 @@
        +#*
        + * Examples of how to use arrays
        + *#
        +
        +say ["string"];
        +Token (id=00000, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00001, line=00005, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00002, line=00005, pos=0006, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        +Token (id=00003, line=00005, pos=0008, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00004, line=00005, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +string
        -- 
        cgit v1.2.3
        
        
        From ec175fe6a038171c4a24c9089e146a28a4343450 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Fri, 7 Nov 2008 23:00:42 +0000
        Subject:
        
        ---
         docs/stats.txt       |   2 +-
         fype                 | Bin 456748 -> 456844 bytes
         src/build.h          |   2 +-
         src/core/interpret.c |   1 +
         test.fy              |   9 ++++++++-
         test.out             |  53 ++++++++++++++++++++++++++++++++++++++++++++-------
         6 files changed, 57 insertions(+), 10 deletions(-)
        
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 30d2e85..e885347 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     8001 
        +===> Num of C source lines		:     8002 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/fype b/fype
        index 50639bf..855003e 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index d691dcb..c192ce4 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9612
        +#define BUILDNR 9623
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 37906e4..65e5fee 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -981,6 +981,7 @@ _term(Interpret *p_interpret) {
         
               stack_push(p_interpret->p_stack, p_token_arr);
               _NEXT
        +      return (1);
            }
            break;
         
        diff --git a/test.fy b/test.fy
        index 84dda3a..0331c31 100644
        --- a/test.fy
        +++ b/test.fy
        @@ -2,4 +2,11 @@
          * Examples of how to use arrays
          *#
         
        -say ["string"];
        +# Create a function bar, returns 0 by default
        +func bar { say "bar" } 
        +
        +# Create a multi dimensional array foo
        +my foo = [bar, 1, 4/2, double "3", ["A", ["BA", "BB"]]];
        +
        +# Run on each element of foo recursive 'say'
        +say foo;
        diff --git a/test.out b/test.out
        index 0e2531d..d568169 100644
        --- a/test.out
        +++ b/test.out
        @@ -2,10 +2,49 @@
          * Examples of how to use arrays
          *#
         
        -say ["string"];
        -Token (id=00000, line=00005, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        -Token (id=00001, line=00005, pos=0006, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        -Token (id=00002, line=00005, pos=0006, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        -Token (id=00003, line=00005, pos=0008, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        -Token (id=00004, line=00005, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -string
        +# Create a function bar, it returns 0 by default
        +func bar { say "bar" } 
        +
        +# Create an array foo, print out "bar" 
        +my foo = [bar, 6/2, 3*3, "string", ["_A", ["__BA", "__BB"]];
        +
        +# 
        +say foo;
        +Token (id=00000, line=00006, pos=0005, type=TT_FUNC, val=func, ival=0, dval=0.000000, refs=1)
        +Token (id=00001, line=00006, pos=0009, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        +Token (id=00002, line=00006, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1)
        +Token (id=00003, line=00006, pos=0015, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00004, line=00006, pos=0016, type=TT_STRING, val=bar, ival=0, dval=0.000000, refs=1)
        +Token (id=00005, line=00006, pos=0019, type=TT_PARANT_CR, val=}, ival=0, dval=0.000000, refs=1)
        +Token (id=00006, line=00009, pos=0003, type=TT_MY, val=my, ival=0, dval=0.000000, refs=1)
        +Token (id=00007, line=00009, pos=0007, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00008, line=00009, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00009, line=00009, pos=0011, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00010, line=00009, pos=0014, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
        +Token (id=00011, line=00009, pos=0015, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00012, line=00009, pos=0017, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1)
        +Token (id=00013, line=00009, pos=0018, type=TT_DIV, val=/, ival=0, dval=0.000000, refs=1)
        +Token (id=00014, line=00009, pos=0019, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1)
        +Token (id=00015, line=00009, pos=0020, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00016, line=00009, pos=0022, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1)
        +Token (id=00017, line=00009, pos=0023, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1)
        +Token (id=00018, line=00009, pos=0024, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1)
        +Token (id=00019, line=00009, pos=0025, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00020, line=00009, pos=0026, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        +Token (id=00021, line=00009, pos=0028, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00022, line=00009, pos=0030, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00023, line=00009, pos=0030, type=TT_STRING, val=_A, ival=0, dval=0.000000, refs=1)
        +Token (id=00024, line=00009, pos=0032, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00025, line=00009, pos=0034, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00026, line=00009, pos=0034, type=TT_STRING, val=__BA, ival=0, dval=0.000000, refs=1)
        +Token (id=00027, line=00009, pos=0036, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00028, line=00009, pos=0037, type=TT_STRING, val=__BB, ival=0, dval=0.000000, refs=1)
        +Token (id=00029, line=00009, pos=0039, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00030, line=00009, pos=0039, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00031, line=00009, pos=0040, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00032, line=00009, pos=0041, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00033, line=00012, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00034, line=00012, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00035, line=00012, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +bar
        +No such symbol: Interpret error in ./test.fy line 12 pos 8 near 'foo' (Fype @ ./src/core/interpret.c line 874)
        -- 
        cgit v1.2.3
        
        
        From 0c69b76e7d7cbc50d4f87e41766a2de1394a6cad Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 11:28:26 +0000
        Subject: len and ind implemented
        
        ---
         NEW                 |   4 ++++
         docs/stats.txt      |   2 +-
         fype                | Bin 456844 -> 457100 bytes
         src/build.h         |   2 +-
         src/core/function.c |  31 +++++++++++++++++++++++++++++++
         src/data/array.c    |   2 --
         src/data/array.h    |   1 +
         7 files changed, 38 insertions(+), 4 deletions(-)
        
        diff --git a/NEW b/NEW
        index 47e74e0..b0dbb82 100644
        --- a/NEW
        +++ b/NEW
        @@ -1,2 +1,6 @@
         keywords:
         	refs
        +
        +functions:
        +	ind
        +	len
        diff --git a/docs/stats.txt b/docs/stats.txt
        index e885347..80adb30 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       44
        -===> Num of C source lines		:     8002 
        +===> Num of C source lines		:     8032 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/fype b/fype
        index 855003e..4746410 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index c192ce4..242be89 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9623
        +#define BUILDNR 9627
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/function.c b/src/core/function.c
        index 0df0b65..e21b029 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -596,9 +596,15 @@ function_is_buildin(Token *p_token_ident) {
            if (strcmp("incr", token_get_val(p_token_ident)) == 0)
               return (true);
         
        +   if (strcmp("ind", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
            if (strcmp("integer", token_get_val(p_token_ident)) == 0)
               return (true);
         
        +   if (strcmp("len", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
            if (strcmp("ln", token_get_val(p_token_ident)) == 0)
               return (true);
         
        @@ -639,6 +645,17 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
            Token *p_token = stack_top(p_stack_args);
         
            if (token_get_tt(p_token) == TT_ARRAY) {
        +	  if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        +		 stack_pop(p_stack_args);
        +         stack_push(p_stack_args,
        +			   token_new_integer(array_get_used(p_token->p_array)));
        +
        +	  } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        +		 stack_pop(p_stack_args);
        +         stack_push(p_stack_args,
        +			   token_new_integer(array_get_ind(p_token->p_array)));
        +
        +	  } else {
               ArrayIterator *p_iter = arrayiterator_new(p_token->p_array);
         
               while (arrayiterator_has_next(p_iter)) {
        @@ -649,6 +666,7 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               }
         
               arrayiterator_delete(p_iter);
        +	  }
         
               return;
            }
        @@ -737,6 +755,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
                  NO_DEFAULT;
               }
         
        +   } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        +		 _FUNCTION_ERROR("Expected array", p_token_ident);
        +
            } else if (strcmp("integer", token_get_val(p_token_ident)) == 0) {
               if (0 == stack_size(p_stack_args))
                  _FUNCTION_ERROR("No argument given", p_token_ident);
        @@ -745,6 +766,16 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
               convert_to_integer(p_token);
               stack_push(p_stack_args, p_token);
         
        +   } else if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTION_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      convert_to_string(p_token);
        +	  token_set_tt(p_token, TT_INTEGER);
        +      token_set_ival(p_token, strlen(token_get_val(p_token)));
        +      stack_push(p_stack_args, p_token);
        +
            } else if (strcmp("ln", token_get_val(p_token_ident)) == 0) {
               printf("\n");
         
        diff --git a/src/data/array.c b/src/data/array.c
        index ba9cf2a..21e941d 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -115,7 +115,6 @@ array_set(Array *p_array, int i_index, void *p_val) {
         
         void
         array_set_used(Array *p_array, int i_used) {
        -   //printf("foo %d",i_used);
            p_array->i_used = i_used;
         }
         
        @@ -193,7 +192,6 @@ array_resize(Array *p_array, int i_size) {
                  p_array->pp_ae[i] = arrayelement_new(NULL);
         
            p_array->i_size = i_size;
        -   //printf("[%d > %d]", p_array->i_used, i_size);
            if (p_array->i_used > i_size)
               array_set_used(p_array, i_size);
         }
        diff --git a/src/data/array.h b/src/data/array.h
        index eb935e9..a56082f 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -42,6 +42,7 @@
         
         #define array_get_size(a) a->i_size
         #define array_get_used(a) a->i_used
        +#define array_get_ind(a) (a->i_used - 1)
         #define array_empty(a) a->i_size == 0
         #define array_clear(a) array_resize(a, 0)
         #define array_get_first(a) array_get(a, 0)
        -- 
        cgit v1.2.3
        
        
        From 3c8a930c790976bb98ea0abeb144f2757ca1cc30 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 11:29:20 +0000
        Subject: updated the array example.
        
        ---
         test.fy | 6 ++++++
         1 file changed, 6 insertions(+)
        
        diff --git a/test.fy b/test.fy
        index 0331c31..cf34f24 100644
        --- a/test.fy
        +++ b/test.fy
        @@ -10,3 +10,9 @@ my foo = [bar, 1, 4/2, double "3", ["A", ["BA", "BB"]]];
         
         # Run on each element of foo recursive 'say'
         say foo;
        +
        +# Print the length of the array
        +assert 5 == say len foo;
        +
        +# Print the last index of the array
        +assert 4 == say ind foo;
        -- 
        cgit v1.2.3
        
        
        From 1be344574cb24e30e13fdc23b2cece65b14ff199 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 12:10:09 +0000
        Subject: splitted function.c into function.c and functions.c
        
        ---
         docs/help.txt        |   2 +-
         docs/stats.txt       |   4 +-
         docs/version.txt     |   2 +-
         fype                 | Bin 457100 -> 470663 bytes
         src/build.h          |   2 +-
         src/core/function.c  | 928 +-----------------------------------------------
         src/core/function.h  |  18 +-
         src/core/functions.c | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++
         src/core/functions.h |  63 ++++
         src/core/interpret.c |  20 +-
         tags                 |  19 +-
         test.out             |  89 +++--
         12 files changed, 1146 insertions(+), 985 deletions(-)
         create mode 100644 src/core/functions.c
         create mode 100644 src/core/functions.h
        
        diff --git a/docs/help.txt b/docs/help.txt
        index f528b8c..95c1cab 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9609
        +Fype v0.1-devel Build 9630
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 80adb30..029a413 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
        -===> Num of C source files		:       44
        -===> Num of C source lines		:     8032 
        +===> Num of C source files		:       46
        +===> Num of C source lines		:     8157 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 3eb92b7..2186474 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9609
        +Fype v0.1-devel Build 9630
        diff --git a/fype b/fype
        index 4746410..ee01307 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 242be89..8b22346 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9627
        +#define BUILDNR 9632
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/function.c b/src/core/function.c
        index e21b029..3d58b86 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -32,933 +32,19 @@
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        -#include 
        -#include 
        -#include 
        +#include "../defines.h"
         
         #include "function.h"
         
        -#include "convert.h"
        -#include "scope.h"
        -#include "symbol.h"
        +Function*
        +function_new() {
        +   Function *p_function = malloc(sizeof(Function));
         
        -#define _FUNCTION_ERROR(m,t) \
        -	 ERROR(\
        -		"%s: Function error in %s line %d pos %d near '%s'", m, \
        -		token_get_filename(t), \
        -		token_get_line_nr(t), \
        -		token_get_pos_nr(t), \
        -		token_get_val(t) \
        -		)
        -
        -void
        -_process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
        -         Token *p_token_op2, Token *p_token_next) {
        -
        -   TokenType tt_op = token_get_tt(p_token_op);
        -   TokenType tt_op2 = p_token_op2 == NULL
        -                      ? TT_NONE
        -                      : token_get_tt(p_token_op2);
        -
        -#ifdef DEBUG_FUNCTION_PROCESS
        -   if (p_token_op2 == NULL)
        -      printf("DEBUG::FUNCTION::PROCESS: Operator %s\n", tt_get_name(tt_op));
        -   else
        -      printf("DEBUG::FUNCTION::PROCESS: Operator %s %s\n", tt_get_name(tt_op),
        -             tt_get_name(tt_op2));
        -
        -   token_print(p_token_next);
        -   printf("\n");
        -   token_print(p_token_store);
        -   printf("\n");
        -#endif /* DEBUG_FUNCTION_PROCESS */
        -
        -   if (p_token_op2 != NULL) {
        -      switch (tt_op) {
        -      case TT_NOT:
        -         switch (tt_op2) {
        -         case TT_ASSIGN:
        -            tt_op = TT_NEQ;
        -            break;
        -         default:
        -            break;
        -         }
        -         break;
        -      case TT_ASSIGN:
        -         switch (tt_op2) {
        -         case TT_ASSIGN:
        -            tt_op = TT_EQ;
        -            break;
        -         default:
        -            break;
        -         }
        -         break;
        -      case TT_LT:
        -         switch (tt_op2) {
        -         case TT_ASSIGN:
        -            tt_op = TT_LE;
        -            break;
        -         default:
        -            break;
        -         }
        -         break;
        -      case TT_GT:
        -         switch (tt_op2) {
        -         case TT_ASSIGN:
        -            tt_op = TT_GE;
        -            break;
        -         default:
        -            break;
        -         }
        -         break;
        -      case TT_DDOT:
        -         switch (tt_op2) {
        -         case TT_LT:
        -            tt_op = TT_LSHIFT;
        -            break;
        -         case TT_GT:
        -            tt_op = TT_RSHIFT;
        -            break;
        -         default:
        -            break;
        -         }
        -         break;
        -      default:
        -         break;
        -      }
        -   } else {
        -      switch (tt_op) {
        -      case TT_ASSIGN:
        -      {
        -         Token *p_token_assign = p_interpret->p_token_temp;
        -         TokenType tt_assign = token_get_tt(p_token_assign);
        -
        -         if (tt_assign != TT_IDENT) {
        -            _FUNCTION_ERROR("Can only assign to symbols",
        -                            p_token_store);
        -         }
        -
        -         Symbol *p_symbol = scope_get(p_interpret->p_scope,
        -                                      token_get_val(p_token_assign));
        -
        -         if (p_symbol == NULL) {
        -            _FUNCTION_ERROR("No such symbol",
        -                            p_token_assign);
        -         }
        -
        -         symbol_set_val(p_symbol, p_token_store);
        -         symbol_set_sym(p_symbol, SYM_VARIABLE);
        -
        -         return;
        -      }
        -
        -      break;
        -      NO_DEFAULT;
        -      }
        -   }
        -
        -   p_token_next = token_new_copy(p_token_next);
        -   TokenType tt_highest = convert_to_highest(p_token_store, p_token_next);
        -
        -#ifdef DEBUG_FUNCTION_PROCESS
        -   printf("DEBUG::FUNCTION::PROCESS: ===> %s %s %s\n",
        -          tt_get_name(tt_highest),
        -          tt_get_name(tt_op),
        -          tt_get_name(tt_highest));
        -#endif /* DEBUG_FUNCTION_PROCESS */
        -
        -   switch (tt_op) {
        -   case TT_ADD:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        token_get_ival(p_token_next) +
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token_store,
        -                        token_get_dval(p_token_next) +
        -                        token_get_dval(p_token_store));
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) +
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         array_append(p_token_store->p_array,
        -                      p_token_next->p_array);
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_SUB:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        token_get_ival(p_token_next) -
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token_store,
        -                        token_get_dval(p_token_next) -
        -                        token_get_dval(p_token_store));
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) -
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("TT_ARRAY - TT_ARRAY not yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_MULT:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        token_get_ival(p_token_next) *
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token_store,
        -                        token_get_dval(p_token_next) *
        -                        token_get_dval(p_token_store));
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) *
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("TT_ARRAY * TT_ARRAY not yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_DIV:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) /
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token_store,
        -                        token_get_dval(p_token_next) /
        -                        token_get_dval(p_token_store));
        -         break;
        -      case TT_STRING:
        -         token_set_dval(p_token_store,
        -                        atof(token_get_val(p_token_next)) /
        -                        atof(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_DOUBLE);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("TT_ARRAY / TT_ARRAY not yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_EQ:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) ==
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) ==
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) == 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("TT_ARRAY eq TT_ARRAY not yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_NEQ:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) !=
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) !=
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) != 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_LE:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) <=
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) <=
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) <= 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_GE:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) >=
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) >=
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) >= 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_LT:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) <
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) <
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) < 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_GT:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) >
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        token_get_dval(p_token_next) >
        -                        token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        strcmp(token_get_val(p_token_next),
        -                               token_get_val(p_token_store)) > 0);
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_AND:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) &
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) &
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) &
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_OR:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) |
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) |
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) |
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_XOR:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) ^
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) ^
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) ^
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_LSHIFT:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) <<
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) <<
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) <<
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -   case TT_RSHIFT:
        -      switch (tt_highest) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_ival(p_token_next) >>
        -                        token_get_ival(p_token_store));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_ival(p_token_store,
        -                        (int) token_get_dval(p_token_next) >>
        -                        (int) token_get_dval(p_token_store));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token_store,
        -                        atoi(token_get_val(p_token_next)) >>
        -                        atoi(token_get_val(p_token_store)));
        -         token_set_tt(p_token_store, TT_INTEGER);
        -         break;
        -      case TT_ARRAY:
        -         ERROR("ARRAY bla yet implemented");
        -         break;
        -         NO_DEFAULT;
        -      }
        -      break;
        -
        -   default:
        -      _FUNCTION_ERROR("No such function/operator", p_token_op);
        -   }
        -
        -#ifdef DEBUG_FUNCTION_PROCESS
        -   token_print(p_token_store);
        -   printf("\n\n");
        -#endif /* DEBUG_FUNCTION_PROCESS */
        -
        -   token_delete(p_token_next);
        -}
        -
        -void
        -function_process(Interpret *p_interpret, Token *p_token_op,
        -                 Token *p_token_op2, Stack *p_stack_args, int i_args) {
        -
        -   Token *p_token_store = token_new_copy(stack_pop(p_stack_args));
        -
        -   for (int i = 0; i < i_args -1 && !stack_empty(p_stack_args); ++i) {
        -      Token *p_token_next = stack_pop(p_stack_args);
        -
        -      _process(p_interpret, p_token_store, p_token_op,
        -               p_token_op2, p_token_next);
        -   }
        -
        -   stack_push(p_stack_args, p_token_store);
        -}
        -
        -_Bool
        -function_is_buildin(Token *p_token_ident) {
        -   /* TODO: optimize this function */
        -   if (strcmp("assert", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("decr", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("double", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("end", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("exit", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("fork", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("gc", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("incr", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("ind", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("integer", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("len", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("ln", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("neg", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("no", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("put", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("scope", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("say", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("string", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("yes", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("not", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   if (strcmp("refs", token_get_val(p_token_ident)) == 0)
        -      return (true);
        -
        -   return (false);
        -}
        -
        -void
        -function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
        -                         Stack *p_stack_args) {
        -
        -   Token *p_token = stack_top(p_stack_args);
        -
        -   if (token_get_tt(p_token) == TT_ARRAY) {
        -	  if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        -		 stack_pop(p_stack_args);
        -         stack_push(p_stack_args,
        -			   token_new_integer(array_get_used(p_token->p_array)));
        -
        -	  } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        -		 stack_pop(p_stack_args);
        -         stack_push(p_stack_args,
        -			   token_new_integer(array_get_ind(p_token->p_array)));
        -
        -	  } else {
        -      ArrayIterator *p_iter = arrayiterator_new(p_token->p_array);
        -
        -      while (arrayiterator_has_next(p_iter)) {
        -         stack_push(p_stack_args, arrayiterator_next(p_iter));
        -         function_process_buildin(p_interpret, p_token_ident,
        -                                  p_stack_args);
        -         stack_pop(p_stack_args);
        -      }
        -
        -      arrayiterator_delete(p_iter);
        -	  }
        -
        -      return;
        -   }
        -
        -   if (strcmp("assert", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      switch (token_get_tt(p_token)) {
        -      case TT_INTEGER:
        -         if (token_get_ival(p_token) == 0)
        -            _FUNCTION_ERROR("Assert failed", p_token);
        -         break;
        -      case TT_DOUBLE:
        -         if (token_get_dval(p_token) == 0)
        -            _FUNCTION_ERROR("Assert failed", p_token);
        -         break;
        -      case TT_STRING:
        -         if (atoi(token_get_val(p_token)) == 0)
        -            _FUNCTION_ERROR("Assert failed", p_token);
        -         break;
        -         NO_DEFAULT;
        -      }
        -
        -   } else if (strcmp("decr", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      switch (token_get_tt(p_token)) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token, token_get_ival(p_token) - 1);
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token, token_get_dval(p_token) - 1);
        -         break;
        -      case TT_STRING:
        -         convert_to_integer(p_token);
        -         token_set_ival(p_token, token_get_ival(p_token) - 1);
        -         break;
        -         NO_DEFAULT;
        -      }
        -
        -   } else if (strcmp("double", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      convert_to_double(p_token);
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("end", token_get_val(p_token_ident)) == 0) {
        -      exit(0);
        -
        -   } else if (strcmp("fork", token_get_val(p_token_ident)) == 0) {
        -      Token *p_token = token_new_integer((int) fork());
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("gc", token_get_val(p_token_ident)) == 0) {
        -      int i_count = garbage_collect();
        -      Token *p_token = token_new_integer(i_count);
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("exit", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      p_token = token_new_copy(p_token);
        -      convert_to_integer(p_token);
        -      exit(token_get_ival(p_token));
        -
        -   } else if (strcmp("incr", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      switch (token_get_tt(p_token)) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token, token_get_ival(p_token) + 1);
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token, token_get_dval(p_token) + 1);
        -         break;
        -      case TT_STRING:
        -         convert_to_integer(p_token);
        -         token_set_ival(p_token, token_get_ival(p_token) + 1);
        -         break;
        -         NO_DEFAULT;
        -      }
        -
        -   } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        -		 _FUNCTION_ERROR("Expected array", p_token_ident);
        -
        -   } else if (strcmp("integer", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      convert_to_integer(p_token);
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      convert_to_string(p_token);
        -	  token_set_tt(p_token, TT_INTEGER);
        -      token_set_ival(p_token, strlen(token_get_val(p_token)));
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("ln", token_get_val(p_token_ident)) == 0) {
        -      printf("\n");
        -
        -   } else if (strcmp("neg", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      stack_push(p_stack_args, p_token);
        -
        -      switch (token_get_tt(p_token)) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token, -token_get_ival(p_token));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token, -token_get_dval(p_token));
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token, -atoi(token_get_val(p_token)));
        -         token_set_tt(p_token, TT_INTEGER);
        -         break;
        -         NO_DEFAULT;
        -      }
        -
        -   } else if (strcmp("no", token_get_val(p_token_ident)) == 0) {
        -      Token *p_token = NULL;
        -
        -      if (0 == stack_size(p_stack_args)) {
        -         p_token = token_new_integer(0);
        -
        -      } else {
        -         p_token = token_new_copy(stack_pop(p_stack_args));
        -
        -         switch (token_get_tt(p_token)) {
        -         case TT_INTEGER:
        -            token_set_ival(p_token, !token_get_ival(p_token));
        -            break;
        -         case TT_DOUBLE:
        -            token_set_dval(p_token, !token_get_dval(p_token));
        -            break;
        -         case TT_STRING:
        -            token_set_ival(p_token, !atoi(token_get_val(p_token)));
        -            token_set_tt(p_token, TT_INTEGER);
        -            break;
        -            NO_DEFAULT;
        -         }
        -      }
        -
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("put", token_get_val(p_token_ident)) == 0) {
        -      StackIterator *p_iter = stackiterator_new(p_stack_args);
        -      while (stackiterator_has_next(p_iter)) {
        -         Token *p_token = stackiterator_next(p_iter);
        -         switch (token_get_tt(p_token)) {
        -         case TT_INTEGER:
        -            printf("%d", token_get_ival(p_token));
        -            break;
        -         case TT_DOUBLE:
        -            printf("%f", token_get_dval(p_token));
        -            break;
        -         case TT_STRING:
        -            printf("%s", token_get_val(p_token));
        -            break;
        -            NO_DEFAULT;
        -         }
        -      }
        -      stackiterator_delete(p_iter);
        -
        -   } else if (strcmp("scope", token_get_val(p_token_ident)) == 0) {
        -      scope_print(p_interpret->p_scope);
        -
        -   } else if (strcmp("say", token_get_val(p_token_ident)) == 0) {
        -      StackIterator *p_iter = stackiterator_new(p_stack_args);
        -      while (stackiterator_has_next(p_iter)) {
        -         Token *p_token = stackiterator_next(p_iter);
        -         switch (token_get_tt(p_token)) {
        -         case TT_INTEGER:
        -            printf("%d", token_get_ival(p_token));
        -            break;
        -         case TT_DOUBLE:
        -            printf("%f", token_get_dval(p_token));
        -            break;
        -         case TT_STRING:
        -            printf("%s", token_get_val(p_token));
        -            break;
        -         }
        -      }
        -      stackiterator_delete(p_iter);
        -      printf("\n");
        -
        -   } else if (strcmp("string", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      convert_to_string(p_token);
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("yes", token_get_val(p_token_ident)) == 0) {
        -      Token *p_token = NULL;
        -
        -      if (0 == stack_size(p_stack_args)) {
        -         p_token = token_new_integer(1);
        -
        -      } else {
        -         p_token = token_new_copy(stack_pop(p_stack_args));
        -         token_set_ival(p_token, 1);
        -         token_set_tt(p_token, TT_INTEGER);
        -
        -      }
        -
        -      stack_push(p_stack_args, p_token);
        -
        -   } else if (strcmp("not", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        -      stack_push(p_stack_args, p_token);
        -
        -      switch (token_get_tt(p_token)) {
        -      case TT_INTEGER:
        -         token_set_ival(p_token, !token_get_ival(p_token));
        -         break;
        -      case TT_DOUBLE:
        -         token_set_dval(p_token, !token_get_dval(p_token));
        -         break;
        -      case TT_STRING:
        -         token_set_ival(p_token, !atoi(token_get_val(p_token)));
        -         token_set_tt(p_token, TT_INTEGER);
        -         break;
        -         NO_DEFAULT;
        -      }
        -
        -   } else if (strcmp("refs", token_get_val(p_token_ident)) == 0) {
        -      if (0 == stack_size(p_stack_args))
        -         _FUNCTION_ERROR("No argument given", p_token_ident);
        -
        -      Token *p_token_top = stack_pop(p_stack_args);
        -      Token *p_token = token_new_integer(p_token_top->i_ref_count);
        -      stack_push(p_stack_args, p_token);
        -   }
        -}
        -
        -_Bool
        -function_is_self_defined(Interpret *p_interpret) {
        -   Symbol *p_symbol = scope_get(p_interpret->p_scope,
        -                                token_get_val(p_interpret->p_token));
        -
        -   if (p_symbol == NULL)
        -      return (false);
        -
        -   switch (symbol_get_sym(p_symbol)) {
        -   case SYM_PROCEDURE:
        -   case SYM_FUNCTION:
        -      return (true);
        -      NO_DEFAULT;
        -   }
        -
        -   return (false);
        +   return (p_function);
         }
         
         void
        -function_process_self_defined(Interpret *p_interpret, Token *p_token_ident) {
        -   Symbol *p_symbol = scope_get(p_interpret->p_scope,
        -                                token_get_val(p_token_ident));
        -
        -   switch (symbol_get_sym(p_symbol)) {
        -   case SYM_PROCEDURE:
        -   {
        -      List *p_list_token = symbol_get_val(p_symbol);
        -      interpret_subprocess(p_interpret, p_list_token);
        -   }
        -   break;
        -   case SYM_FUNCTION:
        -   {
        -      List *p_list_token = symbol_get_val(p_symbol);
        -      scope_up(p_interpret->p_scope);
        -      interpret_subprocess(p_interpret, p_list_token);
        -      scope_down(p_interpret->p_scope);
        -   }
        -   NO_DEFAULT;
        -   }
        +function_delete(Function *p_function) {
        +   free(p_function);
         }
         
        diff --git a/src/core/function.h b/src/core/function.h
        index 2e3e72e..c07f609 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -35,19 +35,11 @@
         #ifndef FUNCTION_H
         #define FUNCTION_H
         
        -#include "token.h"
        +typedef struct {
        +   char *c_name;
        +} Function;
         
        -#include "interpret.h"
        -#include "../data/stack.h"
        -
        -void function_process(Interpret *p_interp, Token *p_token_op,
        -                      Token *p_token_op2, Stack *p_stack_args, int i_args);
        -_Bool function_is_buildin(Token *p_token_ident);
        -void function_process_buildin(Interpret *p_interpret,
        -                              Token *p_token_ident,
        -                              Stack *p_stack_args);
        -_Bool function_is_self_defined(Interpret *p_interpret);
        -void function_process_self_defined(Interpret *p_interpret,
        -                                   Token *p_token_ident);
        +Function* function_new();
        +void function_delete(Function *p_function);
         
         #endif /* FUNCTION_H */
        diff --git a/src/core/functions.c b/src/core/functions.c
        new file mode 100644
        index 0000000..b2d0b0c
        --- /dev/null
        +++ b/src/core/functions.c
        @@ -0,0 +1,984 @@
        +/*:*
        + *: File: ./src/core/function.c
        + *: A simple interpreter
        + *:
        + *: WWW		: http://fype.buetow.org
        + *: E-Mail	: fype@dev.buetow.org
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: All rights reserved.
        + *:
        + *: Redistribution and use in source and binary forms, with or without modi-
        + *: fication, are permitted provided that the following conditions are met:
        + *:  * Redistributions of source code must retain the above copyright
        + *:    notice, this list of conditions and the following disclaimer.
        + *:  * Redistributions in binary form must reproduce the above copyright
        + *:    notice, this list of conditions and the following disclaimer in the
        + *:    documentation and/or other materials provided with the distribution.
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
        + *:    without specific prior written permission.
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: POSSIBILITY OF SUCH DAMAGE.
        + *:*/
        +
        +#include 
        +#include 
        +#include 
        +
        +#include "functions.h"
        +
        +#include "convert.h"
        +#include "scope.h"
        +#include "symbol.h"
        +
        +#define _FUNCTIONS_ERROR(m,t) \
        +	 ERROR(\
        +		"%s: Function error in %s line %d pos %d near '%s'", m, \
        +		token_get_filename(t), \
        +		token_get_line_nr(t), \
        +		token_get_pos_nr(t), \
        +		token_get_val(t) \
        +		)
        +
        +Functions*
        +functions_new() {
        +   Functions *p_functions = malloc(sizeof(Functions));
        +
        +   p_functions->p_hash_functions = hash_new(1024);
        +   functions_init(p_functions);
        +
        +   return (p_functions);
        +}
        +
        +void
        +functions_delete(Functions *p_functions) {
        +   hash_delete(p_functions->p_hash_functions);
        +   free(p_functions);
        +}
        +
        +
        +void
        +_process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
        +         Token *p_token_op2, Token *p_token_next) {
        +
        +   TokenType tt_op = token_get_tt(p_token_op);
        +   TokenType tt_op2 = p_token_op2 == NULL
        +                      ? TT_NONE
        +                      : token_get_tt(p_token_op2);
        +
        +#ifdef DEBUG_FUNCTION_PROCESS
        +   if (p_token_op2 == NULL)
        +      printf("DEBUG::FUNCTION::PROCESS: Operator %s\n", tt_get_name(tt_op));
        +   else
        +      printf("DEBUG::FUNCTION::PROCESS: Operator %s %s\n", tt_get_name(tt_op),
        +             tt_get_name(tt_op2));
        +
        +   token_print(p_token_next);
        +   printf("\n");
        +   token_print(p_token_store);
        +   printf("\n");
        +#endif /* DEBUG_FUNCTION_PROCESS */
        +
        +   if (p_token_op2 != NULL) {
        +      switch (tt_op) {
        +      case TT_NOT:
        +         switch (tt_op2) {
        +         case TT_ASSIGN:
        +            tt_op = TT_NEQ;
        +            break;
        +         default:
        +            break;
        +         }
        +         break;
        +      case TT_ASSIGN:
        +         switch (tt_op2) {
        +         case TT_ASSIGN:
        +            tt_op = TT_EQ;
        +            break;
        +         default:
        +            break;
        +         }
        +         break;
        +      case TT_LT:
        +         switch (tt_op2) {
        +         case TT_ASSIGN:
        +            tt_op = TT_LE;
        +            break;
        +         default:
        +            break;
        +         }
        +         break;
        +      case TT_GT:
        +         switch (tt_op2) {
        +         case TT_ASSIGN:
        +            tt_op = TT_GE;
        +            break;
        +         default:
        +            break;
        +         }
        +         break;
        +      case TT_DDOT:
        +         switch (tt_op2) {
        +         case TT_LT:
        +            tt_op = TT_LSHIFT;
        +            break;
        +         case TT_GT:
        +            tt_op = TT_RSHIFT;
        +            break;
        +         default:
        +            break;
        +         }
        +         break;
        +      default:
        +         break;
        +      }
        +   } else {
        +      switch (tt_op) {
        +      case TT_ASSIGN:
        +      {
        +         Token *p_token_assign = p_interpret->p_token_temp;
        +         TokenType tt_assign = token_get_tt(p_token_assign);
        +
        +         if (tt_assign != TT_IDENT) {
        +            _FUNCTIONS_ERROR("Can only assign to symbols",
        +                            p_token_store);
        +         }
        +
        +         Symbol *p_symbol = scope_get(p_interpret->p_scope,
        +                                      token_get_val(p_token_assign));
        +
        +         if (p_symbol == NULL) {
        +            _FUNCTIONS_ERROR("No such symbol",
        +                            p_token_assign);
        +         }
        +
        +         symbol_set_val(p_symbol, p_token_store);
        +         symbol_set_sym(p_symbol, SYM_VARIABLE);
        +
        +         return;
        +      }
        +
        +      break;
        +      NO_DEFAULT;
        +      }
        +   }
        +
        +   p_token_next = token_new_copy(p_token_next);
        +   TokenType tt_highest = convert_to_highest(p_token_store, p_token_next);
        +
        +#ifdef DEBUG_FUNCTION_PROCESS
        +   printf("DEBUG::FUNCTION::PROCESS: ===> %s %s %s\n",
        +          tt_get_name(tt_highest),
        +          tt_get_name(tt_op),
        +          tt_get_name(tt_highest));
        +#endif /* DEBUG_FUNCTION_PROCESS */
        +
        +   switch (tt_op) {
        +   case TT_ADD:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        token_get_ival(p_token_next) +
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token_store,
        +                        token_get_dval(p_token_next) +
        +                        token_get_dval(p_token_store));
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) +
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         array_append(p_token_store->p_array,
        +                      p_token_next->p_array);
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_SUB:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        token_get_ival(p_token_next) -
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token_store,
        +                        token_get_dval(p_token_next) -
        +                        token_get_dval(p_token_store));
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) -
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY - TT_ARRAY not yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_MULT:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        token_get_ival(p_token_next) *
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token_store,
        +                        token_get_dval(p_token_next) *
        +                        token_get_dval(p_token_store));
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) *
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY * TT_ARRAY not yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_DIV:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) /
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token_store,
        +                        token_get_dval(p_token_next) /
        +                        token_get_dval(p_token_store));
        +         break;
        +      case TT_STRING:
        +         token_set_dval(p_token_store,
        +                        atof(token_get_val(p_token_next)) /
        +                        atof(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_DOUBLE);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY / TT_ARRAY not yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_EQ:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) ==
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) ==
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) == 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("TT_ARRAY eq TT_ARRAY not yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_NEQ:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) !=
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) !=
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) != 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_LE:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) <=
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) <=
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) <= 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_GE:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) >=
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) >=
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) >= 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_LT:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) <
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) <
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) < 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_GT:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) >
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        token_get_dval(p_token_next) >
        +                        token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        strcmp(token_get_val(p_token_next),
        +                               token_get_val(p_token_store)) > 0);
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_AND:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) &
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) &
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) &
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_OR:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) |
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) |
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) |
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_XOR:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) ^
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) ^
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) ^
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_LSHIFT:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) <<
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) <<
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) <<
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +   case TT_RSHIFT:
        +      switch (tt_highest) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_ival(p_token_next) >>
        +                        token_get_ival(p_token_store));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_ival(p_token_store,
        +                        (int) token_get_dval(p_token_next) >>
        +                        (int) token_get_dval(p_token_store));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token_store,
        +                        atoi(token_get_val(p_token_next)) >>
        +                        atoi(token_get_val(p_token_store)));
        +         token_set_tt(p_token_store, TT_INTEGER);
        +         break;
        +      case TT_ARRAY:
        +         ERROR("ARRAY bla yet implemented");
        +         break;
        +         NO_DEFAULT;
        +      }
        +      break;
        +
        +   default:
        +      _FUNCTIONS_ERROR("No such function/operator", p_token_op);
        +   }
        +
        +#ifdef DEBUG_FUNCTION_PROCESS
        +   token_print(p_token_store);
        +   printf("\n\n");
        +#endif /* DEBUG_FUNCTION_PROCESS */
        +
        +   token_delete(p_token_next);
        +}
        +
        +void
        +function_process(Interpret *p_interpret, Token *p_token_op,
        +                 Token *p_token_op2, Stack *p_stack_args, int i_args) {
        +
        +   Token *p_token_store = token_new_copy(stack_pop(p_stack_args));
        +
        +   for (int i = 0; i < i_args -1 && !stack_empty(p_stack_args); ++i) {
        +      Token *p_token_next = stack_pop(p_stack_args);
        +
        +      _process(p_interpret, p_token_store, p_token_op,
        +               p_token_op2, p_token_next);
        +   }
        +
        +   stack_push(p_stack_args, p_token_store);
        +}
        +
        +_Bool
        +function_is_buildin(Token *p_token_ident) {
        +   /* TODO: optimize this function */
        +   if (strcmp("assert", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("decr", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("double", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("end", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("exit", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("fork", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("gc", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("incr", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("ind", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("integer", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("len", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("ln", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("neg", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("no", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("put", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("scope", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("say", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("string", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("yes", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("not", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   if (strcmp("refs", token_get_val(p_token_ident)) == 0)
        +      return (true);
        +
        +   return (false);
        +}
        +
        +void
        +function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
        +                         Stack *p_stack_args) {
        +
        +   Token *p_token = stack_top(p_stack_args);
        +
        +   if (token_get_tt(p_token) == TT_ARRAY) {
        +      if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        +         stack_pop(p_stack_args);
        +         stack_push(p_stack_args,
        +                    token_new_integer(array_get_used(p_token->p_array)));
        +
        +      } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        +         stack_pop(p_stack_args);
        +         stack_push(p_stack_args,
        +                    token_new_integer(array_get_ind(p_token->p_array)));
        +
        +      } else {
        +         ArrayIterator *p_iter = arrayiterator_new(p_token->p_array);
        +
        +         while (arrayiterator_has_next(p_iter)) {
        +            stack_push(p_stack_args, arrayiterator_next(p_iter));
        +            function_process_buildin(p_interpret, p_token_ident,
        +                                     p_stack_args);
        +            stack_pop(p_stack_args);
        +         }
        +
        +         arrayiterator_delete(p_iter);
        +      }
        +
        +      return;
        +   }
        +
        +   if (strcmp("assert", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      switch (token_get_tt(p_token)) {
        +      case TT_INTEGER:
        +         if (token_get_ival(p_token) == 0)
        +            _FUNCTIONS_ERROR("Assert failed", p_token);
        +         break;
        +      case TT_DOUBLE:
        +         if (token_get_dval(p_token) == 0)
        +            _FUNCTIONS_ERROR("Assert failed", p_token);
        +         break;
        +      case TT_STRING:
        +         if (atoi(token_get_val(p_token)) == 0)
        +            _FUNCTIONS_ERROR("Assert failed", p_token);
        +         break;
        +         NO_DEFAULT;
        +      }
        +
        +   } else if (strcmp("decr", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      switch (token_get_tt(p_token)) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token, token_get_ival(p_token) - 1);
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token, token_get_dval(p_token) - 1);
        +         break;
        +      case TT_STRING:
        +         convert_to_integer(p_token);
        +         token_set_ival(p_token, token_get_ival(p_token) - 1);
        +         break;
        +         NO_DEFAULT;
        +      }
        +
        +   } else if (strcmp("double", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      convert_to_double(p_token);
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("end", token_get_val(p_token_ident)) == 0) {
        +      exit(0);
        +
        +   } else if (strcmp("fork", token_get_val(p_token_ident)) == 0) {
        +      Token *p_token = token_new_integer((int) fork());
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("gc", token_get_val(p_token_ident)) == 0) {
        +      int i_count = garbage_collect();
        +      Token *p_token = token_new_integer(i_count);
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("exit", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      p_token = token_new_copy(p_token);
        +      convert_to_integer(p_token);
        +      exit(token_get_ival(p_token));
        +
        +   } else if (strcmp("incr", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      switch (token_get_tt(p_token)) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token, token_get_ival(p_token) + 1);
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token, token_get_dval(p_token) + 1);
        +         break;
        +      case TT_STRING:
        +         convert_to_integer(p_token);
        +         token_set_ival(p_token, token_get_ival(p_token) + 1);
        +         break;
        +         NO_DEFAULT;
        +      }
        +
        +   } else if (strcmp("ind", token_get_val(p_token_ident)) == 0) {
        +      _FUNCTIONS_ERROR("Expected array", p_token_ident);
        +
        +   } else if (strcmp("integer", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      convert_to_integer(p_token);
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("len", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      convert_to_string(p_token);
        +      token_set_tt(p_token, TT_INTEGER);
        +      token_set_ival(p_token, strlen(token_get_val(p_token)));
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("ln", token_get_val(p_token_ident)) == 0) {
        +      printf("\n");
        +
        +   } else if (strcmp("neg", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      stack_push(p_stack_args, p_token);
        +
        +      switch (token_get_tt(p_token)) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token, -token_get_ival(p_token));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token, -token_get_dval(p_token));
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token, -atoi(token_get_val(p_token)));
        +         token_set_tt(p_token, TT_INTEGER);
        +         break;
        +         NO_DEFAULT;
        +      }
        +
        +   } else if (strcmp("no", token_get_val(p_token_ident)) == 0) {
        +      Token *p_token = NULL;
        +
        +      if (0 == stack_size(p_stack_args)) {
        +         p_token = token_new_integer(0);
        +
        +      } else {
        +         p_token = token_new_copy(stack_pop(p_stack_args));
        +
        +         switch (token_get_tt(p_token)) {
        +         case TT_INTEGER:
        +            token_set_ival(p_token, !token_get_ival(p_token));
        +            break;
        +         case TT_DOUBLE:
        +            token_set_dval(p_token, !token_get_dval(p_token));
        +            break;
        +         case TT_STRING:
        +            token_set_ival(p_token, !atoi(token_get_val(p_token)));
        +            token_set_tt(p_token, TT_INTEGER);
        +            break;
        +            NO_DEFAULT;
        +         }
        +      }
        +
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("put", token_get_val(p_token_ident)) == 0) {
        +      StackIterator *p_iter = stackiterator_new(p_stack_args);
        +      while (stackiterator_has_next(p_iter)) {
        +         Token *p_token = stackiterator_next(p_iter);
        +         switch (token_get_tt(p_token)) {
        +         case TT_INTEGER:
        +            printf("%d", token_get_ival(p_token));
        +            break;
        +         case TT_DOUBLE:
        +            printf("%f", token_get_dval(p_token));
        +            break;
        +         case TT_STRING:
        +            printf("%s", token_get_val(p_token));
        +            break;
        +            NO_DEFAULT;
        +         }
        +      }
        +      stackiterator_delete(p_iter);
        +
        +   } else if (strcmp("scope", token_get_val(p_token_ident)) == 0) {
        +      scope_print(p_interpret->p_scope);
        +
        +   } else if (strcmp("say", token_get_val(p_token_ident)) == 0) {
        +      StackIterator *p_iter = stackiterator_new(p_stack_args);
        +      while (stackiterator_has_next(p_iter)) {
        +         Token *p_token = stackiterator_next(p_iter);
        +         switch (token_get_tt(p_token)) {
        +         case TT_INTEGER:
        +            printf("%d", token_get_ival(p_token));
        +            break;
        +         case TT_DOUBLE:
        +            printf("%f", token_get_dval(p_token));
        +            break;
        +         case TT_STRING:
        +            printf("%s", token_get_val(p_token));
        +            break;
        +         }
        +      }
        +      stackiterator_delete(p_iter);
        +      printf("\n");
        +
        +   } else if (strcmp("string", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      convert_to_string(p_token);
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("yes", token_get_val(p_token_ident)) == 0) {
        +      Token *p_token = NULL;
        +
        +      if (0 == stack_size(p_stack_args)) {
        +         p_token = token_new_integer(1);
        +
        +      } else {
        +         p_token = token_new_copy(stack_pop(p_stack_args));
        +         token_set_ival(p_token, 1);
        +         token_set_tt(p_token, TT_INTEGER);
        +
        +      }
        +
        +      stack_push(p_stack_args, p_token);
        +
        +   } else if (strcmp("not", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token = token_new_copy(stack_pop(p_stack_args));
        +      stack_push(p_stack_args, p_token);
        +
        +      switch (token_get_tt(p_token)) {
        +      case TT_INTEGER:
        +         token_set_ival(p_token, !token_get_ival(p_token));
        +         break;
        +      case TT_DOUBLE:
        +         token_set_dval(p_token, !token_get_dval(p_token));
        +         break;
        +      case TT_STRING:
        +         token_set_ival(p_token, !atoi(token_get_val(p_token)));
        +         token_set_tt(p_token, TT_INTEGER);
        +         break;
        +         NO_DEFAULT;
        +      }
        +
        +   } else if (strcmp("refs", token_get_val(p_token_ident)) == 0) {
        +      if (0 == stack_size(p_stack_args))
        +         _FUNCTIONS_ERROR("No argument given", p_token_ident);
        +
        +      Token *p_token_top = stack_pop(p_stack_args);
        +      Token *p_token = token_new_integer(p_token_top->i_ref_count);
        +      stack_push(p_stack_args, p_token);
        +   }
        +}
        +
        +_Bool
        +function_is_self_defined(Interpret *p_interpret) {
        +   Symbol *p_symbol = scope_get(p_interpret->p_scope,
        +                                token_get_val(p_interpret->p_token));
        +
        +   if (p_symbol == NULL)
        +      return (false);
        +
        +   switch (symbol_get_sym(p_symbol)) {
        +   case SYM_PROCEDURE:
        +   case SYM_FUNCTION:
        +      return (true);
        +      NO_DEFAULT;
        +   }
        +
        +   return (false);
        +}
        +
        +void
        +function_process_self_defined(Interpret *p_interpret, Token *p_token_ident) {
        +   Symbol *p_symbol = scope_get(p_interpret->p_scope,
        +                                token_get_val(p_token_ident));
        +
        +   switch (symbol_get_sym(p_symbol)) {
        +   case SYM_PROCEDURE:
        +   {
        +      List *p_list_token = symbol_get_val(p_symbol);
        +      interpret_subprocess(p_interpret, p_list_token);
        +   }
        +   break;
        +   case SYM_FUNCTION:
        +   {
        +      List *p_list_token = symbol_get_val(p_symbol);
        +      scope_up(p_interpret->p_scope);
        +      interpret_subprocess(p_interpret, p_list_token);
        +      scope_down(p_interpret->p_scope);
        +   }
        +   NO_DEFAULT;
        +   }
        +}
        +
        +void
        +functions_init(Functions *p_functions) {
        +}
        diff --git a/src/core/functions.h b/src/core/functions.h
        new file mode 100644
        index 0000000..637a655
        --- /dev/null
        +++ b/src/core/functions.h
        @@ -0,0 +1,63 @@
        +/*:*
        + *: File: ./src/core/function.h
        + *: A simple interpreter
        + *:
        + *: WWW		: http://fype.buetow.org
        + *: E-Mail	: fype@dev.buetow.org
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: All rights reserved.
        + *:
        + *: Redistribution and use in source and binary forms, with or without modi-
        + *: fication, are permitted provided that the following conditions are met:
        + *:  * Redistributions of source code must retain the above copyright
        + *:    notice, this list of conditions and the following disclaimer.
        + *:  * Redistributions in binary form must reproduce the above copyright
        + *:    notice, this list of conditions and the following disclaimer in the
        + *:    documentation and/or other materials provided with the distribution.
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
        + *:    without specific prior written permission.
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: POSSIBILITY OF SUCH DAMAGE.
        + *:*/
        +
        +#ifndef FUNCTIONS_H
        +#define FUNCTIONS_H
        +
        +#include "token.h"
        +
        +#include "interpret.h"
        +#include "../data/stack.h"
        +#include "../data/hash.h"
        +
        +typedef struct {
        +   Hash *p_hash_functions;
        +} Functions;
        +
        +Functions* functions_new();
        +void functions_delete(Functions *p_functions);
        +void functions_init(Functions *p_functions);
        +
        +void function_process(Interpret *p_interp, Token *p_token_op,
        +                      Token *p_token_op2, Stack *p_stack_args, 
        +					  int i_args);
        +_Bool function_is_buildin(Token *p_token_ident);
        +void function_process_buildin(Interpret *p_interpret,
        +                              Token *p_token_ident,
        +                              Stack *p_stack_args);
        +_Bool function_is_self_defined(Interpret *p_interpret);
        +void function_process_self_defined(Interpret *p_interpret,
        +                                   Token *p_token_ident);
        +
        +#endif /* FUNCTIONS_H */
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 65e5fee..2853fa8 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -36,7 +36,7 @@
         
         #include "../defines.h"
         #include "convert.h"
        -#include "function.h"
        +#include "functions.h"
         #include "symbol.h"
         
         #define _INTERPRET_ERROR(m,t) \
        @@ -467,7 +467,7 @@ _expression(Interpret *p_interpret) {
            _CHECK TRACK
         
            if (_expression_(p_interpret)) {
        -	  TokenType tt = p_interpret->tt;
        +      TokenType tt = p_interpret->tt;
               if (tt == TT_SEMICOLON || tt == TT_NONE) {
                  _NEXT
         
        @@ -806,13 +806,13 @@ _term(Interpret *p_interpret) {
            case TT_DOUBLE:
            case TT_ARRAY:
               stack_push(p_interpret->p_stack, p_interpret->p_token);
        -	  // Checks if the term is the last element of an array 
        -	  //	say ["element"] # The "element"
        -	  // or of a function
        -	  // 	func foo { say 1 } # The 1
        -	  if (_NEXT_TT != TT_PARANT_AR && _NEXT_TT != TT_PARANT_CR) 
        -		 _NEXT
        -      return (1);
        +      // Checks if the term is the last element of an array
        +      //	say ["element"] # The "element"
        +      // or of a function
        +      // 	func foo { say 1 } # The 1
        +      if (_NEXT_TT != TT_PARANT_AR && _NEXT_TT != TT_PARANT_CR)
        +         _NEXT
        +         return (1);
         
            case TT_IDENT:
            {
        @@ -975,7 +975,7 @@ _term(Interpret *p_interpret) {
         
                     array_unshift(p_array, stack_pop(p_interpret->p_stack));
                  }
        -		 
        +
                  _NEXT
               }
         
        diff --git a/tags b/tags
        index 38492ee..271e21f 100644
        --- a/tags
        +++ b/tags
        @@ -1,7 +1,7 @@
         CASE	./src/core/token.c	/^#define CASE(t,r) case t: return r;$/
         CHECK	./src/core/token.c	/^#define CHECK(...) if (!strcmp(c_token, __VA_ARGS_/
         Mmain	./src/main.c	/^main(int i_argc, char **pc_argv) {$/
        -_FUNCTION_ERROR	./src/core/function.c	/^#define _FUNCTION_ERROR(m,t) \\$/
        +_FUNCTIONS_ERROR	./src/core/functions.c	/^#define _FUNCTIONS_ERROR(m,t) \\$/
         _GARBAGE_ERROR	./src/core/garbage.c	/^#define _GARBAGE_ERROR(m) \\$/
         _Garbage	./src/core/garbage.c	/^} _Garbage;$/
         _INTERPRET_ERROR	./src/core/interpret.c	/^#define _INTERPRET_ERROR(m,t) \\$/
        @@ -21,7 +21,7 @@ _next	./src/core/interpret.c	/^_next(Interpret *p_interpret) {$/
         _next_tt	./src/core/interpret.c	/^_next_tt(Interpret *p_interpret) {$/
         _print_lookahead	./src/core/interpret.c	/^_print_lookahead(Interpret *p_interpret) {$/
         _proc_decl	./src/core/interpret.c	/^_proc_decl(Interpret *p_interpret) {$/
        -_process	./src/core/function.c	/^_process(Interpret *p_interpret, Token *p_token_st/
        +_process	./src/core/functions.c	/^_process(Interpret *p_interpret, Token *p_token_st/
         _product	./src/core/interpret.c	/^_product(Interpret *p_interpret) {$/
         _product2	./src/core/interpret.c	/^_product2(Interpret *p_interpret) {$/
         _program	./src/core/interpret.c	/^_program(Interpret *p_interpret) {$/
        @@ -108,11 +108,16 @@ datiter_new	./src/data/dat.c	/^datiter_new(Dat *p_dat) {$/
         datiter_next	./src/data/dat.c	/^datiter_next(DatIter *p_iter) {$/
         datiter_next_t	./src/data/dat.c	/^datiter_next_t(DatIter *p_iter, TYPE *p_type) {$/
         datiter_skip	./src/data/dat.c	/^datiter_skip(DatIter *p_iter, unsigned i_num) {$/
        -function_is_buildin	./src/core/function.c	/^function_is_buildin(Token *p_token_ident) {$/
        -function_is_self_defined	./src/core/function.c	/^function_is_self_defined(Interpret *p_interpret) {/
        -function_process	./src/core/function.c	/^function_process(Interpret *p_interpret, Token *p_/
        -function_process_buildin	./src/core/function.c	/^function_process_buildin(Interpret *p_interpret, T/
        -function_process_self_defined	./src/core/function.c	/^function_process_self_defined(Interpret *p_interpr/
        +function_delete	./src/core/function.c	/^function_delete(Function *p_function) {$/
        +function_is_buildin	./src/core/functions.c	/^function_is_buildin(Token *p_token_ident) {$/
        +function_is_self_defined	./src/core/functions.c	/^function_is_self_defined(Interpret *p_interpret) {/
        +function_new	./src/core/function.c	/^function_new() {$/
        +function_process	./src/core/functions.c	/^function_process(Interpret *p_interpret, Token *p_/
        +function_process_buildin	./src/core/functions.c	/^function_process_buildin(Interpret *p_interpret, T/
        +function_process_self_defined	./src/core/functions.c	/^function_process_self_defined(Interpret *p_interpr/
        +functions_delete	./src/core/functions.c	/^functions_delete(Functions *p_functions) {$/
        +functions_init	./src/core/functions.c	/^functions_init(Functions *p_functions) {$/
        +functions_new	./src/core/functions.c	/^functions_new() {$/
         fype_delete	./src/fype.c	/^fype_delete(Fype *p_fype) {$/
         fype_new	./src/fype.c	/^fype_new() {$/
         fype_run	./src/fype.c	/^fype_run(int i_argc, char **pc_argv) {$/
        diff --git a/test.out b/test.out
        index d568169..0caafb1 100644
        --- a/test.out
        +++ b/test.out
        @@ -2,14 +2,20 @@
          * Examples of how to use arrays
          *#
         
        -# Create a function bar, it returns 0 by default
        +# Create a function bar, returns 0 by default
         func bar { say "bar" } 
         
        -# Create an array foo, print out "bar" 
        -my foo = [bar, 6/2, 3*3, "string", ["_A", ["__BA", "__BB"]];
        +# Create a multi dimensional array foo
        +my foo = [bar, 1, 4/2, double "3", ["A", ["BA", "BB"]]];
         
        -# 
        +# Run on each element of foo recursive 'say'
         say foo;
        +
        +# Print the length of the array
        +assert 5 == say len foo;
        +
        +# Print the last index of the array
        +assert 4 == say ind foo;
         Token (id=00000, line=00006, pos=0005, type=TT_FUNC, val=func, ival=0, dval=0.000000, refs=1)
         Token (id=00001, line=00006, pos=0009, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
         Token (id=00002, line=00006, pos=0011, type=TT_PARANT_CL, val={, ival=0, dval=0.000000, refs=1)
        @@ -22,29 +28,54 @@ Token (id=00008, line=00009, pos=0009, type=TT_ASSIGN, val==, ival=0, dval=0.000
         Token (id=00009, line=00009, pos=0011, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
         Token (id=00010, line=00009, pos=0014, type=TT_IDENT, val=bar, ival=0, dval=0.000000, refs=1)
         Token (id=00011, line=00009, pos=0015, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00012, line=00009, pos=0017, type=TT_INTEGER, val=6, ival=6, dval=0.000000, refs=1)
        -Token (id=00013, line=00009, pos=0018, type=TT_DIV, val=/, ival=0, dval=0.000000, refs=1)
        -Token (id=00014, line=00009, pos=0019, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1)
        -Token (id=00015, line=00009, pos=0020, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00016, line=00009, pos=0022, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1)
        -Token (id=00017, line=00009, pos=0023, type=TT_MULT, val=*, ival=0, dval=0.000000, refs=1)
        -Token (id=00018, line=00009, pos=0024, type=TT_INTEGER, val=3, ival=3, dval=0.000000, refs=1)
        -Token (id=00019, line=00009, pos=0025, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00020, line=00009, pos=0026, type=TT_STRING, val=string, ival=0, dval=0.000000, refs=1)
        -Token (id=00021, line=00009, pos=0028, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00022, line=00009, pos=0030, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        -Token (id=00023, line=00009, pos=0030, type=TT_STRING, val=_A, ival=0, dval=0.000000, refs=1)
        -Token (id=00024, line=00009, pos=0032, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00025, line=00009, pos=0034, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        -Token (id=00026, line=00009, pos=0034, type=TT_STRING, val=__BA, ival=0, dval=0.000000, refs=1)
        -Token (id=00027, line=00009, pos=0036, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        -Token (id=00028, line=00009, pos=0037, type=TT_STRING, val=__BB, ival=0, dval=0.000000, refs=1)
        -Token (id=00029, line=00009, pos=0039, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        -Token (id=00030, line=00009, pos=0039, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00031, line=00009, pos=0040, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        -Token (id=00032, line=00009, pos=0041, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        -Token (id=00033, line=00012, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        -Token (id=00034, line=00012, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        -Token (id=00035, line=00012, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00012, line=00009, pos=0017, type=TT_INTEGER, val=1, ival=1, dval=0.000000, refs=1)
        +Token (id=00013, line=00009, pos=0018, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00014, line=00009, pos=0020, type=TT_INTEGER, val=4, ival=4, dval=0.000000, refs=1)
        +Token (id=00015, line=00009, pos=0021, type=TT_DIV, val=/, ival=0, dval=0.000000, refs=1)
        +Token (id=00016, line=00009, pos=0022, type=TT_INTEGER, val=2, ival=2, dval=0.000000, refs=1)
        +Token (id=00017, line=00009, pos=0023, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00018, line=00009, pos=0030, type=TT_IDENT, val=double, ival=0, dval=0.000000, refs=1)
        +Token (id=00019, line=00009, pos=0031, type=TT_STRING, val=3, ival=0, dval=0.000000, refs=1)
        +Token (id=00020, line=00009, pos=0033, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00021, line=00009, pos=0035, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00022, line=00009, pos=0035, type=TT_STRING, val=A, ival=0, dval=0.000000, refs=1)
        +Token (id=00023, line=00009, pos=0037, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00024, line=00009, pos=0039, type=TT_PARANT_AL, val=[, ival=0, dval=0.000000, refs=1)
        +Token (id=00025, line=00009, pos=0039, type=TT_STRING, val=BA, ival=0, dval=0.000000, refs=1)
        +Token (id=00026, line=00009, pos=0041, type=TT_COMMA, val=,, ival=0, dval=0.000000, refs=1)
        +Token (id=00027, line=00009, pos=0042, type=TT_STRING, val=BB, ival=0, dval=0.000000, refs=1)
        +Token (id=00028, line=00009, pos=0044, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00029, line=00009, pos=0044, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00030, line=00009, pos=0045, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00031, line=00009, pos=0045, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00032, line=00009, pos=0046, type=TT_PARANT_AR, val=], ival=0, dval=0.000000, refs=1)
        +Token (id=00033, line=00009, pos=0047, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00034, line=00012, pos=0004, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00035, line=00012, pos=0008, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00036, line=00012, pos=0009, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00037, line=00015, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1)
        +Token (id=00038, line=00015, pos=0009, type=TT_INTEGER, val=5, ival=5, dval=0.000000, refs=1)
        +Token (id=00039, line=00015, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00040, line=00015, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00041, line=00015, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00042, line=00015, pos=0020, type=TT_IDENT, val=len, ival=0, dval=0.000000, refs=1)
        +Token (id=00043, line=00015, pos=0024, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00044, line=00015, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
        +Token (id=00045, line=00018, pos=0007, type=TT_IDENT, val=assert, ival=0, dval=0.000000, refs=1)
        +Token (id=00046, line=00018, pos=0009, type=TT_INTEGER, val=4, ival=4, dval=0.000000, refs=1)
        +Token (id=00047, line=00018, pos=0011, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00048, line=00018, pos=0012, type=TT_ASSIGN, val==, ival=0, dval=0.000000, refs=1)
        +Token (id=00049, line=00018, pos=0016, type=TT_IDENT, val=say, ival=0, dval=0.000000, refs=1)
        +Token (id=00050, line=00018, pos=0020, type=TT_IDENT, val=ind, ival=0, dval=0.000000, refs=1)
        +Token (id=00051, line=00018, pos=0024, type=TT_IDENT, val=foo, ival=0, dval=0.000000, refs=1)
        +Token (id=00052, line=00018, pos=0025, type=TT_SEMICOLON, val=;, ival=0, dval=0.000000, refs=1)
         bar
        -No such symbol: Interpret error in ./test.fy line 12 pos 8 near 'foo' (Fype @ ./src/core/interpret.c line 874)
        +0
        +1
        +2
        +3.000000
        +A
        +BA
        +BB
        +5
        +4
        -- 
        cgit v1.2.3
        
        
        From 58702680b3ce7d633eb5bccd9691f80456aec6f1 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 13:14:17 +0000
        Subject: new todo
        
        ---
         TODO | 3 ++-
         1 file changed, 2 insertions(+), 1 deletion(-)
        
        diff --git a/TODO b/TODO
        index 520a70f..9e866fa 100644
        --- a/TODO
        +++ b/TODO
        @@ -1,6 +1,7 @@
         Todo's (not in any specific order)
         
        -Arrays
        +Functions should be handled via hash and ptrs not if/else (in progress)
        +Arrays (in progress)
         Closures
         Function arguments and return values
         Interactive shell
        -- 
        cgit v1.2.3
        
        
        From 8dac38590999d4c855cf7d58df5d9df7c6e8b879 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 13:17:16 +0000
        Subject: changed version to superalpha
        
        ---
         Session.vim      | 258 +++----------------------------------------------------
         docs/help.txt    |   2 +-
         docs/version.txt |   2 +-
         fype             | Bin 470663 -> 470663 bytes
         src/build.h      |   2 +-
         src/defines.h    |   2 +-
         6 files changed, 14 insertions(+), 252 deletions(-)
        
        diff --git a/Session.vim b/Session.vim
        index 0800758..4bcf05a 100644
        --- a/Session.vim
        +++ b/Session.vim
        @@ -39,7 +39,6 @@ set showmatch
         set smartcase
         set tabstop=4
         set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        -set textwidth=80
         set title
         set visualbell
         let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
        @@ -50,34 +49,14 @@ if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
           let s:wipebuf = bufnr('%')
         endif
         set shortmess=aoO
        -badd +72 src/core/interpret.h
        -badd +7 tmp/test.fy
        -badd +81 src/defines.h
        -badd +4 TODO
        -badd +1005 ./src/core/interpret.c
        -badd +73 Makefile
        -badd +67 src/core/symbol.h
        -badd +115 ./src/core/symbol.c
        -badd +25 src/core/function.c
        -badd +173 src/core/token.h
        -badd +322 ./src/core/token.c
        -badd +50 src/core/convert.c
        -badd +65 ./src/data/array.c
        -badd +1 src/core/array.h
        -badd +63 src/data/array.h
        -args src/core/interpret.h
        -edit tmp/test.fy
        +badd +0 src/defines.h
        +args src/defines.h
        +edit src/defines.h
         set splitbelow splitright
        -wincmd _ | wincmd |
        -vsplit
        -1wincmd h
        -wincmd w
         set nosplitbelow
         set nosplitright
         wincmd t
         set winheight=1 winwidth=1
        -exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        -exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
         argglobal
         setlocal keymap=
         setlocal noarabic
        @@ -105,8 +84,8 @@ setlocal nodiff
         setlocal equalprg=
         setlocal errorformat=
         setlocal noexpandtab
        -if &filetype != 'conf'
        -setlocal filetype=conf
        +if &filetype != 'cpp'
        +setlocal filetype=cpp
         endif
         setlocal foldcolumn=0
         setlocal foldenable
        @@ -164,8 +143,8 @@ setlocal statusline=
         setlocal suffixesadd=
         setlocal swapfile
         setlocal synmaxcol=3000
        -if &syntax != 'conf'
        -setlocal syntax=conf
        +if &syntax != 'cpp'
        +setlocal syntax=cpp
         endif
         setlocal tabstop=4
         setlocal tags=
        @@ -175,230 +154,13 @@ setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 4 - ((3 * winheight(0) + 22) / 44)
        +let s:l = 1 - ((0 * winheight(0) + 23) / 46)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        -4
        +1
         normal! 0
        -wincmd w
        -argglobal
        -edit ./src/core/interpret.c
        -setlocal keymap=
        -setlocal noarabic
        -setlocal autoindent
        -setlocal balloonexpr=
        -setlocal nobinary
        -setlocal bufhidden=
        -setlocal buflisted
        -setlocal buftype=
        -setlocal cindent
        -setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        -setlocal cinoptions=
        -setlocal cinwords=if,else,while,do,for,switch
        -setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        -setlocal commentstring=/*%s*/
        -setlocal complete=.,w,b,u,t,i
        -setlocal completefunc=
        -setlocal nocopyindent
        -setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        -setlocal define=
        -setlocal dictionary=
        -setlocal nodiff
        -setlocal equalprg=
        -setlocal errorformat=
        -setlocal noexpandtab
        -if &filetype != 'c'
        -setlocal filetype=c
        -endif
        -setlocal foldcolumn=0
        -setlocal nofoldenable
        -setlocal foldexpr=0
        -setlocal foldignore=#
        -setlocal foldlevel=0
        -setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        -setlocal foldminlines=1
        -setlocal foldnestmax=20
        -setlocal foldtext=foldtext()
        -setlocal formatexpr=
        -setlocal formatoptions=tcq
        -setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        -setlocal grepprg=
        -setlocal iminsert=2
        -setlocal imsearch=2
        -setlocal include=
        -setlocal includeexpr=
        -setlocal indentexpr=
        -setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        -setlocal noinfercase
        -setlocal iskeyword=@,48-57,_,192-255
        -setlocal keywordprg=
        -setlocal nolinebreak
        -setlocal nolisp
        -setlocal nolist
        -setlocal makeprg=
        -setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        -setlocal modifiable
        -setlocal nrformats=octal,hex
        -setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        -setlocal omnifunc=
        -setlocal path=
        -setlocal nopreserveindent
        -setlocal nopreviewwindow
        -setlocal quoteescape=\\
        -setlocal noreadonly
        -setlocal norightleft
        -setlocal rightleftcmd=search
        -setlocal noscrollbind
        -setlocal shiftwidth=3
        -setlocal noshortname
        -setlocal nosmartindent
        -setlocal softtabstop=0
        -setlocal nospell
        -setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        -setlocal spellfile=
        -setlocal spelllang=en
        -setlocal statusline=
        -setlocal suffixesadd=
        -setlocal swapfile
        -setlocal synmaxcol=3000
        -if &syntax != 'c'
        -setlocal syntax=c
        -endif
        -setlocal tabstop=4
        -setlocal tags=
        -setlocal textwidth=80
        -setlocal thesaurus=
        -setlocal nowinfixheight
        -setlocal nowinfixwidth
        -setlocal wrap
        -setlocal wrapmargin=0
        -let s:l = 947 - ((9 * winheight(0) + 22) / 44)
        -if s:l < 1 | let s:l = 1 | endif
        -exe s:l
        -normal! zt
        -947
        -normal! 0
        -wincmd w
        -exe 'vert 1resize ' . ((&columns * 71 + 71) / 143)
        -exe 'vert 2resize ' . ((&columns * 71 + 71) / 143)
        -tabedit ./src/data/array.c
        -set splitbelow splitright
        -set nosplitbelow
        -set nosplitright
        -wincmd t
        -set winheight=1 winwidth=1
        -argglobal
        -setlocal keymap=
        -setlocal noarabic
        -setlocal autoindent
        -setlocal balloonexpr=
        -setlocal nobinary
        -setlocal bufhidden=
        -setlocal buflisted
        -setlocal buftype=
        -setlocal cindent
        -setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
        -setlocal cinoptions=
        -setlocal cinwords=if,else,while,do,for,switch
        -setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
        -setlocal commentstring=/*%s*/
        -setlocal complete=.,w,b,u,t,i
        -setlocal completefunc=
        -setlocal nocopyindent
        -setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        -setlocal define=
        -setlocal dictionary=
        -setlocal nodiff
        -setlocal equalprg=
        -setlocal errorformat=
        -setlocal noexpandtab
        -if &filetype != 'c'
        -setlocal filetype=c
        -endif
        -setlocal foldcolumn=0
        -setlocal nofoldenable
        -setlocal foldexpr=0
        -setlocal foldignore=#
        -setlocal foldlevel=0
        -setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        -setlocal foldminlines=1
        -setlocal foldnestmax=20
        -setlocal foldtext=foldtext()
        -setlocal formatexpr=
        -setlocal formatoptions=tcq
        -setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
        -setlocal grepprg=
        -setlocal iminsert=2
        -setlocal imsearch=2
        -setlocal include=
        -setlocal includeexpr=
        -setlocal indentexpr=
        -setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
        -setlocal noinfercase
        -setlocal iskeyword=@,48-57,_,192-255
        -setlocal keywordprg=
        -setlocal nolinebreak
        -setlocal nolisp
        -setlocal nolist
        -setlocal makeprg=
        -setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        -setlocal modifiable
        -setlocal nrformats=octal,hex
        -setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        -setlocal omnifunc=
        -setlocal path=
        -setlocal nopreserveindent
        -setlocal nopreviewwindow
        -setlocal quoteescape=\\
        -setlocal noreadonly
        -setlocal norightleft
        -setlocal rightleftcmd=search
        -setlocal noscrollbind
        -setlocal shiftwidth=3
        -setlocal noshortname
        -setlocal nosmartindent
        -setlocal softtabstop=0
        -setlocal nospell
        -setlocal spellcapcheck=[.?!]\\_[\\])'\"\	\ ]\\+
        -setlocal spellfile=
        -setlocal spelllang=en
        -setlocal statusline=
        -setlocal suffixesadd=
        -setlocal swapfile
        -setlocal synmaxcol=3000
        -if &syntax != 'c'
        -setlocal syntax=c
        -endif
        -setlocal tabstop=4
        -setlocal tags=
        -setlocal textwidth=80
        -setlocal thesaurus=
        -setlocal nowinfixheight
        -setlocal nowinfixwidth
        -setlocal wrap
        -setlocal wrapmargin=0
        -let s:l = 89 - ((44 * winheight(0) + 22) / 45)
        -if s:l < 1 | let s:l = 1 | endif
        -exe s:l
        -normal! zt
        -89
        -normal! 02l
        -tabnext 2
        +tabnext 1
         if exists('s:wipebuf')
           silent exe 'bwipe ' . s:wipebuf
         endif
        diff --git a/docs/help.txt b/docs/help.txt
        index 95c1cab..e130abf 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype v0.1-devel Build 9630
        +Fype Superalpha Build 9635
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/version.txt b/docs/version.txt
        index 2186474..6cf17c2 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype v0.1-devel Build 9630
        +Fype Superalpha Build 9635
        diff --git a/fype b/fype
        index ee01307..363156f 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 8b22346..24b8e86 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9632
        +#define BUILDNR 9635
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/defines.h b/src/defines.h
        index fdcd701..f3b3b1e 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -54,7 +54,7 @@
         #define LINKER "cc"
         #define SCANNER_BUFSIZE 512
         #define URL ""
        -#define VERSION "v0.1-devel Build"
        +#define VERSION "Superalpha Build"
         
         
         
        -- 
        cgit v1.2.3
        
        
        From 7e920ed5a59e350610b0d52b23e49e5771ce39e9 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 13:18:44 +0000
        Subject: make headers style
        
        ---
         src/build.h          | 2 +-
         src/core/functions.c | 6 +++---
         src/core/functions.h | 6 +++---
         3 files changed, 7 insertions(+), 7 deletions(-)
        
        diff --git a/src/build.h b/src/build.h
        index 24b8e86..c3cb434 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -35,7 +35,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9635
        +#define BUILDNR 9636
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/functions.c b/src/core/functions.c
        index b2d0b0c..530618e 100644
        --- a/src/core/functions.c
        +++ b/src/core/functions.c
        @@ -1,5 +1,5 @@
         /*:*
        - *: File: ./src/core/function.c
        + *: File: ./src/core/functions.c
          *: A simple interpreter
          *:
          *: WWW		: http://fype.buetow.org
        @@ -152,7 +152,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
         
                  if (tt_assign != TT_IDENT) {
                     _FUNCTIONS_ERROR("Can only assign to symbols",
        -                            p_token_store);
        +                             p_token_store);
                  }
         
                  Symbol *p_symbol = scope_get(p_interpret->p_scope,
        @@ -160,7 +160,7 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
         
                  if (p_symbol == NULL) {
                     _FUNCTIONS_ERROR("No such symbol",
        -                            p_token_assign);
        +                             p_token_assign);
                  }
         
                  symbol_set_val(p_symbol, p_token_store);
        diff --git a/src/core/functions.h b/src/core/functions.h
        index 637a655..8fc03da 100644
        --- a/src/core/functions.h
        +++ b/src/core/functions.h
        @@ -1,5 +1,5 @@
         /*:*
        - *: File: ./src/core/function.h
        + *: File: ./src/core/functions.h
          *: A simple interpreter
          *:
          *: WWW		: http://fype.buetow.org
        @@ -50,8 +50,8 @@ void functions_delete(Functions *p_functions);
         void functions_init(Functions *p_functions);
         
         void function_process(Interpret *p_interp, Token *p_token_op,
        -                      Token *p_token_op2, Stack *p_stack_args, 
        -					  int i_args);
        +                      Token *p_token_op2, Stack *p_stack_args,
        +                      int i_args);
         _Bool function_is_buildin(Token *p_token_ident);
         void function_process_buildin(Interpret *p_interpret,
                                       Token *p_token_ident,
        -- 
        cgit v1.2.3
        
        
        From 117201ad10df2859fb3510e8437d776f3a691f69 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 9 Nov 2008 13:23:58 +0000
        Subject: changed the src headers.
        
        ---
         docs/header.txt      |  3 ++-
         src/argv.c           | 33 +++++++++++++++++----------------
         src/argv.h           | 33 +++++++++++++++++----------------
         src/build.h          | 33 +++++++++++++++++----------------
         src/core/convert.c   | 33 +++++++++++++++++----------------
         src/core/convert.h   | 33 +++++++++++++++++----------------
         src/core/function.c  | 33 +++++++++++++++++----------------
         src/core/function.h  | 33 +++++++++++++++++----------------
         src/core/functions.c | 33 +++++++++++++++++----------------
         src/core/functions.h | 33 +++++++++++++++++----------------
         src/core/garbage.c   | 33 +++++++++++++++++----------------
         src/core/garbage.h   | 33 +++++++++++++++++----------------
         src/core/interpret.c | 33 +++++++++++++++++----------------
         src/core/interpret.h | 33 +++++++++++++++++----------------
         src/core/reference.c | 33 +++++++++++++++++----------------
         src/core/reference.h | 33 +++++++++++++++++----------------
         src/core/scanner.c   | 33 +++++++++++++++++----------------
         src/core/scanner.h   | 33 +++++++++++++++++----------------
         src/core/scope.c     | 33 +++++++++++++++++----------------
         src/core/scope.h     | 33 +++++++++++++++++----------------
         src/core/symbol.c    | 33 +++++++++++++++++----------------
         src/core/symbol.h    | 33 +++++++++++++++++----------------
         src/core/token.c     | 33 +++++++++++++++++----------------
         src/core/token.h     | 33 +++++++++++++++++----------------
         src/data/array.c     | 33 +++++++++++++++++----------------
         src/data/array.h     | 33 +++++++++++++++++----------------
         src/data/dat.c       | 33 +++++++++++++++++----------------
         src/data/dat.h       | 33 +++++++++++++++++----------------
         src/data/hash.c      | 33 +++++++++++++++++----------------
         src/data/hash.h      | 33 +++++++++++++++++----------------
         src/data/list.c      | 33 +++++++++++++++++----------------
         src/data/list.h      | 33 +++++++++++++++++----------------
         src/data/map.c       | 33 +++++++++++++++++----------------
         src/data/map.h       | 33 +++++++++++++++++----------------
         src/data/queue.c     | 33 +++++++++++++++++----------------
         src/data/queue.h     | 33 +++++++++++++++++----------------
         src/data/stack.c     | 33 +++++++++++++++++----------------
         src/data/stack.h     | 33 +++++++++++++++++----------------
         src/data/tree.c      | 33 +++++++++++++++++----------------
         src/data/tree.h      | 33 +++++++++++++++++----------------
         src/data/tupel.c     | 33 +++++++++++++++++----------------
         src/data/tupel.h     | 33 +++++++++++++++++----------------
         src/data/types.h     | 33 +++++++++++++++++----------------
         src/defines.h        | 33 +++++++++++++++++----------------
         src/fype.c           | 33 +++++++++++++++++----------------
         src/fype.h           | 33 +++++++++++++++++----------------
         src/main.c           | 33 +++++++++++++++++----------------
         47 files changed, 784 insertions(+), 737 deletions(-)
        
        diff --git a/docs/header.txt b/docs/header.txt
        index 663bcac..b187378 100644
        --- a/docs/header.txt
        +++ b/docs/header.txt
        @@ -2,7 +2,8 @@ File: ${FILE}
         A simple interpreter
         
         WWW		: http://fype.buetow.org
        -E-Mail	: fype@dev.buetow.org
        +AUTHOR	: http://paul.buetow.org
        +E-Mail	: fype at dev.buetow.org
         
         Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
         All rights reserved.
        diff --git a/src/argv.c b/src/argv.c
        index d9b9131..d0fb8da 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/argv.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/argv.h b/src/argv.h
        index 0515125..80fd283 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/argv.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/build.h b/src/build.h
        index c3cb434..338388e 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/build.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.c b/src/core/convert.c
        index ee9ab9b..681867a 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/convert.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.h b/src/core/convert.h
        index ab0fc20..b4bda29 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/convert.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.c b/src/core/function.c
        index 3d58b86..0a59f8d 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/function.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.h b/src/core/function.h
        index c07f609..842b84a 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/function.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.c b/src/core/functions.c
        index 530618e..e718586 100644
        --- a/src/core/functions.c
        +++ b/src/core/functions.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/functions.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.h b/src/core/functions.h
        index 8fc03da..34cf9d8 100644
        --- a/src/core/functions.h
        +++ b/src/core/functions.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/functions.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index f73d8c7..ae7d3d2 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index c366ac2..4976750 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 2853fa8..906e0b3 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index 10ebb1c..79a1bd5 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.c b/src/core/reference.c
        index 8fb1082..6d2bb70 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/reference.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.h b/src/core/reference.h
        index 2afbaec..2e825ba 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/reference.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index 3e093ec..29c197b 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index 7ec2b1f..aa37960 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.c b/src/core/scope.c
        index db2ade3..095c7b4 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/scope.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.h b/src/core/scope.h
        index 6a03a19..0e832a9 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/scope.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index f949a11..3136722 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index 05cfafb..c8b43cd 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.c b/src/core/token.c
        index 8f8adb0..1942b2f 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/token.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.h b/src/core/token.h
        index 2758d75..ea2d328 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/core/token.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.c b/src/data/array.c
        index 21e941d..bfe9a65 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/array.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.h b/src/data/array.h
        index a56082f..a0000ce 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/array.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.c b/src/data/dat.c
        index e67ee58..a724291 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/dat.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.h b/src/data/dat.h
        index e51c725..decfad7 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/dat.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 7aab8bc..37e231a 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/hash.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 130ddb6..27c86b1 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/hash.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.c b/src/data/list.c
        index 719ac40..071b172 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/list.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.h b/src/data/list.h
        index b32c2af..a9ab799 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/list.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.c b/src/data/map.c
        index e12d7a6..afc6291 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/map.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.h b/src/data/map.h
        index cd63149..1f769fa 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/map.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.c b/src/data/queue.c
        index 1ec5375..e04e4b6 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/queue.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.h b/src/data/queue.h
        index 43f6223..cb2f214 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/queue.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.c b/src/data/stack.c
        index 00d5d88..f83cacb 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/stack.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 4468bbe..b3d9150 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/stack.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.c b/src/data/tree.c
        index 7edc647..6bff9b4 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/tree.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.h b/src/data/tree.h
        index 289bad0..90780c7 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/tree.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index 85c6cc4..b857203 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 9f77b43..67b882f 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/types.h b/src/data/types.h
        index 0f1db87..be38b4c 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/data/types.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/defines.h b/src/defines.h
        index f3b3b1e..3484568 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/defines.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.c b/src/fype.c
        index 754aab6..54b0152 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/fype.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.h b/src/fype.h
        index 02e1e85..a40d92b 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/fype.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/main.c b/src/main.c
        index f2d851f..06a725a 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -1,13 +1,14 @@
         /*:*
          *: File: ./src/main.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
        - *: E-Mail	: fype@dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: AUTHOR	: http://paul.buetow.org
        + *: E-Mail	: fype at dev.buetow.org
        + *: 
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -15,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        -- 
        cgit v1.2.3
        
        
        From 44c97ead68a274e462460eef33d67e7442c2fa47 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Mon, 15 Dec 2008 20:57:29 +0000
        Subject: say foo[1] works
        
        ---
         Makefile             |   2 +-
         Session.vim          |  85 +++++++++++++--------------------------------------
         docs/help.txt        |   2 +-
         docs/stats.txt       |   2 +-
         docs/version.txt     |   2 +-
         docs/vim-tips.txt    |   2 ++
         fype                 | Bin 470663 -> 470999 bytes
         src/argv.c           |  30 +++++++++---------
         src/argv.h           |  30 +++++++++---------
         src/build.h          |  32 +++++++++----------
         src/core/convert.c   |  30 +++++++++---------
         src/core/convert.h   |  30 +++++++++---------
         src/core/function.c  |  30 +++++++++---------
         src/core/function.h  |  30 +++++++++---------
         src/core/functions.c |  30 +++++++++---------
         src/core/functions.h |  30 +++++++++---------
         src/core/garbage.c   |  30 +++++++++---------
         src/core/garbage.h   |  30 +++++++++---------
         src/core/interpret.c |  55 ++++++++++++++++++++++-----------
         src/core/interpret.h |  30 +++++++++---------
         src/core/reference.c |  30 +++++++++---------
         src/core/reference.h |  30 +++++++++---------
         src/core/scanner.c   |  30 +++++++++---------
         src/core/scanner.h   |  30 +++++++++---------
         src/core/scope.c     |  30 +++++++++---------
         src/core/scope.h     |  30 +++++++++---------
         src/core/symbol.c    |  30 +++++++++---------
         src/core/symbol.h    |  30 +++++++++---------
         src/core/token.c     |  30 +++++++++---------
         src/core/token.h     |  31 ++++++++++---------
         src/data/array.c     |  30 +++++++++---------
         src/data/array.h     |  30 +++++++++---------
         src/data/dat.c       |  30 +++++++++---------
         src/data/dat.h       |  30 +++++++++---------
         src/data/hash.c      |  30 +++++++++---------
         src/data/hash.h      |  30 +++++++++---------
         src/data/list.c      |  30 +++++++++---------
         src/data/list.h      |  30 +++++++++---------
         src/data/map.c       |  30 +++++++++---------
         src/data/map.h       |  30 +++++++++---------
         src/data/queue.c     |  30 +++++++++---------
         src/data/queue.h     |  30 +++++++++---------
         src/data/stack.c     |  30 +++++++++---------
         src/data/stack.h     |  30 +++++++++---------
         src/data/tree.c      |  30 +++++++++---------
         src/data/tree.h      |  30 +++++++++---------
         src/data/tupel.c     |  30 +++++++++---------
         src/data/tupel.h     |  30 +++++++++---------
         src/data/types.h     |  30 +++++++++---------
         src/defines.h        |  30 +++++++++---------
         src/fype.c           |  30 +++++++++---------
         src/fype.h           |  30 +++++++++---------
         src/main.c           |  30 +++++++++---------
         test.fy              |   3 ++
         54 files changed, 745 insertions(+), 761 deletions(-)
         create mode 100644 docs/vim-tips.txt
        
        diff --git a/Makefile b/Makefile
        index d7a9f87..f9d8ce4 100644
        --- a/Makefile
        +++ b/Makefile
        @@ -30,7 +30,7 @@ clean:
         	find ./ -name '*.bin' -exec rm -f {} \;
         	find . -name '*.core' -exec rm -f {} \;
         	if [ -f $(BIN) ]; then rm -f $(BIN); fi
        -build:	ctags
        +build: ctags
         	@awk '{ \
         		if ($$2 == "BUILDNR") print $$1,$$2,$$3+1; \
         		else if ($$2 ~ /OS_/) printf("%s OS_%s\n", $$1, \
        diff --git a/Session.vim b/Session.vim
        index 4bcf05a..17c1945 100644
        --- a/Session.vim
        +++ b/Session.vim
        @@ -1,46 +1,5 @@
         let SessionLoad = 1
        -if &cp | set nocp | endif
        -map + :next 
        -map ,e :e =expand("%:p:h") . "/" 
        -map ,conf :source ~/.vimrc 
        -map ,v :sp ~/.vimrc 
        -map ,u :set ff=unix 
        -map ,t :w! 
         :make test
        -map ,r :w! 
         :make run 
        -map ,m :w! 
         :make 
        -map ,d :set ff=dos 
        -map - :previous 
        -let s:cpo_save=&cpo
        -set cpo&vim
        -nmap gx NetrwBrowseX
        -map t :TlistToggle
        -nnoremap  NetrwBrowseX :call netrw#NetBrowseX(expand(""),0)
        -iabbr sout System.out.println
        -iabbr ite \item
        -iabbr tabul \begin{tabular}{}
        
        \end{tabular}
        2ki	
        -iabbr bitem \begin{itemize}
        
        \end{itemize}
        2ki	\item
        -iabbr benum \begin{enumerate}
        
        \end{enumerate}
        2ki	\item
        -iabbr nsssec \subsubsection{}ba
        -iabbr nssec \subsection{}ba
        -iabbr nsec \section{}ba
        -let &cpo=s:cpo_save
        -unlet s:cpo_save
        -set autoindent
        -set background=dark
        -set backup
        -set backupdir=~/.vim/backups
        -set cindent
        -set ignorecase
        -set incsearch
        -set ruler
        -set shiftwidth=3
        -set showcmd
        -set showmatch
        -set smartcase
        -set tabstop=4
        -set tags=./tags,./TAGS,tags,TAGS,./tags,./../tags,./../../tags,./*/tags
        -set title
        -set visualbell
        +if !&cp | set cp | endif
         let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
         let v:this_session=expand(":p")
         silent only
        @@ -49,9 +8,9 @@ if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
           let s:wipebuf = bufnr('%')
         endif
         set shortmess=aoO
        -badd +0 src/defines.h
        -args src/defines.h
        -edit src/defines.h
        +badd +0 src/main.c
        +args src/main.c
        +edit src/main.c
         set splitbelow splitright
         set nosplitbelow
         set nosplitright
        @@ -60,13 +19,13 @@ set winheight=1 winwidth=1
         argglobal
         setlocal keymap=
         setlocal noarabic
        -setlocal autoindent
        +setlocal noautoindent
         setlocal balloonexpr=
         setlocal nobinary
         setlocal bufhidden=
         setlocal buflisted
         setlocal buftype=
        -setlocal cindent
        +setlocal nocindent
         setlocal cinkeys=0{,0},0),:,0#,!^F,o,O,e
         setlocal cinoptions=
         setlocal cinwords=if,else,while,do,for,switch
        @@ -76,16 +35,15 @@ setlocal complete=.,w,b,u,t,i
         setlocal completefunc=
         setlocal nocopyindent
         setlocal nocursorcolumn
        -set cursorline
        -setlocal cursorline
        +setlocal nocursorline
         setlocal define=
         setlocal dictionary=
         setlocal nodiff
         setlocal equalprg=
         setlocal errorformat=
         setlocal noexpandtab
        -if &filetype != 'cpp'
        -setlocal filetype=cpp
        +if &filetype != ''
        +setlocal filetype=
         endif
         setlocal foldcolumn=0
         setlocal foldenable
        @@ -93,13 +51,12 @@ setlocal foldexpr=0
         setlocal foldignore=#
         setlocal foldlevel=0
         setlocal foldmarker={{{,}}}
        -set foldmethod=indent
        -setlocal foldmethod=indent
        +setlocal foldmethod=manual
         setlocal foldminlines=1
         setlocal foldnestmax=20
         setlocal foldtext=foldtext()
         setlocal formatexpr=
        -setlocal formatoptions=tcq
        +setlocal formatoptions=vt
         setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
         setlocal grepprg=
         setlocal iminsert=2
        @@ -109,19 +66,18 @@ setlocal includeexpr=
         setlocal indentexpr=
         setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
         setlocal noinfercase
        -setlocal iskeyword=@,48-57,_,192-255
        +setlocal iskeyword=@,48-57,_
         setlocal keywordprg=
         setlocal nolinebreak
         setlocal nolisp
         setlocal nolist
         setlocal makeprg=
         setlocal matchpairs=(:),{:},[:]
        -setlocal modeline
        +setlocal nomodeline
         setlocal modifiable
         setlocal nrformats=octal,hex
         setlocal nonumber
        -set numberwidth=1
        -setlocal numberwidth=1
        +setlocal numberwidth=8
         setlocal omnifunc=
         setlocal path=
         setlocal nopreserveindent
        @@ -131,7 +87,7 @@ setlocal noreadonly
         setlocal norightleft
         setlocal rightleftcmd=search
         setlocal noscrollbind
        -setlocal shiftwidth=3
        +setlocal shiftwidth=8
         setlocal noshortname
         setlocal nosmartindent
         setlocal softtabstop=0
        @@ -143,10 +99,10 @@ setlocal statusline=
         setlocal suffixesadd=
         setlocal swapfile
         setlocal synmaxcol=3000
        -if &syntax != 'cpp'
        -setlocal syntax=cpp
        +if &syntax != ''
        +setlocal syntax=
         endif
        -setlocal tabstop=4
        +setlocal tabstop=8
         setlocal tags=
         setlocal textwidth=0
         setlocal thesaurus=
        @@ -154,7 +110,8 @@ setlocal nowinfixheight
         setlocal nowinfixwidth
         setlocal wrap
         setlocal wrapmargin=0
        -let s:l = 1 - ((0 * winheight(0) + 23) / 46)
        +silent! normal! zE
        +let s:l = 1 - ((0 * winheight(0) + 21) / 43)
         if s:l < 1 | let s:l = 1 | endif
         exe s:l
         normal! zt
        @@ -165,7 +122,7 @@ if exists('s:wipebuf')
           silent exe 'bwipe ' . s:wipebuf
         endif
         unlet! s:wipebuf
        -set winheight=1 winwidth=20 shortmess=filnxtToO
        +set winheight=1 winwidth=20 shortmess=
         let s:sx = expand(":p:r")."x.vim"
         if file_readable(s:sx)
           exe "source " . s:sx
        diff --git a/docs/help.txt b/docs/help.txt
        index e130abf..1bf0ea4 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype Superalpha Build 9635
        +Fype Superalpha Build 9637
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/stats.txt b/docs/stats.txt
        index 029a413..44d1b38 100644
        --- a/docs/stats.txt
        +++ b/docs/stats.txt
        @@ -1,4 +1,4 @@
         ===> Num of C source files		:       46
        -===> Num of C source lines		:     8157 
        +===> Num of C source lines		:     8225 
         ===> Num of Fype source examples	:       14
         ===> Num of Fype source lines		:      362 
        diff --git a/docs/version.txt b/docs/version.txt
        index 6cf17c2..69b917e 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype Superalpha Build 9635
        +Fype Superalpha Build 9637
        diff --git a/docs/vim-tips.txt b/docs/vim-tips.txt
        new file mode 100644
        index 0000000..035b019
        --- /dev/null
        +++ b/docs/vim-tips.txt
        @@ -0,0 +1,2 @@
        +line numbers: :se nu :se
        +buffers: :ls :bd  :bd 
        diff --git a/fype b/fype
        index 363156f..51446e7 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/argv.c b/src/argv.c
        index d0fb8da..2e78b8d 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/argv.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/argv.h b/src/argv.h
        index 80fd283..f0ffeb2 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/argv.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/build.h b/src/build.h
        index 338388e..14989cd 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/build.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,27 +16,27 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9636
        +#define BUILDNR 9665
         #define OS_FREEBSD
         
         #endif
        diff --git a/src/core/convert.c b/src/core/convert.c
        index 681867a..18ee731 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/convert.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.h b/src/core/convert.h
        index b4bda29..ec200d4 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/convert.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.c b/src/core/function.c
        index 0a59f8d..d14dc62 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/function.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.h b/src/core/function.h
        index 842b84a..aa70e94 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/function.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.c b/src/core/functions.c
        index e718586..d0af79a 100644
        --- a/src/core/functions.c
        +++ b/src/core/functions.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/functions.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.h b/src/core/functions.h
        index 34cf9d8..e73a940 100644
        --- a/src/core/functions.h
        +++ b/src/core/functions.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/functions.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index ae7d3d2..20262b2 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index 4976750..85a7885 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 906e0b3..5c2ad02 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -53,6 +53,7 @@
         #define _HAS_NEXT listiterator_has_next(p_interpret->p_iter)
         #define _NEXT_ORG _next(p_interpret);
         #define _NEXT if (!_next(p_interpret)) { return (2); }
        +#define _NEXT2 _NEXT _NEXT
         #define _NEXT_TT _next_tt(p_interpret)
         #define _SKIP _next(p_interpret);
         
        @@ -802,10 +803,10 @@ _term(Interpret *p_interpret) {
            _CHECK TRACK
         
            switch (p_interpret->tt) {
        +   case TT_ARRAY:
            case TT_STRING:
            case TT_INTEGER:
            case TT_DOUBLE:
        -   case TT_ARRAY:
               stack_push(p_interpret->p_stack, p_interpret->p_token);
               // Checks if the term is the last element of an array
               //	say ["element"] # The "element"
        @@ -818,7 +819,27 @@ _term(Interpret *p_interpret) {
            case TT_IDENT:
            {
               if (_NEXT_TT != TT_ASSIGN) {
        -         if (function_is_buildin(p_interpret->p_token)) {
        +         if (_NEXT_TT == TT_PARANT_AL) {
        +            Token *p_token_var = p_interpret->p_token;
        +            char *c_name = token_get_val(p_token_var);
        +            Symbol *p_symbol = scope_get(p_interpret->p_scope, c_name);
        +
        +            if (p_symbol == NULL)
        +               _INTERPRET_ERROR("No such symbol", p_token_var);
        +            Token *p_token_array = symbol_get_val(p_symbol);
        +            Array *p_array = TOKEN_GET_ARRAY(p_token_array);
        +            if (p_array == NULL)
        +               _INTERPRET_ERROR("Expected an array", p_interpret->p_token);
        +
        +            _NEXT2
        +            Token *p_token_val = array_get(p_array,
        +                                           convert_to_integer_get(p_interpret->p_token));
        +            stack_push(p_interpret->p_stack, p_token_val);
        +            _NEXT
        +
        +            return (1);
        +
        +         } else if (function_is_buildin(p_interpret->p_token)) {
                     Token *p_token = p_interpret->p_token;
                     Stack *p_stack = p_interpret->p_stack;
                     p_interpret->p_stack = stack_new();
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index 79a1bd5..84c53d4 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.c b/src/core/reference.c
        index 6d2bb70..1f5acff 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/reference.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.h b/src/core/reference.h
        index 2e825ba..1b4511e 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/reference.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index 29c197b..f91c7c5 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index aa37960..dc5981c 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.c b/src/core/scope.c
        index 095c7b4..49129cd 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scope.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.h b/src/core/scope.h
        index 0e832a9..4596378 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scope.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index 3136722..831db32 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index c8b43cd..88df9bf 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.c b/src/core/token.c
        index 1942b2f..ab0672e 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/token.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.h b/src/core/token.h
        index ea2d328..e127b66 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/token.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        @@ -72,6 +72,7 @@
         #define token_get_linenr(t) t->i_line_nr
         #define token_ref_up(t) ++t->i_ref_count
         #define token_ref_down(t) --t->i_ref_count
        +#define TOKEN_GET_ARRAY(t) t->p_array
         
         typedef enum {
            // Diverse
        diff --git a/src/data/array.c b/src/data/array.c
        index bfe9a65..5017e8c 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/array.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.h b/src/data/array.h
        index a0000ce..a5c684f 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/array.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.c b/src/data/dat.c
        index a724291..5315c1f 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/dat.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.h b/src/data/dat.h
        index decfad7..3643317 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/dat.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 37e231a..5a5da91 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/hash.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 27c86b1..2309f63 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/hash.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.c b/src/data/list.c
        index 071b172..4abc030 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/list.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.h b/src/data/list.h
        index a9ab799..087e205 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/list.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.c b/src/data/map.c
        index afc6291..789dec1 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/map.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.h b/src/data/map.h
        index 1f769fa..f9600d0 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/map.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.c b/src/data/queue.c
        index e04e4b6..a0be194 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/queue.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.h b/src/data/queue.h
        index cb2f214..9cfab47 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/queue.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.c b/src/data/stack.c
        index f83cacb..28b5efc 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/stack.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.h b/src/data/stack.h
        index b3d9150..3a5ebc9 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/stack.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.c b/src/data/tree.c
        index 6bff9b4..83fa0f0 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tree.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.h b/src/data/tree.h
        index 90780c7..35f7529 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tree.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index b857203..96ac315 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 67b882f..03e30f5 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/types.h b/src/data/types.h
        index be38b4c..38649b3 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/types.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/defines.h b/src/defines.h
        index 3484568..4766232 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/defines.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.c b/src/fype.c
        index 54b0152..34006dd 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/fype.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.h b/src/fype.h
        index a40d92b..ad01e6a 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/fype.h
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/main.c b/src/main.c
        index 06a725a..1dba91c 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/main.c
          *: A simple interpreter
        - *: 
        + *:
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *: 
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        + *:
        + *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
          *: All rights reserved.
        - *: 
        + *:
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        - *:    be used to endorse or promote products derived from this software 
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may
        + *:    be used to endorse or promote products derived from this software
          *:    without specific prior written permission.
        - *: 
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
        + *:
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/test.fy b/test.fy
        index cf34f24..ca3b930 100644
        --- a/test.fy
        +++ b/test.fy
        @@ -16,3 +16,6 @@ assert 5 == say len foo;
         
         # Print the last index of the array
         assert 4 == say ind foo;
        +
        +# Print the 3rd element of the array
        +say foo[3];
        -- 
        cgit v1.2.3
        
        
        From 40ad7ffc7ebd91e90f0894badcc4132df9b3c45d Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Mon, 15 Dec 2008 20:58:59 +0000
        Subject: modified headers
        
        ---
         docs/header.txt      |  2 +-
         src/argv.c           | 30 +++++++++++++++---------------
         src/argv.h           | 30 +++++++++++++++---------------
         src/build.h          | 30 +++++++++++++++---------------
         src/core/convert.c   | 30 +++++++++++++++---------------
         src/core/convert.h   | 30 +++++++++++++++---------------
         src/core/function.c  | 30 +++++++++++++++---------------
         src/core/function.h  | 30 +++++++++++++++---------------
         src/core/functions.c | 30 +++++++++++++++---------------
         src/core/functions.h | 30 +++++++++++++++---------------
         src/core/garbage.c   | 30 +++++++++++++++---------------
         src/core/garbage.h   | 30 +++++++++++++++---------------
         src/core/interpret.c | 30 +++++++++++++++---------------
         src/core/interpret.h | 30 +++++++++++++++---------------
         src/core/reference.c | 30 +++++++++++++++---------------
         src/core/reference.h | 30 +++++++++++++++---------------
         src/core/scanner.c   | 30 +++++++++++++++---------------
         src/core/scanner.h   | 30 +++++++++++++++---------------
         src/core/scope.c     | 30 +++++++++++++++---------------
         src/core/scope.h     | 30 +++++++++++++++---------------
         src/core/symbol.c    | 30 +++++++++++++++---------------
         src/core/symbol.h    | 30 +++++++++++++++---------------
         src/core/token.c     | 30 +++++++++++++++---------------
         src/core/token.h     | 30 +++++++++++++++---------------
         src/data/array.c     | 30 +++++++++++++++---------------
         src/data/array.h     | 30 +++++++++++++++---------------
         src/data/dat.c       | 30 +++++++++++++++---------------
         src/data/dat.h       | 30 +++++++++++++++---------------
         src/data/hash.c      | 30 +++++++++++++++---------------
         src/data/hash.h      | 30 +++++++++++++++---------------
         src/data/list.c      | 30 +++++++++++++++---------------
         src/data/list.h      | 30 +++++++++++++++---------------
         src/data/map.c       | 30 +++++++++++++++---------------
         src/data/map.h       | 30 +++++++++++++++---------------
         src/data/queue.c     | 30 +++++++++++++++---------------
         src/data/queue.h     | 30 +++++++++++++++---------------
         src/data/stack.c     | 30 +++++++++++++++---------------
         src/data/stack.h     | 30 +++++++++++++++---------------
         src/data/tree.c      | 30 +++++++++++++++---------------
         src/data/tree.h      | 30 +++++++++++++++---------------
         src/data/tupel.c     | 30 +++++++++++++++---------------
         src/data/tupel.h     | 30 +++++++++++++++---------------
         src/data/types.h     | 30 +++++++++++++++---------------
         src/defines.h        | 30 +++++++++++++++---------------
         src/fype.c           | 30 +++++++++++++++---------------
         src/fype.h           | 30 +++++++++++++++---------------
         src/main.c           | 30 +++++++++++++++---------------
         47 files changed, 691 insertions(+), 691 deletions(-)
        
        diff --git a/docs/header.txt b/docs/header.txt
        index b187378..9bbce0f 100644
        --- a/docs/header.txt
        +++ b/docs/header.txt
        @@ -5,7 +5,7 @@ WWW		: http://fype.buetow.org
         AUTHOR	: http://paul.buetow.org
         E-Mail	: fype at dev.buetow.org
         
        -Copyright (c) 2005 2006 2007 2008, Paul C. Buetow 
        +Copyright (c) 2005 - 2008, Paul Buetow 
         All rights reserved.
         
         Redistribution and use in source and binary forms, with or without modi-
        diff --git a/src/argv.c b/src/argv.c
        index 2e78b8d..7e83b0d 100644
        --- a/src/argv.c
        +++ b/src/argv.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/argv.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/argv.h b/src/argv.h
        index f0ffeb2..2f3d792 100644
        --- a/src/argv.h
        +++ b/src/argv.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/argv.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/build.h b/src/build.h
        index 14989cd..648b670 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/build.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.c b/src/core/convert.c
        index 18ee731..6844047 100644
        --- a/src/core/convert.c
        +++ b/src/core/convert.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/convert.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/convert.h b/src/core/convert.h
        index ec200d4..ed153d5 100644
        --- a/src/core/convert.h
        +++ b/src/core/convert.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/convert.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.c b/src/core/function.c
        index d14dc62..f16e74a 100644
        --- a/src/core/function.c
        +++ b/src/core/function.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/function.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/function.h b/src/core/function.h
        index aa70e94..6235d97 100644
        --- a/src/core/function.h
        +++ b/src/core/function.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/function.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.c b/src/core/functions.c
        index d0af79a..e534e9a 100644
        --- a/src/core/functions.c
        +++ b/src/core/functions.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/functions.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/functions.h b/src/core/functions.h
        index e73a940..fc7a138 100644
        --- a/src/core/functions.h
        +++ b/src/core/functions.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/functions.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.c b/src/core/garbage.c
        index 20262b2..544cbcb 100644
        --- a/src/core/garbage.c
        +++ b/src/core/garbage.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/garbage.h b/src/core/garbage.h
        index 85a7885..2f93982 100644
        --- a/src/core/garbage.h
        +++ b/src/core/garbage.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/garbage.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.c b/src/core/interpret.c
        index 5c2ad02..e471e72 100644
        --- a/src/core/interpret.c
        +++ b/src/core/interpret.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/interpret.h b/src/core/interpret.h
        index 84c53d4..28c6f2b 100644
        --- a/src/core/interpret.h
        +++ b/src/core/interpret.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/interpret.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.c b/src/core/reference.c
        index 1f5acff..fdbbb86 100644
        --- a/src/core/reference.c
        +++ b/src/core/reference.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/reference.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/reference.h b/src/core/reference.h
        index 1b4511e..0d16a2a 100644
        --- a/src/core/reference.h
        +++ b/src/core/reference.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/reference.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.c b/src/core/scanner.c
        index f91c7c5..266650c 100644
        --- a/src/core/scanner.c
        +++ b/src/core/scanner.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scanner.h b/src/core/scanner.h
        index dc5981c..bf4825d 100644
        --- a/src/core/scanner.h
        +++ b/src/core/scanner.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scanner.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.c b/src/core/scope.c
        index 49129cd..acbec1f 100644
        --- a/src/core/scope.c
        +++ b/src/core/scope.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scope.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/scope.h b/src/core/scope.h
        index 4596378..16ddbd8 100644
        --- a/src/core/scope.h
        +++ b/src/core/scope.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/scope.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.c b/src/core/symbol.c
        index 831db32..375ff84 100644
        --- a/src/core/symbol.c
        +++ b/src/core/symbol.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/symbol.h b/src/core/symbol.h
        index 88df9bf..2f6cc10 100644
        --- a/src/core/symbol.h
        +++ b/src/core/symbol.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/symbol.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.c b/src/core/token.c
        index ab0672e..092836f 100644
        --- a/src/core/token.c
        +++ b/src/core/token.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/token.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/core/token.h b/src/core/token.h
        index e127b66..fe4ff52 100644
        --- a/src/core/token.h
        +++ b/src/core/token.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/core/token.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.c b/src/data/array.c
        index 5017e8c..5543d41 100644
        --- a/src/data/array.c
        +++ b/src/data/array.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/array.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/array.h b/src/data/array.h
        index a5c684f..0568098 100644
        --- a/src/data/array.h
        +++ b/src/data/array.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/array.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.c b/src/data/dat.c
        index 5315c1f..ec690ce 100644
        --- a/src/data/dat.c
        +++ b/src/data/dat.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/dat.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/dat.h b/src/data/dat.h
        index 3643317..5b90d12 100644
        --- a/src/data/dat.h
        +++ b/src/data/dat.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/dat.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.c b/src/data/hash.c
        index 5a5da91..3e1ca77 100644
        --- a/src/data/hash.c
        +++ b/src/data/hash.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/hash.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/hash.h b/src/data/hash.h
        index 2309f63..215b7be 100644
        --- a/src/data/hash.h
        +++ b/src/data/hash.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/hash.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.c b/src/data/list.c
        index 4abc030..7c2b118 100644
        --- a/src/data/list.c
        +++ b/src/data/list.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/list.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/list.h b/src/data/list.h
        index 087e205..e5e7e3b 100644
        --- a/src/data/list.h
        +++ b/src/data/list.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/list.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.c b/src/data/map.c
        index 789dec1..938d100 100644
        --- a/src/data/map.c
        +++ b/src/data/map.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/map.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/map.h b/src/data/map.h
        index f9600d0..898eaaf 100644
        --- a/src/data/map.h
        +++ b/src/data/map.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/map.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.c b/src/data/queue.c
        index a0be194..4d2884a 100644
        --- a/src/data/queue.c
        +++ b/src/data/queue.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/queue.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/queue.h b/src/data/queue.h
        index 9cfab47..71c8b29 100644
        --- a/src/data/queue.h
        +++ b/src/data/queue.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/queue.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.c b/src/data/stack.c
        index 28b5efc..b20354e 100644
        --- a/src/data/stack.c
        +++ b/src/data/stack.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/stack.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/stack.h b/src/data/stack.h
        index 3a5ebc9..99db538 100644
        --- a/src/data/stack.h
        +++ b/src/data/stack.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/stack.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.c b/src/data/tree.c
        index 83fa0f0..59c44db 100644
        --- a/src/data/tree.c
        +++ b/src/data/tree.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tree.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tree.h b/src/data/tree.h
        index 35f7529..7251b73 100644
        --- a/src/data/tree.h
        +++ b/src/data/tree.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tree.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.c b/src/data/tupel.c
        index 96ac315..fe3b65c 100644
        --- a/src/data/tupel.c
        +++ b/src/data/tupel.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/tupel.h b/src/data/tupel.h
        index 03e30f5..03c366d 100644
        --- a/src/data/tupel.h
        +++ b/src/data/tupel.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/tupel.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/data/types.h b/src/data/types.h
        index 38649b3..0f3852d 100644
        --- a/src/data/types.h
        +++ b/src/data/types.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/data/types.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/defines.h b/src/defines.h
        index 4766232..c5f567e 100644
        --- a/src/defines.h
        +++ b/src/defines.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/defines.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.c b/src/fype.c
        index 34006dd..5aca8c8 100644
        --- a/src/fype.c
        +++ b/src/fype.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/fype.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/fype.h b/src/fype.h
        index ad01e6a..f871c8f 100644
        --- a/src/fype.h
        +++ b/src/fype.h
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/fype.h
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        diff --git a/src/main.c b/src/main.c
        index 1dba91c..b5cb62e 100644
        --- a/src/main.c
        +++ b/src/main.c
        @@ -1,14 +1,14 @@
         /*:*
          *: File: ./src/main.c
          *: A simple interpreter
        - *:
        + *: 
          *: WWW		: http://fype.buetow.org
          *: AUTHOR	: http://paul.buetow.org
          *: E-Mail	: fype at dev.buetow.org
        - *:
        - *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
        + *: 
        + *: Copyright (c) 2005 - 2008, Paul Buetow 
          *: All rights reserved.
        - *:
        + *: 
          *: Redistribution and use in source and binary forms, with or without modi-
          *: fication, are permitted provided that the following conditions are met:
          *:  * Redistributions of source code must retain the above copyright
        @@ -16,20 +16,20 @@
          *:  * Redistributions in binary form must reproduce the above copyright
          *:    notice, this list of conditions and the following disclaimer in the
          *:    documentation and/or other materials provided with the distribution.
        - *:  * Neither the name of P. B. Labs nor the names of its contributors may
        - *:    be used to endorse or promote products derived from this software
        + *:  * Neither the name of P. B. Labs nor the names of its contributors may 
        + *:    be used to endorse or promote products derived from this software 
          *:    without specific prior written permission.
        - *:
        - *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
        - *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        + *: 
        + *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR 
        + *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
          *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        - *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
        - *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        - *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        - *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        + *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT, 
        + *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
        + *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
        + *:  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
          *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        - *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        - *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        + *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
        + *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
          *: POSSIBILITY OF SUCH DAMAGE.
          *:*/
         
        -- 
        cgit v1.2.3
        
        
        From 1bc73e78278b630768723869d277d05404feae03 Mon Sep 17 00:00:00 2001
        From: Paul Buetow 
        Date: Sun, 11 Jan 2009 16:47:36 +0000
        Subject:
        
        ---
         docs/help.txt    |   2 +-
         docs/version.txt |   2 +-
         fype             | Bin 470999 -> 471287 bytes
         src/build.h      |   2 +-
         test.fy          |   2 ++
         5 files changed, 5 insertions(+), 3 deletions(-)
        
        diff --git a/docs/help.txt b/docs/help.txt
        index 1bf0ea4..df495db 100644
        --- a/docs/help.txt
        +++ b/docs/help.txt
        @@ -1,4 +1,4 @@
        -Fype Superalpha Build 9637
        +Fype Superalpha Build 9666
         (c) Paul C. Buetow (2005 - 2008) 
         	-e	Executes given code string (see synopses)
         	-h	Prints this help
        diff --git a/docs/version.txt b/docs/version.txt
        index 69b917e..5e6f1ea 100644
        --- a/docs/version.txt
        +++ b/docs/version.txt
        @@ -1 +1 @@
        -Fype Superalpha Build 9637
        +Fype Superalpha Build 9666
        diff --git a/fype b/fype
        index 51446e7..356c7b0 100755
        Binary files a/fype and b/fype differ
        diff --git a/src/build.h b/src/build.h
        index 648b670..4e046ad 100644
        --- a/src/build.h
        +++ b/src/build.h
        @@ -36,7 +36,7 @@
         #ifndef BUILD_H
         #define BUILD_H
         
        -#define BUILDNR 9665
        +#define BUILDNR 9666
         #define OS_FREEBSD
         
         #endif
        diff --git a/test.fy b/test.fy
        index ca3b930..4f9af9b 100644
        --- a/test.fy
        +++ b/test.fy
        @@ -19,3 +19,5 @@ assert 4 == say ind foo;
         
         # Print the 3rd element of the array
         say foo[3];
        +
        +#say "bla";
        -- 
        cgit v1.2.3