{"id":20817261,"url":"https://github.com/gozaddy/cs-403-lisp-interpreter","last_synced_at":"2026-04-29T03:05:13.748Z","repository":{"id":209217820,"uuid":"686076024","full_name":"GoZaddy/cs-403-lisp-interpreter","owner":"GoZaddy","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-06T07:02:31.000Z","size":214,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T15:55:40.774Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/GoZaddy.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-09-01T17:23:29.000Z","updated_at":"2023-11-25T20:28:36.000Z","dependencies_parsed_at":"2024-11-17T21:40:14.540Z","dependency_job_id":"5a79b3dc-434e-40dc-989e-0257eab0e0ca","html_url":"https://github.com/GoZaddy/cs-403-lisp-interpreter","commit_stats":null,"previous_names":["gozaddy/cs-403-lisp-interpreter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoZaddy%2Fcs-403-lisp-interpreter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoZaddy%2Fcs-403-lisp-interpreter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoZaddy%2Fcs-403-lisp-interpreter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoZaddy%2Fcs-403-lisp-interpreter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoZaddy","download_url":"https://codeload.github.com/GoZaddy/cs-403-lisp-interpreter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243165502,"owners_count":20246722,"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":[],"created_at":"2024-11-17T21:40:11.685Z","updated_at":"2025-12-28T06:17:50.495Z","avatar_url":"https://github.com/GoZaddy.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yisp Interpreter\n\n##  Building executable for interpreter\n\n- Make sure you're in the root directory of the project\n- Make sure you have g++ compiler installed\n\nIf you're not sure:\nRun `g++ --version` in command line to find out. You should get something like this:\n```\ng++.exe (x86_64-posix-seh, Built by strawberryperl.com project) 8.3.0\nCopyright (C) 2018 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions.  There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n```\n\n- Now Run:\n```\ng++ -w -std=c++11 src/main.cpp src/scanner.cpp src/token.cpp src/util.cpp src/parser.cpp src/expr.cpp src/interpreter.cpp src/lisp_function.cpp src/native_funcs.cpp src/environment.cpp src/resolver.cpp\n```\n## Features\nThe core features listed in the project's requirements are all implemented. The \"quote\" shortcut operator(') is also implemented for defining literals\n\n## Testing\n\nIn the root directory, you will find my solution to the blackjack and bowling problems assigned earlier in the semester with some simpler tests in other files. You can run these files using the following shell command:\n\n(blackjack.lsp and bowling.lsp are file names. Replace these with a suitable file name to run that file)\n\nFor windows:\n```\n./a.exe blackjack.lsp\n\n./a.exe bowling.lsp\n```\n\n\nFor mac/linux:\n```\n./a.out blackjack.lsp\n\n./a.out bowling.lsp\n```\n\n## REPL\n\nYou can also spin up a yisp REPL session by running:\n\n(Windows)\n```\na.exe\n```\n\n(Mac/Linux)\n```\na.out\n```\n\n## What doesn't work / what works differently than you might expect\nHere's a list of things that are not supported or might not work as you might expect\n- Double minus sign\n```\n(- - 3) ;; you might expect this to give evaluate as -(-3) and give you 3. However this will throw an error\n\n(- (- 3)) ;; this is the correct way\n```\n\n- Writing lists in your code\nThe only supported ways to work with lists are\n    - List literals: `(car '(1 2 3))`\n    - Functions that return lists: `(car (get_list))`\n    - Through the `list` function: `(car (list 1 2 3))`\n\n`(1 2 3)` is evaluated as calling the function 1 with arguments 2 and 3 which will throw an error\n\n\n- `if` is not supported but `cond` is\n- Unnecessary nesting will throw errors. For example: `(((((+ 1 2)))))` should be written as `(+ 1 2)`\n\n- A cons operation with a valid list output will simply return a list:\n```\n(cons 1 ()) ;; returns (1)\n(cons 1 2) ;; returns (1 . 2)\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgozaddy%2Fcs-403-lisp-interpreter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgozaddy%2Fcs-403-lisp-interpreter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgozaddy%2Fcs-403-lisp-interpreter/lists"}