DEPRECATION NOTICE: Please note, Gunderscript is now deprecated due to unfixable design problems. Gunderscript has been superseded by Gunderscript 2, https://github.com/gundermanc/gunderscript-2
Gunderscript Programming Language (C) 2013-2014 Christian Gunderman
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Contact Email: gundermanc@gmail.com
ATTENTION: I am seeking developers to help me complete Gunderscript and test it. If anyone is interested, please email gundermanc@gmail.com.
INTRODUCTION: This repository containsthe code for the Gunderscript scripting language, currently under construction. This project is about 75% complete and is maturing quickly. Currently, I am just trying to get the basic features completed. For more information about the project, see the Features and Completion Status sub- headers below.
PROJECT GOALS: Gunderscript is designed to be a dynamically typed C style embeddable scripting language written in C89 standard portable C. It compiles down to an executable opcode and intended for use as a scripting language in games etc. At the moment, it works cross platform and has been tested on 64 bit Windows, and linux_32 and linux64 for x86. I intend to support ARM as well, but have yet to test it.
BUILDING: Clone the repository. **IMPORTANT: Before building, run the following command to pull c-datastructs library ./submodules.sh Make the commandline application for linux with: make releaseapp Or make the static library only with: make linuxlibrary Other targets can be built with the same commands under MinGW on Windows. To use the command line application, after building, run: ./gunderscript [entrypoint] [scriptfiles] Where entrypoint is the name of the function to start execution, and scriptfiles is one or more space delimited gunderscript files. An example file is included in the repository. You can run this example file with: ./gunderscript main script.gxs
FEATURES, Current:
C style commenting, syntax, function declarations, operators, end statement character, etc.
Standard programming assignment statements: ex: varName = 3;
Multicharacter operators
Ability for library user to specify code entry points.
Variable Types:
Auto conversion between types
Compiles to system independent bytecode. Runs on built in stack based VM.
Recursion
While loops
Return Statements
Nestable logic
Local variables
Compile Time Error Checking
Compile to byte code
File Interaction Library
Print to Console
Read From Console
Cross platform, tested on Windows (MingGW) and Linux (GCC).
100% memory leak/error free. Checked with VALGRIND
FEATURES, Future:
COMPLETION STATUS: C-Datastructs and Hashtable -- c-datastructs/ -- 100% VM Stack Frame Stack -- frmstk.c -- 100% Dynamic Buffer -- buffer.c -- 100% Lexer for Compiler -- lexer.c -- 100% Type Aware Stack -- typestk.c -- 100% Virtual Machine Object -- vm.c -- 95% VM Opcode interpreter -- ophandlers.c -- 98% Compiler -- compiler.c -- 75% Straight Code -- parsers.c -- 98% Ifs and Whiles -- parsers.c -- 95% For Loops -- parsers.c -- 0% Gunderscript Object -- gunderscript.c -- 50% Command Line Application -- main.c -- 25% File Manipulation Library -- libsys.c -- 25% String Manipulation Library -- libstr.c -- 100% Datastructures Library -- libdatastructs.c -- 0% (should be quick since they are already implemented..just need interfaces) Gtk+ Library -- libgtk.c -- 0% ..a pipe dream. I'm going to attempt this summer 2014
The planning documents can be found in the docs directory. They are WAY out of date since my efforts are now focused on construction, but they are still a good indicator of the intentions for the project.
CONTRIBUTORS: