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

Roadmap #3

Open
3 of 16 tasks
TotalVerb opened this issue Jan 24, 2017 · 8 comments
Open
3 of 16 tasks

Roadmap #3

TotalVerb opened this issue Jan 24, 2017 · 8 comments

Comments

@TotalVerb
Copy link
Owner

TotalVerb commented Jan 24, 2017

Meta

  • Register the SExpressions.jl package

Dependencies

  • Sever FunctionalCollections dependency (use append from a lightweight vocabulary package)

Lisp Parser

  • Parse . properly
  • Unquote splicing
  • Add a test suite to check Racket compliance
  • 50% compliance with Racket parsing rules
  • 70% compliance with Racket parsing rules
  • 80% compliance with Racket parsing rules
  • 90% compliance with Racket parsing rules
  • 95% compliance with Racket parsing rules
  • Improve the performance of the lisp parser
  • Improve the error messages generated by the lisp parser
  • Keep more syntactic information in the lisp parser

Printing of s-expressions

  • Print improper lists reasonably
  • Improve performance of show (especially multiline)
  • Improve heuristics for multiline show
@TotalVerb TotalVerb changed the title Plan for the future Roadmap Apr 13, 2017
@mlhetland
Copy link

I'm thinking of using I-Expressions for a project (i.e., adding indentation as an optional alternative to parentheses). Is that something that would be of interest as a feature in SExpressions.jl? (If so, I guess this is a “feature request,” but I could also volunteer some effort toward implementing the feature, if need be.)

@mlhetland
Copy link

(I'd be fine with a subset of the I-Expression specification; for example, it might make sense to require DEDENTs to match some earlier level of indentation, as in, e.g., Python – but I guess one could issue a warning if this isn't the case.)

@TotalVerb
Copy link
Owner Author

@mlhetland I haven't had the time to maintain this package in some time, and don't know if I will have time in the future. So I'd recommend making a new package for what you need.

@c42f
Copy link
Contributor

c42f commented Jun 11, 2019

What's the status of this package, it looks like it is still largely dormant? There's been some talk of having a stdlib for parsing S-Expressions as a utility for testing the julia lowering passes over at JuliaLang/julia#32201.

I think SExpressions could be a starting point for those purposes; would you be happy if we took some code / inspiration from this repository and adapted it to the needs of a stdlib? I think a stdlib might strive to be even more lightweight than what you've got here but I do like what I've seen so far :-)

@TotalVerb
Copy link
Owner Author

Hi @c42f, sorry for the late response. I don't think I will necessarily have time to maintain this package in the future. Feel free to take any parts that are correct, lightweight, or helpful, if those parts do exist 😄.

@c42f
Copy link
Contributor

c42f commented Jun 17, 2019

Awesome, many thanks :-) I'm sure those parts do exist.

@mlhetland
Copy link

I have some very lightweight S-expression functionality in Tody. The relevant file is here: expr.jl. Not saying it's a better alternative, but it's very lightweight and reasonably standalone :-). (I use the Call type there, which I define in the Tody.jl file, but it's a trivial wrapper around a vector.)

@c42f
Copy link
Contributor

c42f commented Jul 11, 2019

Thanks, it looks neat.

It turns out that with a few tweaks to make it easier to enter arbitrary Expr heads, I was able to support the needs of Base using normal Julia ASTs. So I probably won't be pursuing a stdlib for this after all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants