{"id":16721743,"url":"https://github.com/zoltan-nz/compilers","last_synced_at":"2025-10-10T09:33:22.658Z","repository":{"id":144596520,"uuid":"141989987","full_name":"zoltan-nz/compilers","owner":"zoltan-nz","description":"Learning about compilers","archived":false,"fork":false,"pushed_at":"2018-11-17T13:53:12.000Z","size":13171,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-22T02:46:31.656Z","etag":null,"topics":["compiler","compilers","learning","presentation","slides","tutorial"],"latest_commit_sha":null,"homepage":"","language":"Java","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/zoltan-nz.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-23T09:10:18.000Z","updated_at":"2018-11-17T13:53:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"2ce59c34-9004-4d74-81e0-05cb72e94fbf","html_url":"https://github.com/zoltan-nz/compilers","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/zoltan-nz%2Fcompilers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoltan-nz%2Fcompilers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoltan-nz%2Fcompilers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoltan-nz%2Fcompilers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoltan-nz","download_url":"https://codeload.github.com/zoltan-nz/compilers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243727939,"owners_count":20338128,"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":["compiler","compilers","learning","presentation","slides","tutorial"],"created_at":"2024-10-12T22:32:05.478Z","updated_at":"2025-10-10T09:33:22.596Z","avatar_url":"https://github.com/zoltan-nz.png","language":"Java","readme":"# SWEN-430 Compilers\n\n\u003e Connected repository with assignments and solutions: https://github.com/zoltan-nz/while-lang-compiler\n\n## Presentations\n\n1. [Introduction](presentations/01-introduction.pdf)\n2. [Compiler Architecture](presentations/02-while-language.pdf)\n3. [Parsing 1](presentations/03-parsing-1.pdf)\n4. [Parsing 2](presentations/04-parsing-2.pdf)\n5. [Parsing 3](presentations/05-parsing-3.pdf)\n6. [Typing 1.](presentations/06-typing-1.pdf)\n7. [Interpreter](presentations/07-interpreter.pdf)\n8. [Typing 2.](presentations/08-typing-2.pdf)\n9. [Typing 3.](presentations/09-typing-3.pdf)\n10. [Unreachable Code](presentations/10-unreachable-code.pdf)\n11. [Definite Assignment/Unassignment](presentations/11-definite-assignment.pdf)\n12. [Definite Assignment 2.](presentations/12-definite-assignment.pdf) | [Java Bytecode](presentations/12b-java-bytecode.pdf)\n13. [Java Bytecode Generation 1](presentations/13-bytecode-generation-1.pdf)\n14. [Java Bytecode Generation 2](presentations/14-bytecode-generation-2.pdf)\n15. [Java Bytecode Verification](presentations/15-bytecode-verification.pdf)\n16. [Machine Code 1](presentations/16-machine-generation-1.pdf)\n17. [Machine Code 2](presentations/17-machine-generation-2.pdf)\n18. [Machine Code 3](presentations/18-machine-generation-3.pdf)\n19. [Paper 1: Class Hierarchy Analysis](presentations/19-paper-1-class-hierarchy-analysis.pdf)\n20. [Paper 2: Garbage Collection](presentations/20-garbage-collection.pdf)\n\n## Parsing\n\n1. [Grammars and Parse Trees](parsing-presentations/20-parsing-1-of-4.pdf)\n2. [Scanner and Parsing](parsing-presentations/21-parsing-2-of-4.pdf)\n3. [Building a Parse Tree](parsing-presentations/22-parsing-3-of-4.pdf)\n4. [Using Patterns](parsing-presentations/23-parsing-4-of-4.pdf)\n\n## Papers\n\n1. [Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis](papers/optimization-of-object-oriented-programs.pdf)\n2. [Practical Virtual Method Call Resolution for Java](papers/practical-virtual-method-call-resolution-for-java.pdf)\n3. [Myths and Realities: The Performance Impact of Garbage Collection](papers/the-performance-impact-of-garbage-collection.pdf)\n\n## Whiley\n\n- [Whiley Compiler](https://github.com/Whiley/WhileyCompiler)\n\n## While\n\n- [While Language Specification](while/while-language-specification.pdf)\n- [Compiler Source Code](while/compiler)\n- [My While Language Compiler repository](https://github.com/zoltan-nz/while-lang-compiler)\n\n## Downloads\n\n- [while.tar](downloads/while.tar) - While compiler for Assignment 1\n- [tests.tar](downloads/tests.tar) - Test harness for Assignment 1\n- [newtests.tar](downloads/newtests.tar) - Test update for Assignment 1\n- [assignment2.tgz](downloads/assignment2.tgz) - Tests for Assignment 2\n- [whilelang.tar](downloads/whilelang.tar) - Updated While compiler for Assignment 2, 3 and 4\n- [jasm-v0.1.7](downloads/jasm-v0.1.7.jar) - Old `jasm` compiler\n- [assignment-3-test-harness.tgz](downloads/assignment-3-test-harness.tgz) - Test harness for Assignment 3\n- [assignment4.tgz](downloads/assignment4.tgz) - C compiler and test harness for Assignment 4\n\n## Assignments\n\n- [Assignment 1](assignments/assignment-1.pdf)\n- [Assignment 1 - Implementation](https://github.com/zoltan-nz/while-lang-compiler/blob/master/docs/assignment-1-notes.md)\n- [Assignment 2](assignments/assignment-2.pdf)\n- [Assignment 2 - Implementation](https://github.com/zoltan-nz/while-lang-compiler/blob/master/docs/assignment-2-notes.md)\n- [Assignment 3](assignments/assignment-3.pdf)\n- [Assignment 3 - Implementation](https://github.com/zoltan-nz/while-lang-compiler/blob/master/docs/assignment-3-notes.md)\n- [Assignment 4](assignments/assignment-4.pdf)\n\n## JASM\n\n- [Whiley JASM](https://whiley.github.io/Jasm/)\n\n## jx86\n\n- [Java Library for Generating x86 Code](https://github.com/DavePearce/jx86)\n\n## Notes\n\n- [Export fat JAR files from IntelliJ IDEA](export-jar-file-from-intellij-idea.md)\n\n### Regular Expression Notations\n\n```\na             An ordinary character stands for itself.\nε             The empty string.\nM|N           Alternation, choosing from M or N.\nM·N           Concatenation, an M followed by an N.\nMN            Another way to write concatenation.\nM∗            Repetition (zero or more times).\nM+            Repetition, one or more times.\nM?            Optional, zero or one occurrence of M.\n[a − zA − Z]  Character set alternation.\n.             A period stands for any single character except newline.\n\"a.+*\"        Quotation, a string in quotes stands for itself literally.\n```\n\nRegular expressions for some tokens:\n\n```\nif                                              IF\n[a-z][a-z0-9]*                                  ID\n[0-9]+                                          NUM\n([0-9]+\".\"[0-9]*)|([0-9]*\".\"[0-9]+)             REAL\n(\"--\"[a-z]*\"\\n\")|(\" \"|\"\\n\"|\"\\t\")+               no token, just white space (ex. comment starts: --)\n.                                               error\n```\n\n### Grammar\n\n- [Context-free grammar](https://en.wikipedia.org/wiki/Context-free_grammar)\n- [BNF - Backus-Naur form](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoltan-nz%2Fcompilers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoltan-nz%2Fcompilers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoltan-nz%2Fcompilers/lists"}