For my last month at code school, I have decided to learn what it takes to develop a new programming language. Having been teased for my Canadian accent, I thought it appropriate to incorporate some idiomatic Canadianisms, and call my language Eh? Deciding what actual features I want to implement in my programming language is an interesting task, and I think I have narrowed it down to a couple of standard rules and a couple wacky ones:
Rules for Eh?
- blocks of code are delimited by ‘:’ and ‘eh?’
- classes are declared using “A” keyword
- methods are defined using “CAN” keyword
- lowercase identifiers are local variables or method names
- capitalized identifiers are global variables
- no parens for args
- last value evaluated in return value
- everything is an object
Steps for building an interpreted language
- This code has to be provided as input to a lexer.
- The lexer will convert that input into tokens.
- The parser will organize those tokens into a tree of nodes.
- The runtime will evaluate the nodes using ruby.
Here is what I would like the final result to look like:
a Canadian with toque with scarf with broom can curl if skip: say "Hurry!" eh? if lead: pass eh? say "How social the game..." eh? can say_aboot: say "What's it all aboot?" eh? eh?
With this vague action plan and “Create Your Own Programming Language” by Marc-Andre Cournoyer in hand, off we go!