8000 GitHub - Mesabloo/snowstar: Here lies the code for the Snow* programming language, currently being rewritten.
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Oct 19, 2020. It is now read-only.
/ snowstar Public archive

Here lies the code for the Snow* programming language, currently being rewritten.

License

Notifications You must be signed in to change notification settings

Mesabloo/snowstar

Repository files navigation

Snow*

Snow* icon

madewithcpp builtwithheart

ℹ️ Table of content

  1. What is Snow* ?

  2. Me, Mesabloo

  3. Free sample

  4. Thanks to

  5. Software used

❔ What is Snow* ?

license

Snow* is a programming language which knew several generations:

  • The first one called RainDrop was an Object-Oriented programming language.
    It really never took off in the first place, being always a theoritical project more than anything else.

  • The second one was called #* (SharpStar)
    It was an ASM-like language with some inconsistences (registers holding only up to one value).
    It was the real first programming language made here from nothing. The VM was slow, 8922 the compiler inefficient.

  • The third generation was the first called Snow*.
    It was still an ASM-like, but more developped than the previous one. It contained more instructions, the VM was faster, the compiler more efficient.

  • The fourth generation, Snow*, a procedural programming language.
    This generation is built with ANTLR and LLVM to offer power and native compilation.

🖥️ Behind Snow*, a developer, Mesabloo.

I've been working on Snow* from the second generation until now since the beginning of June 2018. I wanted to create my own programming language since the beginning of October/November of 2017. (RainDrop came to life around this time) Because I never really understood how they work, and because I wanted to compile RainDrop into ASM (the Assembly Language), it didn't go far enough to actually be considered a good "experience" (just a basic Lexer + a simple compiling process until the AST generation, where I got stuck).
After this, I switched from Java to C++ and completely changed the syntax of the language, creating my first "ASM-like" language.
And now, I changed it again, and I'm ready to go for it.

📄 What about a free sample ?

Samples can be found here but I will post here a simple Hello, World! program made in Snow*:

(*
 *  Declaration of the main method. The parameters of it are unrequired, you may write it without.
 *
 *  @param `argc` is of type i8 ;
 *  @param `argv` is of type array<str> ;
 *  @return i32
 *)

% So that we can use `print()`.
import stdout;
import array;

i32(i8, array<str>) main =
    (i8 argc, array<str> argv) => {
        print("Hello, World!");
        % We print "Hello, World!" in the console.
        return 0;
        % We return from the function, with an i32 value.
    };

(*
    This sample is not yet compilable.
    Don't try to compile it, you'll get many errors.
*)

✴️ Special thanks to

People from many Discord servers helping me when I need help. Links to them will be put down below.

  • NaN - Not a Name : a francophone programming related Discord server, very nice and helpful:
    Discord bagde
  • The Programmer's Hangout : a nice community about programming with many developers from all around the world:
    Discord bagde
  • Atelier - Création d'un langage de programmation : a francophone Discord server about the creation of programming languages, with some languages creator such as me.
    Discord bagde
  • Some other servers where people helped me mentally by being here for me whenever I needed some comfort.
  • My friends who put some hope in my project.
  • All the people who starred this repository so far. It's really pleasant.

💽 Pieces of software used with their licenses

  • ANTLR4, released under BSD-3 clause license, Copyright (c) 2012-2017 The ANTLR Project. All rights reserved
  • termcolor, released under BSD license, Copyright (c) 2013 Ihor Kalnytskyi
  • LLVM, released under Open Source license, Copyright (c) 2003-2018 University of Illinois at Urbana-Champaign. All rights reserved.
  • Tiny Process Library, released under the MIT License, Copyright (c) 2015-2018 Ole Christian Eidheim
  • Argh ! released under the BSD-3 License, Copyright (c) 2016 Adi Shavit
0