{"action":"created","issue":{"url":"https://api.github.com/repos/hawkw/seax/issues/22","labels_url":"https://api.github.com/repos/hawkw/seax/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/hawkw/seax/issues/22/comments","events_url":"https://api.github.com/repos/hawkw/seax/issues/22/events","html_url":"https://github.com/hawkw/seax/issues/22","id":62132346,"number":22,"title":"Decide on parsing library for Scheme parser","user":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hawkw/seax/labels/question","name":"question","color":"cc317c"},{"url":"https://api.github.com/repos/hawkw/seax/labels/scheme","name":"scheme","color":"d4c5f9"}],"state":"open","locked":false,"assignee":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/hawkw/seax/milestones/5","html_url":"https://github.com/hawkw/seax/milestones/seax-scheme%20v1.0","labels_url":"https://api.github.com/repos/hawkw/seax/milestones/5/labels","id":1023506,"number":5,"title":"seax-scheme v1.0","description":"seax-scheme v1.0 is the first working milestone for the Lisp interpreter.\r\n\r\n- [ ] lexer\r\n- [ ] parser\r\n- [ ] basic code generation","creator":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2015-03-16T15:06:15Z","updated_at":"2015-03-16T16:23:30Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2015-03-16T16:23:30Z","updated_at":"2015-03-17T13:16:42Z","closed_at":null,"body":"I've found a handful of libraries for Rust that provide parsing expression grammars (a.k.a. parser-combinators), my preferred method of writing a parser.\r\n\r\n+ [`rust-peg`](https://github.com/kevinmehall/rust-peg) by @kevinmehall\r\n+ [`nom`](https://github.com/Geal/nom/) by @Geal\r\n+ [`rparse`](https://github.com/jesse99/rparse) by @jesse99\r\n\r\nOther options (non-PEG) include:\r\n\r\n+ [`parseil`](https://github.com/shepmaster/peresil) by @shepmaster (this looks very incomplete)\r\n+ [`rust-scan`](https://github.com/DanielKeep/rust-scan/) by @DanielKeep (lexer-only)\r\n+ Writing the parser/lexer with `lex`/`flex` and `yacc` and linking in the compiled C code using Rust FFI.\r\n   As my dislike of `yacc` is rather well-known, I think that it's fairly obvious that I am Not Going To Do This."},"comment":{"url":"https://api.github.com/repos/hawkw/seax/issues/comments/82341035","html_url":"https://github.com/hawkw/seax/issues/22#issuecomment-82341035","issue_url":"https://api.github.com/repos/hawkw/seax/issues/22","id":82341035,"user":{"login":"Marwes","id":957312,"avatar_url":"https://avatars.githubusercontent.com/u/957312?v=3","gravatar_id":"","url":"https://api.github.com/users/Marwes","html_url":"https://github.com/Marwes","followers_url":"https://api.github.com/users/Marwes/followers","following_url":"https://api.github.com/users/Marwes/following{/other_user}","gists_url":"https://api.github.com/users/Marwes/gists{/gist_id}","starred_url":"https://api.github.com/users/Marwes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Marwes/subscriptions","organizations_url":"https://api.github.com/users/Marwes/orgs","repos_url":"https://api.github.com/users/Marwes/repos","events_url":"https://api.github.com/users/Marwes/events{/privacy}","received_events_url":"https://api.github.com/users/Marwes/received_events","type":"User","site_admin":false},"created_at":"2015-03-17T13:16:42Z","updated_at":"2015-03-17T13:16:42Z","body":"@hawkw Any thoughts on parser-combinator? Considering it is to parsec what nom is to attoparsec I'm a bit curious why you decided against it?"}}