Skip to content

gundermanc/gunderscript

Repository files navigation

*** 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:
     + Number :: Generic float data type
     + String :: String and generic byte data type
     + Boolean :: Boolean data type
     + Native C Custom :: Used by native developers to create file contexts, etc.
   - 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:
   - Apache2 module (maybe some day...not begun yet)
   - For loops
   - Object orientation/namespaces (this MIGHT happen)
   - Arrays (should be in the next week or so)
   - Datastructures:
     + Hashtables
     + Stacks
     + HashSet
     + Linked List
     + StringBuilder
   - File Manipulation Libraries (in progress)
   - System call libraries (in progress)
   - Configuration File Class


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:
  - Christian Gunderman - Design and Programming Lead
  - Kai Smith - Math Library and File functions from libsys.c
  - Austin Kidder - Bugfix

About

Gunderscript Programming Language source code and documentation. Deprecated. See gunderscript-2.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published