Please sign in to access this page

Programming Language (custom)

Programming Language (custom)

12 devlogs
46h 11m
•  Ship certified
Created by jim

A custom programming language built from scratch, includes full tokenizer, parser, and interpeter in Python. The language supports strings, ints, operators, variables, repeat statements, functions, if statements, comments and more. It already got attention and stars on github. The project's whole concept is educational, and the primary goal is to learn more about language design, compilers, tokenizer, and interpreter development

Timeline

Ship 1

1 payout of shell 875.0 shells

jim

23 days ago

jim Covers 12 devlogs and 46h 11m
jim
jim
7h 12m 23 days ago

I finished functions, with defining functions and calling them. I also removed the video from the docs and hosted it on hackclub cnd. I think we can say the custom programming language is finished. The concept of this is to learn how languages work and gain some more advanced coding experience. I also worked on the docs.

jim
jim
6h 5m 24 days ago

Restructured code, worked on error logging + part of functions. I also added some new token types that include ID,EQ,NEQ,GTE (for if statements)

Update attachment

Added if statements, which can include ==, =<, >=, <, > for statements. Also updated the docs & readme.

Update attachment

Added mathimatical operators on int variable declarations, updated readme & docs

Restrucured code, added environment.py, ast_nodes.py with classes, tokens.py, added the ability to run source code from arguments. made all commands ast nodes classifiers in classes, + working on a repeat <times> {content} block + if block

Update attachment

Made an html for docs, examples, and demo, currently https://jimmydin7.github.io/custom-programming-language/docs

Update attachment

Changes the whole directory structure , basically restructured everything... Also made helpers, lang/interpreter, /parser, /tokenizer + more

Update attachment

added the ability to put a raw string inside say(), like say(hello, world!) instead of just variables + changed variable handling on a class on environment.py. Also renamed main to run and now you can put the source code path as an argument

Update attachment

Added tests for: lexer, parser, interpreter. They all have a 'correct' output which is checked to see if it is the same with the output they returned. I also wrote a README for github. Took me a long time because I couldn't figure out the importing on tests, and after some stackoverflow I figured to use sys.

Update attachment

Coded a demo python interpreter to process AST nodes

Update attachment

Added a parser (AST Generator), that was the next step after the tokenizer.

Update attachment

Added a lexer that turns source code into tokens

Update attachment