Skip to content

An experiment programming a programming language and learning to program — a programming language.

Notifications You must be signed in to change notification settings

figgleforth/emerald

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This language tries to

  1. Be Turing complete
  2. Use as few reserved words as possible — class, def, self, etc
  3. Support prefix, infix, postfix, and circumfix operators — !1, 2+3, 4!, |5|, respectively
  4. Allow alphanumeric and symbolic identifiers to be operators — 5 @#$ 6, 7 by 8, 11:22pm
  5. Have builtin web app functionality — like routing, controllers, and views

But hey, not all languages are perfect, and neither is my cholesterol. Source code of this language is processed by several Ruby programs that transform it into equivalent Ruby code, so it's more like a templating language but — tomato, tomato.

Table of Contents

Destination What's here?
examples/ Code written in this language, with extension *.em
notes/ On various topics
source/ The code that make the language work, in Ruby
source/documenter/ Someday a program for generating documentation from code comments
source/helpers/ Classes and functions that help get stuff done
source/interpreter/ Program that evaluates parsed expressions into final program output
source/lexer/ Program that turns source code into tokens
source/parser/ Program that turns tokens into expressions
source/repl/ Program like Ruby's irb, or pry
readme.md You are here
test.rb Ruby file that runs examples/ through the lexer, parser, and interpreter
.gitignore Like sunscreen but for blocking files from your repository — Filescreen™

About

An experiment programming a programming language and learning to program — a programming language.

Topics

Resources

Stars

Watchers

Forks

Languages