Creating TuffScript: Exploring Esoteric Programming Languages and Their Foundations
A while back, I needed to create a presentation on interpreters, compilers, transpilers, and programming languages. I thought the best way to explain the basic concepts necessary to dive deep into these topics was to create a small, perhaps even useless or esoteric, language that we could use to demonstrate and explain everything.
That's how I wrote TuffScript.
TuffScript is an esoteric programming language designed for learning the underlying logic of interpretation. It uses the Armenian alphabet and Armenian words.
Although the language itself uses only Armenian words, I will write a series of articles describing the basic knowledge I used to create this toy language from scratch.
In the upcoming series, we will explore the following topics:
Grammar
Chomsky Hierarchy
Fundamental Definitions: Terminals, Non-Terminals
Regular Grammars
Context-free Grammars
Leftmost and Rightmost Derivations
Backus-Naur Form
Precedence And Associativity
Ambiguity
Semantics
Lexical analysis
Syntax analysis
Evaluation
Arithmetic Expressions Evaluator: Recursive Top-Down Parser
Lexer
Eliminating Left Recursion
Visitor Pattern
Parser
Interpreter
TuffScript
A Preview
Tokenizer
Parser
Interpreter
VS Code Language Extensions
TuffScript Language Configuration
TuffScript Formatter
TuffScript Formatter Extension
TuffScript Linter
TuffScript Linter Extension
Transpilers
TuffScript-JavaScript Transpiler
TuffScript Web Starter: Running in Browser Environment
TuffScript-Brainf*ck Interpreter: Running in Node Environment
This series will provide insights into the workings of programming languages and guide you through the process of building your own toy language. Stay tuned for more details and exciting content!
Subscribe to my newsletter
Read articles from arman takmazyan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
arman takmazyan
arman takmazyan
Passionate about building high-performance web applications with React. In my free time, I love diving into the fascinating world of programming language principles and uncovering their intricacies.