{"id":19882879,"url":"https://github.com/santerijps/programming-language-tutorial","last_synced_at":"2025-10-25T22:43:37.173Z","repository":{"id":37505057,"uuid":"505469676","full_name":"santerijps/programming-language-tutorial","owner":"santerijps","description":"This project is a tutorial for myself to learn how to create your own programming language.","archived":false,"fork":false,"pushed_at":"2022-06-30T10:38:47.000Z","size":28,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-11T18:27:30.883Z","etag":null,"topics":["c","lexer-parser","programming-languages"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/santerijps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-20T14:13:10.000Z","updated_at":"2022-06-20T14:23:32.000Z","dependencies_parsed_at":"2022-08-25T02:51:11.438Z","dependency_job_id":null,"html_url":"https://github.com/santerijps/programming-language-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santerijps%2Fprogramming-language-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santerijps%2Fprogramming-language-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santerijps%2Fprogramming-language-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santerijps%2Fprogramming-language-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/santerijps","download_url":"https://codeload.github.com/santerijps/programming-language-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241311344,"owners_count":19942139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","lexer-parser","programming-languages"],"created_at":"2024-11-12T17:18:50.649Z","updated_at":"2025-10-25T22:43:32.121Z","avatar_url":"https://github.com/santerijps.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `pltc`: Creating a programming language from scratch\n\nThis project is a tutorial for myself to learn how to create my own programming language. I decided to write all the code in C. Below is a list of things that I would like to try:\n\n- a lexer\n- a parser\n- an interpreter\n- produce native executables\n\nThe development compiler is [Tiny C Compiler aka. `tcc`](https://bellard.org/tcc/). It compiles code really fast. The name of my programming compiler is `pltc`, which simply stands for _Programming Language Tutorial Compiler_.\n\n## Getting started\n\n### Install `tcc` if you don't already have it\n\n1. Go to [this URL](http://download.savannah.gnu.org/releases/tinycc/) and download the appropriate version\n2. Extract the downloaded zip file where-ever you like\n3. Add the path to the `tcc` executable file into your environment\n4. Confirm that it works by running `tcc --help`\n\n### Clone this repository\n\nOn the command line (if you have `git` installed):\n\n```sh\ngit clone https://github.com/santerijps/programming-language-tutorial\n```\n\n### Compile the binaries\n\nWith `make`:\n\n```sh\ncd programming-language-tutorial\nmake\n```\n\nWith `tcc`:\n\n```sh\ncd programming-language-tutorial\nmkdir bin\ntcc src/pltc.c -o bin/pltc\n```\n\n### Try the examples\n\n```sh\ncd programming-language-tutorial\nbin/pltc examples/example.py\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanterijps%2Fprogramming-language-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanterijps%2Fprogramming-language-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanterijps%2Fprogramming-language-tutorial/lists"}