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

Increase visibility of this project #133

Closed
pablosichert opened this issue Dec 15, 2019 · 11 comments
Closed

Increase visibility of this project #133

pablosichert opened this issue Dec 15, 2019 · 11 comments

Comments

@pablosichert
Copy link
Contributor

Hey there,

I just ported over a grammar written in Bison/Flex to grmtools – and I was super pleased with how the process went. (Sorry for bombarding you with a lot of small issues, those were just things I noted while implementing.)

Considering how mature this library seems to me, I'm wondering if you deliberatively chose not to advertise it more (-> more maintenance effort)?

I spent a lot of time researching and trying parser generators for Rust, but none of the existing ones ticked all the boxes that I were looking for, until I found this one.

In case you're interested in this project having more visibility (which in my opinion would be useful to a lot of people) I think the Readme could be a bit more elaborate and the repository could be tagged with some topics. Submitting it to relevant aggregators (/r/rust, hackernews, ...) after having a representative landing page would certainly help as well.

Thank you for the huge effort and developing this project in public!

@ltratt
Copy link
Member

ltratt commented Dec 16, 2019

I'm glad you've found this useful, and thanks for pointing out limitations -- it helps make things better! There's been no particular intent to keep this quiet, nor any intent so far to publicise it. I view the libraries herein as semi-mature, in the sense that I'm still prepared to make breaking API changes (e.g. #125) if it usefully improves things. That said, I've been using these libraries in other projects fairly happily, and I know others have too, which is a decent sign that things are probably ready for a somewhat wider audience. I take your point about the README's brevity, though I hope that the quickstart goes some way to rectifying that. I will beef up the README. We'll probably have a 0.5.0 release at some point this week or so and maybe that will help find these libraries a few more users!

@ptersilie
Copy link
Member

ptersilie commented Dec 16, 2019

I take your point about the README's brevity, though I hope that the quickstart goes some way to rectifying that.

As a quick fix, we could probably just copy over parts of the (or the entire) quickstart guide into the README, which should save some people with particularly short attention spans an extra click.

@ptersilie
Copy link
Member

I will have a go at the README then.

@ltratt
Copy link
Member

ltratt commented Dec 16, 2019

Thanks! As well as doing this, it might be worth checking that the quickstart guide is still 100% accurate and as simple as it could be. It wouldn't surprise me if it could be improved.

bors bot added a commit that referenced this issue Dec 21, 2019
140: Add badges linking to crates.io r=ltratt a=pablosichert

#133

The crates.io badges are practical in a way that they
- make it obvious at first glance which components are contained in this project
- identify the current version numbers
- link to the documentation of the individual projects and their READMEs

Co-authored-by: Pablo Sichert <mail@pablosichert.com>
bors bot added a commit that referenced this issue Feb 17, 2020
150: Add examples for lexer / parser files to main README r=ltratt a=pablosichert

Hey there, I think examples for the actual lexer and parser files on the landing page could be valuable (although they add a small burden of needing to be kept up-to-date).

I copied those from [here](https://github.com/softdevteam/grmtools/blob/edeb6fafa613d64c05d7f282a1616220df6baf44/lrpar/README.md) and added Rust syntax hightlighting (because I think it works exceptionally well with those).

#133

Co-authored-by: Pablo Sichert <mail@pablosichert.com>
@rljacobson
Copy link
Contributor

rljacobson commented Feb 21, 2020

What I miss in the documentation is some clarity about which features of lex/flex are supported: yytext, yyleng, yymore/yyless, yywrap, REJECT, ECHO, start conditions, character tables, %{ and %} delimiters.... Another thought: ideally, the documentation would be usable to someone who has no experience with lex or yacc, as many in the latest generation of CS majors have never used those tools due to the proliferation of alternative tools and changing priorities in CS education, and I suspect the Rust community has more than its share of such people.

But I'm not complaining. I'm just grateful that you are willing and able to share your code with me! I echo @pablosichert's sentiments. The first time I went searching for a lexer/parser generator solution in Rust, I came to the conclusion that I would have to write my own if I wanted something with the (rather humble) feature set I needed. I didn't find grmtools until later. So far, it is the only library of its kind that I would actually recommend to someone. Thanks!

@pablosichert
Copy link
Contributor Author

pablosichert commented Feb 21, 2020

I'd like to suggest some tags that could be put onto the main page of the repository (as an owner, you should be able to see the edit button on the top):

parser generator, lexer, parser, grammar, rust and maybe also lex, yacc / bison, flex

...because I would have really liked back then to find this repo by those search terms.

Edit: Looks like most of those are already in place for the crates, but could also be copied into the GitHub page:

keywords = ["yacc", "grammar"]

categories = ["parsing"]

keywords = ["parser", "LR", "yacc", "grammar"]

categories = ["parsing"]

@ltratt
Copy link
Member

ltratt commented Feb 21, 2020

What I miss in the documentation is some clarity about which features of lex/flex are supported: yytext, yyleng, yymore/yyless, yywrap, REJECT, ECHO, start conditions, character tables, %{ and %} delimiters.

I take your point on this: I think that I can cover most of this fairly easily.

Another thought: ideally, the documentation would be usable to someone who has no experience with lex or yacc

This is a lot of work :) What I think we can easily do, and building on your first point, is to point people at the exiting yacc docs and then explain the differences more clearly.

I will try and raise a PR on this in the coming days.

@ltratt
Copy link
Member

ltratt commented Feb 21, 2020

@pablosichert I didn't know about "manage topics" before, and I must admit that I'm not sure how many people find things that way, but it certainly does no harm to add them in -- I've just done so.

@pablosichert
Copy link
Contributor Author

I assumed that those might be used to create the HTML "keywords" meta tag, so that search engines pick them up.

Just inspected the HTML source and I seem to be wrong.

Maybe it helps anyway, thank you!

@pablosichert
Copy link
Contributor Author

Another thought: ideally, the documentation would be usable to someone who has no experience with lex or yacc

Might be worth linking to an article of BNF somewhere in the docs, e.g. https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form, and state that it is assumed that the reader is somewhat familiar with it.

bors bot added a commit that referenced this issue Feb 24, 2020
158: Briefly document major differences relative to Lex/Yacc. r=ptersilie a=ltratt

This is intended to start addressing #133 (comment) -- we could, and probably should, do more, but this is a start at least.

Co-authored-by: Laurence Tratt <laurie@tratt.net>
@pablosichert
Copy link
Contributor Author

For my part I'm very happy with the progress that has been made here so far, thank you!

Going to close this one, as there isn't anything actionable left (or should be moved into separate, smaller issues).

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

4 participants