{"id":13739602,"url":"https://github.com/soegaard/minipascal","last_synced_at":"2026-03-03T19:31:41.368Z","repository":{"id":6644940,"uuid":"7889135","full_name":"soegaard/minipascal","owner":"soegaard","description":"MiniPascal implemented in Racket","archived":false,"fork":false,"pushed_at":"2021-09-26T12:46:52.000Z","size":201,"stargazers_count":90,"open_issues_count":0,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-27T00:51:39.710Z","etag":null,"topics":["compiler","pascal","racket"],"latest_commit_sha":null,"homepage":"","language":"Pascal","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/soegaard.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":"2013-01-29T09:28:24.000Z","updated_at":"2025-02-04T17:32:55.000Z","dependencies_parsed_at":"2022-08-26T08:41:24.096Z","dependency_job_id":null,"html_url":"https://github.com/soegaard/minipascal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/soegaard/minipascal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soegaard%2Fminipascal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soegaard%2Fminipascal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soegaard%2Fminipascal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soegaard%2Fminipascal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soegaard","download_url":"https://codeload.github.com/soegaard/minipascal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soegaard%2Fminipascal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30056064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","pascal","racket"],"created_at":"2024-08-03T04:00:35.647Z","updated_at":"2026-03-03T19:31:41.325Z","avatar_url":"https://github.com/soegaard.png","language":"Pascal","funding_links":[],"categories":["Compilers"],"sub_categories":[],"readme":"MiniPascal\n==========\n\nMiniPascal as a Racket language\n-------------------------------\n\nThis is the `minipascal` package. It provides MiniPascal\nas a new #lang language.\n\nAfter installation (see later) the following program will run\nas is in DrRacket.\n\n    #lang minipascal\n    program fact;\n    type \n      int=integer;\n    function fact(n:int):int;\n      begin\n        if n=0 then\n          fact:=1\n        else\n          fact:=n*fact(n-1)\n      end;\n    begin\n      writeln(fact(10));\n    end.\n\nSee `mini-pascal-grammar.rkt` for a complete grammar.\n\nFeatures\n--------\n\nThe following features are supported:\n  - constant definitions\n  - type definitions\n  - function and procedure declarations\n  - nested functions and procedures\n  - base types: integer, boolean, char,\n  - arrays \n  - strings\n  - integer and char can be used as index ranges\n\nCompilers\n---------\n  \nMiniPascal comes with two compilers. The simple one\nin \"semantics-simple.rkt\" translates directly from\nPascal to Racket without any (compile time) type \nchecking. This compiler is written in the same\nspirit as the example in the Ragg tutorial. In\nother words it \"compiles by macro expansion\".\n\nThe other compiler in \"semantics.rkt\" demonstrates\nhow scoping and type checking can by implemented. \nThe compiler more traditional, it expands the whole \nPascal program in one go.\n\nTo switch from the full compiler to the simple one,\nadd `simple` to the `#lang` line. That is, the lines:\n\n    #lang minipascal\n    #lang minipascal simple\nuse the full and simple compiler respectively.\n\nExercises\n---------\n  - Add mod as an operator\n  - Add repeat\n  - Add case\n  - Add enumerated types  \n  - Add real numbers\n  - Add records\n  - Add files\n  \nInstallation\n------------\n\nInstall this package from the command line with:\n\n```sh\nraco pkg install --deps search-ask minipascal\n```\n\nor, by evaluating the following in DrRacket:\n\n```racket\n#lang racket\n\n(require pkg)\n(install \"minipascal\" #:deps 'search-ask)\n```\n\nUse the Racket package manager to install:\n\n```\nraco pkg install minipascal\n```\n\nReferences\n----------\nPascal ISO 7185 from 1990:\nhttp://pascal-central.com/docs/iso7185.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoegaard%2Fminipascal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoegaard%2Fminipascal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoegaard%2Fminipascal/lists"}