Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a simple C++ embeddable Lisp #22

Open
2 of 25 tasks
Tracked by #21
oubiwann opened this issue Apr 1, 2023 · 1 comment
Open
2 of 25 tasks
Tracked by #21

Create a simple C++ embeddable Lisp #22

oubiwann opened this issue Apr 1, 2023 · 1 comment
Labels
Milestone

Comments

@oubiwann
Copy link
Contributor

oubiwann commented Apr 1, 2023

This will be a lot more fun than "just" using Chez Scheme (to be honest, that's actually a pretty daunting task ... with all the effort and time going into build setup and config; I'd rather spend that time doing fun coding, even if the end result takes longer).

This feature is part of the following epic:

Template for development process:

Possible parsers:

Major tasks:

  • Code layout
    • add a new subdir for the lisp in ./src
    • add a new subdir for the lisp in ./include
  • REPL
  • Parser
    • find a good parsing library and integrate into the build process
    • find or define a grammar for S-expressions or reverse polish notation
    • or use a library to both, in one go
  • Memory protection
    • add max memory to use for stored environment
    • print warning message when max limit is close
    • print error message when max limit is reached
    • at MAX_HISTORY limit, do not allow for commands to be saved in history/display vecs
  • Eval
  • Error Handling
  • S-expressions
  • Garbage Collection
  • Built-in Functions
  • Variables
  • Functions
  • Conditionals
  • Types

Once this is done, we can move onto the DSL:

This Lisp flavour is not general purpose; it is specifically for embedding a DSL in a VCV Rack module. As such, there are features that aren't needed and won't be included:

  • Quoting
  • Macros
@oubiwann oubiwann changed the title Find or create a simple C++ embeddable Lisp (scheme's tend to be smaller) Create a simple C++ embeddable Lisp Apr 1, 2023
@oubiwann oubiwann added this to the 2.1.0 milestone Apr 1, 2023
@oubiwann
Copy link
Contributor Author

oubiwann commented Apr 1, 2023

Possible s-expression parser:

@oubiwann oubiwann added epic and removed feature labels Apr 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant