{"action":"closed","number":422,"pull_request":{"url":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422","id":234759888,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0NzU5ODg4","html_url":"https://github.com/lalrpop/lalrpop/pull/422","diff_url":"https://github.com/lalrpop/lalrpop/pull/422.diff","patch_url":"https://github.com/lalrpop/lalrpop/pull/422.patch","issue_url":"https://api.github.com/repos/lalrpop/lalrpop/issues/422","number":422,"state":"closed","locked":false,"title":"extract state machine","user":{"login":"Marwes","id":957312,"node_id":"MDQ6VXNlcjk1NzMxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/957312?v=4","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},"body":"Rebase of #395 \r\n\r\nThis branch refactors everything so that we the actual parsing is done by a generic function in lalrpop-util, and we just generate the parsing table, action code, and a \"glue impl\" that binds it all together. This is much nicer to read (esp. the error handling code) and opens the door to more ambitious transformations (e.g., a \"push-mode\" parser that you feed tokens to, instead of one that pulls tokens from you).\r\n\r\nThis is slightly backwards incompatible, in that we now require tokens to be T: Clone no matter what. We used to only require that if the error recovery feature was used. (Well, I suppose we don't require that if you use the non-table-driven, recursive ascent codegen feature.)\r\n\r\nFixes #303 \r\nCloses #395","created_at":"2018-11-29T19:34:00Z","updated_at":"2018-12-10T20:51:37Z","closed_at":"2018-12-10T20:51:37Z","merged_at":"2018-12-10T20:51:37Z","merge_commit_sha":"64bed5ca63c87a693e4b532222f23e1831507a60","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422/commits","review_comments_url":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422/comments","review_comment_url":"https://api.github.com/repos/lalrpop/lalrpop/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lalrpop/lalrpop/issues/422/comments","statuses_url":"https://api.github.com/repos/lalrpop/lalrpop/statuses/548df5c9f80df7d86500b29d07adfdc1b72a4631","head":{"label":"Marwes:ndm-extract-state-machine-rebase","ref":"ndm-extract-state-machine-rebase","sha":"548df5c9f80df7d86500b29d07adfdc1b72a4631","user":{"login":"Marwes","id":957312,"node_id":"MDQ6VXNlcjk1NzMxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/957312?v=4","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},"repo":{"id":73131401,"node_id":"MDEwOlJlcG9zaXRvcnk3MzEzMTQwMQ==","name":"lalrpop","full_name":"Marwes/lalrpop","private":false,"owner":{"login":"Marwes","id":957312,"node_id":"MDQ6VXNlcjk1NzMxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/957312?v=4","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},"html_url":"https://github.com/Marwes/lalrpop","description":"LR(1) parser generator for Rust","fork":true,"url":"https://api.github.com/repos/Marwes/lalrpop","forks_url":"https://api.github.com/repos/Marwes/lalrpop/forks","keys_url":"https://api.github.com/repos/Marwes/lalrpop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Marwes/lalrpop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Marwes/lalrpop/teams","hooks_url":"https://api.github.com/repos/Marwes/lalrpop/hooks","issue_events_url":"https://api.github.com/repos/Marwes/lalrpop/issues/events{/number}","events_url":"https://api.github.com/repos/Marwes/lalrpop/events","assignees_url":"https://api.github.com/repos/Marwes/lalrpop/assignees{/user}","branches_url":"https://api.github.com/repos/Marwes/lalrpop/branches{/branch}","tags_url":"https://api.github.com/repos/Marwes/lalrpop/tags","blobs_url":"https://api.github.com/repos/Marwes/lalrpop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Marwes/lalrpop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Marwes/lalrpop/git/refs{/sha}","trees_url":"https://api.github.com/repos/Marwes/lalrpop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Marwes/lalrpop/statuses/{sha}","languages_url":"https://api.github.com/repos/Marwes/lalrpop/languages","stargazers_url":"https://api.github.com/repos/Marwes/lalrpop/stargazers","contributors_url":"https://api.github.com/repos/Marwes/lalrpop/contributors","subscribers_url":"https://api.github.com/repos/Marwes/lalrpop/subscribers","subscription_url":"https://api.github.com/repos/Marwes/lalrpop/subscription","commits_url":"https://api.github.com/repos/Marwes/lalrpop/commits{/sha}","git_commits_url":"https://api.github.com/repos/Marwes/lalrpop/git/commits{/sha}","comments_url":"https://api.github.com/repos/Marwes/lalrpop/comments{/number}","issue_comment_url":"https://api.github.com/repos/Marwes/lalrpop/issues/comments{/number}","contents_url":"https://api.github.com/repos/Marwes/lalrpop/contents/{+path}","compare_url":"https://api.github.com/repos/Marwes/lalrpop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Marwes/lalrpop/merges","archive_url":"https://api.github.com/repos/Marwes/lalrpop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Marwes/lalrpop/downloads","issues_url":"https://api.github.com/repos/Marwes/lalrpop/issues{/number}","pulls_url":"https://api.github.com/repos/Marwes/lalrpop/pulls{/number}","milestones_url":"https://api.github.com/repos/Marwes/lalrpop/milestones{/number}","notifications_url":"https://api.github.com/repos/Marwes/lalrpop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Marwes/lalrpop/labels{/name}","releases_url":"https://api.github.com/repos/Marwes/lalrpop/releases{/id}","deployments_url":"https://api.github.com/repos/Marwes/lalrpop/deployments","created_at":"2016-11-07T23:49:10Z","updated_at":"2016-11-07T23:49:11Z","pushed_at":"2018-11-29T18:58:56Z","git_url":"git://github.com/Marwes/lalrpop.git","ssh_url":"git@github.com:Marwes/lalrpop.git","clone_url":"https://github.com/Marwes/lalrpop.git","svn_url":"https://github.com/Marwes/lalrpop","homepage":"","size":6343,"stargazers_count":0,"watchers_count":0,"language":"Rust","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"lalrpop:master","ref":"master","sha":"842fe732bac76b4320331f355d5f778578b63ac2","user":{"login":"lalrpop","id":35799982,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1Nzk5OTgy","avatar_url":"https://avatars1.githubusercontent.com/u/35799982?v=4","gravatar_id":"","url":"https://api.github.com/users/lalrpop","html_url":"https://github.com/lalrpop","followers_url":"https://api.github.com/users/lalrpop/followers","following_url":"https://api.github.com/users/lalrpop/following{/other_user}","gists_url":"https://api.github.com/users/lalrpop/gists{/gist_id}","starred_url":"https://api.github.com/users/lalrpop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lalrpop/subscriptions","organizations_url":"https://api.github.com/users/lalrpop/orgs","repos_url":"https://api.github.com/users/lalrpop/repos","events_url":"https://api.github.com/users/lalrpop/events{/privacy}","received_events_url":"https://api.github.com/users/lalrpop/received_events","type":"Organization","site_admin":false},"repo":{"id":37341121,"node_id":"MDEwOlJlcG9zaXRvcnkzNzM0MTEyMQ==","name":"lalrpop","full_name":"lalrpop/lalrpop","private":false,"owner":{"login":"lalrpop","id":35799982,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1Nzk5OTgy","avatar_url":"https://avatars1.githubusercontent.com/u/35799982?v=4","gravatar_id":"","url":"https://api.github.com/users/lalrpop","html_url":"https://github.com/lalrpop","followers_url":"https://api.github.com/users/lalrpop/followers","following_url":"https://api.github.com/users/lalrpop/following{/other_user}","gists_url":"https://api.github.com/users/lalrpop/gists{/gist_id}","starred_url":"https://api.github.com/users/lalrpop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lalrpop/subscriptions","organizations_url":"https://api.github.com/users/lalrpop/orgs","repos_url":"https://api.github.com/users/lalrpop/repos","events_url":"https://api.github.com/users/lalrpop/events{/privacy}","received_events_url":"https://api.github.com/users/lalrpop/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/lalrpop/lalrpop","description":"LR(1) parser generator for Rust","fork":false,"url":"https://api.github.com/repos/lalrpop/lalrpop","forks_url":"https://api.github.com/repos/lalrpop/lalrpop/forks","keys_url":"https://api.github.com/repos/lalrpop/lalrpop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lalrpop/lalrpop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lalrpop/lalrpop/teams","hooks_url":"https://api.github.com/repos/lalrpop/lalrpop/hooks","issue_events_url":"https://api.github.com/repos/lalrpop/lalrpop/issues/events{/number}","events_url":"https://api.github.com/repos/lalrpop/lalrpop/events","assignees_url":"https://api.github.com/repos/lalrpop/lalrpop/assignees{/user}","branches_url":"https://api.github.com/repos/lalrpop/lalrpop/branches{/branch}","tags_url":"https://api.github.com/repos/lalrpop/lalrpop/tags","blobs_url":"https://api.github.com/repos/lalrpop/lalrpop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lalrpop/lalrpop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lalrpop/lalrpop/git/refs{/sha}","trees_url":"https://api.github.com/repos/lalrpop/lalrpop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lalrpop/lalrpop/statuses/{sha}","languages_url":"https://api.github.com/repos/lalrpop/lalrpop/languages","stargazers_url":"https://api.github.com/repos/lalrpop/lalrpop/stargazers","contributors_url":"https://api.github.com/repos/lalrpop/lalrpop/contributors","subscribers_url":"https://api.github.com/repos/lalrpop/lalrpop/subscribers","subscription_url":"https://api.github.com/repos/lalrpop/lalrpop/subscription","commits_url":"https://api.github.com/repos/lalrpop/lalrpop/commits{/sha}","git_commits_url":"https://api.github.com/repos/lalrpop/lalrpop/git/commits{/sha}","comments_url":"https://api.github.com/repos/lalrpop/lalrpop/comments{/number}","issue_comment_url":"https://api.github.com/repos/lalrpop/lalrpop/issues/comments{/number}","contents_url":"https://api.github.com/repos/lalrpop/lalrpop/contents/{+path}","compare_url":"https://api.github.com/repos/lalrpop/lalrpop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lalrpop/lalrpop/merges","archive_url":"https://api.github.com/repos/lalrpop/lalrpop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lalrpop/lalrpop/downloads","issues_url":"https://api.github.com/repos/lalrpop/lalrpop/issues{/number}","pulls_url":"https://api.github.com/repos/lalrpop/lalrpop/pulls{/number}","milestones_url":"https://api.github.com/repos/lalrpop/lalrpop/milestones{/number}","notifications_url":"https://api.github.com/repos/lalrpop/lalrpop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lalrpop/lalrpop/labels{/name}","releases_url":"https://api.github.com/repos/lalrpop/lalrpop/releases{/id}","deployments_url":"https://api.github.com/repos/lalrpop/lalrpop/deployments","created_at":"2015-06-12T19:41:37Z","updated_at":"2018-12-10T17:26:48Z","pushed_at":"2018-12-10T20:51:37Z","git_url":"git://github.com/lalrpop/lalrpop.git","ssh_url":"git@github.com:lalrpop/lalrpop.git","clone_url":"https://github.com/lalrpop/lalrpop.git","svn_url":"https://github.com/lalrpop/lalrpop","homepage":"","size":6714,"stargazers_count":800,"watchers_count":800,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":107,"mirror_url":null,"archived":false,"open_issues_count":83,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":107,"open_issues":83,"watchers":800,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422"},"html":{"href":"https://github.com/lalrpop/lalrpop/pull/422"},"issue":{"href":"https://api.github.com/repos/lalrpop/lalrpop/issues/422"},"comments":{"href":"https://api.github.com/repos/lalrpop/lalrpop/issues/422/comments"},"review_comments":{"href":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422/comments"},"review_comment":{"href":"https://api.github.com/repos/lalrpop/lalrpop/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lalrpop/lalrpop/pulls/422/commits"},"statuses":{"href":"https://api.github.com/repos/lalrpop/lalrpop/statuses/548df5c9f80df7d86500b29d07adfdc1b72a4631"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"Marwes","id":957312,"node_id":"MDQ6VXNlcjk1NzMxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/957312?v=4","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},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":21,"additions":13646,"deletions":11224,"changed_files":23}}
{"actor":{"display_login":"Marwes"}}