{"id":18439081,"url":"https://github.com/demonstrandum/lispy","last_synced_at":"2025-04-14T13:24:49.670Z","repository":{"id":96636352,"uuid":"167934540","full_name":"Demonstrandum/lispy","owner":"Demonstrandum","description":"LISP Interpreter in Python 😣 — LIS(PY)","archived":false,"fork":false,"pushed_at":"2019-05-01T23:16:49.000Z","size":42594,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-16T10:44:55.079Z","etag":null,"topics":["lisp","lisp-interpreter","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Demonstrandum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-01-28T09:27:38.000Z","updated_at":"2023-04-15T20:50:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"bcfc52b7-975e-4c08-8436-89de64e80e60","html_url":"https://github.com/Demonstrandum/lispy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Demonstrandum%2Flispy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Demonstrandum%2Flispy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Demonstrandum%2Flispy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Demonstrandum%2Flispy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Demonstrandum","download_url":"https://codeload.github.com/Demonstrandum/lispy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248887317,"owners_count":21177852,"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":["lisp","lisp-interpreter","python"],"created_at":"2024-11-06T06:23:18.751Z","updated_at":"2025-04-14T13:24:49.641Z","avatar_url":"https://github.com/Demonstrandum.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LISPY\r\nA LISP interpreter written in Python --- LIS(PY).\r\n\r\n\r\n## About\r\n\r\n### File Structure\r\n```\r\n├── common-lisp-merge-sort.lisp\r\n├── debug-stages.py\r\n├── docs\r\n│   ├── ast_Tree.png\r\n│   ├── carbon.png\r\n│   ├── cons-cells.png\r\n│   ├── debug-stages.png\r\n│   ├── eof-string.png\r\n│   ├── err-warn.png\r\n│   ├── example_interp.png\r\n│   ├── exec-args.png\r\n│   ├── execute_file.png\r\n│   ├── files.png\r\n│   ├── hello-world-flowchart.png\r\n│   ├── ilispy_file.png\r\n│   ├── index-err.png\r\n│   ├── interp-Atom.png\r\n│   ├── interp-Def.png\r\n│   ├── interp-eval.png\r\n│   ├── interp-exec.png\r\n│   ├── interp-load_file.png\r\n│   ├── interp-req.png\r\n│   ├── interp-SymTab.png\r\n│   ├── interp-visit.png\r\n│   ├── interp-walk.png\r\n│   ├── lexer-flow.png\r\n│   ├── lexer_regex.png\r\n│   ├── lex_numeric.png\r\n│   ├── main_lex.png\r\n│   ├── mismatched-parens.png\r\n│   ├── nea.pdf\r\n│   ├── nea.tex\r\n│   ├── num-call.png\r\n│   ├── paren_bal.png\r\n│   ├── parse-error.png\r\n│   ├── parser_atom.png\r\n│   ├── parser-flow.png\r\n│   ├── parser_header.png\r\n│   ├── parser_macroexpand.png\r\n│   ├── parser_macro-obj.png\r\n│   ├── parser_parse.png\r\n│   ├── parser_pre.png\r\n│   ├── prelude.png\r\n│   ├── references.bib\r\n│   ├── repl_lispy.png\r\n│   ├── token_obj.png\r\n│   ├── token_stream.png\r\n│   ├── too-few-parens.png\r\n│   ├── too-many-parens.png\r\n│   ├── tree_Data.png\r\n│   ├── tree_Hier.png\r\n│   ├── tree_Nil.png\r\n│   ├── tree_Node.png\r\n│   ├── tree_Nodes.png\r\n│   ├── tree_Operator.png\r\n│   ├── type-check.png\r\n│   └── unbound-sym.png\r\n├── execute\r\n├── hello_world.lispy\r\n├── ilispy\r\n├── LICENSE\r\n├── lispy\r\n│   ├── config.py\r\n│   ├── err.py\r\n│   ├── __init__.py\r\n│   ├── lexing.py\r\n│   ├── parsing.py\r\n│   ├── tree.py\r\n│   └── visitor.py\r\n├── _making_log.log\r\n├── prelude\r\n│   ├── destructive.lispy\r\n│   ├── dt.lispy\r\n│   ├── functional.lispy\r\n│   ├── IO.lispy\r\n│   ├── lists.lispy\r\n│   ├── loop.lispy\r\n│   ├── numerics.lispy\r\n│   └── prelude.lispy\r\n├── README.md\r\n├── repl.lispy\r\n├── run-samples.sh\r\n├── samples\r\n│   ├── atoms.lispy\r\n│   ├── blocks.lispy\r\n│   ├── compose.lispy\r\n│   ├── declarative.lispy\r\n│   ├── deep.lispy\r\n│   ├── eval.lispy\r\n│   ├── factorial.lispy\r\n│   ├── fizzbuzz.lispy\r\n│   ├── functions.lispy\r\n│   ├── ifact.lispy\r\n│   ├── integral.lispy\r\n│   ├── internal.lispy\r\n│   ├── lists.lispy\r\n│   ├── merge_sort.lispy\r\n│   └── strings.lispy\r\n├── testing.lispy\r\n└── windows_execute.py\r\n\r\n4 directories, 96 files\r\n```\r\n\r\n- The folder `lispy/` contains the implementation for the langauge.\r\n- The folder `samples/` contains examples of LISPY programs.\r\n- The folder `prelude/` contains the standard library for LISPY.\r\n- The folder `/docs` contains the source for the documentation.\r\n- The file `/docs/nea.pdf` is the compiled documentation document.\r\n\r\n\r\n### How to execute a file\r\nOn GNU/Linux, in the root of this repository, type:\r\n```shell\r\n./execute \u003cfilename\u003e\r\n```\r\nwhere `\u003cfilename\u003e` is some file ending with `.lispy`.\r\n\r\n### Running the REPL\r\nOn GNU/Linux, in the root of the repository again, type:\r\n```shell\r\n./ilispy\r\n```\r\nand the REPL should start.\r\n\r\n### Weird file names:\r\n`ast`, `parser` and `lexer` are reserved file names/modules in Python, so I\r\ncouldn't use those names.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdemonstrandum%2Flispy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdemonstrandum%2Flispy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdemonstrandum%2Flispy/lists"}