Skip to content

cool(!?) hand[nearly]made language(o'rly?) for fun

License

Notifications You must be signed in to change notification settings

notarseniy/nlng

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nlng

Fun playing with jison.

The purpose of this "language" is to implement JavaScript SIMD into some unnecessary syntax and to learn jison. And also for fun.

Or probably, make my own Haskell! (nope, this is really bad joke)

TODO

  • Basic learning of CoffeeScript parser

  • Make proof-of-concept compiler

  • Basic binary

  • File loader

  • Implement basic syntax from 'Proposed syntax'

  • Scope system

  • Type system

  • REPL

  • Loops & if's

  • Error system

  • Add ramda as stdlib

  • Refactor and write some coffeescript's parts

  • Implement basic algorithms and structures in this lang

  • Conquer the world

Proposed syntax

Comments

-- inline comment
{- block comment -}

Types

-- both are Number type
integer = 1
float = 1.0

bool = True
string = "omg i'm a string"

-- Lists
list = [1, 2, 3, 4]
simdList = &[1, 2, 3, 4] {- SIMD-powered lists (do i need it in special syntax?) -}

-- Tuple
tuple = (1, 2, 3, 4)

-- Record
record = {True, 1}

Functions

double x = 2 * x

-- how about pattern matching?
double 1 = 2
double 2 = 4

Tests & Documentation

Tests are in test folder. Run npm test for god's sake!

See docs folder for more info on syntax and internals. Also dig into docs/coffeescript_nodes for diagram of CoffeeScript nodes (AST of this language is based on CS).

Some parts of «language» is based on coffeescript code (really, not bad refference).

Arseniy Maximov, 2017 ©
(and CoffeeScript contributors)

About

cool(!?) hand[nearly]made language(o'rly?) for fun

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published