{"id":22957207,"url":"https://github.com/mrminemeet/minimizer","last_synced_at":"2025-04-02T01:41:02.246Z","repository":{"id":167804014,"uuid":"643432078","full_name":"MrMinemeet/MiniMizer","owner":"MrMinemeet","description":"Compiler Optimizer on an IR for the toy language 'Mini'","archived":false,"fork":false,"pushed_at":"2024-11-01T07:43:01.000Z","size":179,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T16:43:09.190Z","etag":null,"topics":["compiler","intermediate-representation","optimization"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"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/MrMinemeet.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":"2023-05-21T06:17:00.000Z","updated_at":"2024-08-25T08:52:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"f6e3f2a8-7ecb-4617-85e6-42e30efb8d91","html_url":"https://github.com/MrMinemeet/MiniMizer","commit_stats":null,"previous_names":["mrminemeet/minimizer"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrMinemeet%2FMiniMizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrMinemeet%2FMiniMizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrMinemeet%2FMiniMizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrMinemeet%2FMiniMizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrMinemeet","download_url":"https://codeload.github.com/MrMinemeet/MiniMizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246741187,"owners_count":20826063,"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","intermediate-representation","optimization"],"created_at":"2024-12-14T17:15:40.111Z","updated_at":"2025-04-02T01:41:02.229Z","avatar_url":"https://github.com/MrMinemeet.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiniMizer\nMy optimizer for Project 2 of the LVA [Advanced Compiler Construction](https://ssw.jku.at/Teaching/Lectures/ACC/) @JKU Linz by Prof. Hanspeter Mössenböck.\n\nThis project was originally intended to be perfored for the lecture. As I had no time during that period, I'm performing it as a hobby project. Therefore, some requirements have changed a bit. E.g. the use of Kotlin for custom classes that are not generated by COCO/R.\n\n## Task description:\nThe goal of this project is to write a compiler that translates a program of the toy language Mini\nto an intermediate representation (a CFG with IR instructions), performs some optimizations\non it and finally does register allocation by graph coloring. Code generation is not part of this\nproject. The project can either be implemented in Java or in C#. As I do this as a hobby project, I used Kotlin for parts that have not been generated via COCO/R.\n\n## Mini language description:\nMini is a simple Pascal-like language with integer variables and (multi-dimensional) arrays. It\nhas the usual kinds of statements and expressions. There are no procedures. The syntax of Mini\nis as follows:\n```\nMini        = \"PROGRAM\" {VarDecl} \"BEGIN\" StatSeq \"END\" \".\" .\nVarDecl     = \"VAR\" {IdListDecl \";\"} .\nIdListDecl  = ident {\",\" ident} \":\" Type .\nType        = ident | \"ARRAY\" number \"OF\" Type .\nStatSeq     = Statement {\";\" Statement} .\nStatement   =\n    [ Designator \":=\" Expression\n    | \"IF\" Condition \"THEN\" StatSeq {\"ELSIF\" Condition \"THEN\" StatSeq} [\"ELSE\" StatSeq] \"END\"\n    | \"WHILE\" Condition \"DO\" StatSeq \"END\"\n    | \"READ\" Designator\n    | \"WRITE\" Expression\n    ] .\nCondition   = Expression Relop Expression .\nExpression  = [Addop] Term {Addop Term} .\nTerm        = Factor {Mulop Factor} .\nFactor      = Designator | number | \"(\" Expression \")\" .\nDesignator  = ident {\"[\" Expression \"]\"}.\nRelop       = \"=\" | \"#\" | \"\u003c\" | \"\u003e\" | \"\u003e=\" | \"\u003c=\".\nAddop       = \"+\" | \"-\".\nMulop       = \"*\" | \"/\" | \"%\".\n```\n\nThe lexical structure of SL is:\n```\nident = letter {letter | digit}.\nnumber = digit {digit}\n```\n\nInteger types are written as `INTEGER`. Comments start with `//` and go to the end of the line.\n\n---\n* Full Task Description: [Project_2.pdf](https://ssw.jku.at/Teaching/Lectures/ACC/Project_2.pdf)\n* COCO/R: [Homepage](https://ssw.jku.at/Research/Projects/Coco/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrminemeet%2Fminimizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrminemeet%2Fminimizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrminemeet%2Fminimizer/lists"}