{"action":"created","comment":{"url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/comments/26590607","id":26590607,"diff_hunk":"@@ -0,0 +1,82 @@\n+<?php\n+\n+namespace Graviton\\Rql\\Parser;\n+\n+use Graviton\\Rql\\Lexer;\n+use Graviton\\Rql\\Parser\\ParserUtil;\n+\n+/**\n+ * @author  List of contributors <https://github.com/libgraviton/php-rql-parser/graphs/contributors>\n+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License\n+ * @link    http://swisscom.ch\n+ */\n+class ParserUtil\n+{\n+    public static function parseStart(Lexer &$lexer)","path":"src/Parser/ParserUtil.php","position":15,"original_position":15,"commit_id":"0364f49a9a9474349693b21783a5a126dfe0a7fc","original_commit_id":"0364f49a9a9474349693b21783a5a126dfe0a7fc","user":{"login":"lapistano","id":95115,"avatar_url":"https://avatars.githubusercontent.com/u/95115?v=3","gravatar_id":"","url":"https://api.github.com/users/lapistano","html_url":"https://github.com/lapistano","followers_url":"https://api.github.com/users/lapistano/followers","following_url":"https://api.github.com/users/lapistano/following{/other_user}","gists_url":"https://api.github.com/users/lapistano/gists{/gist_id}","starred_url":"https://api.github.com/users/lapistano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lapistano/subscriptions","organizations_url":"https://api.github.com/users/lapistano/orgs","repos_url":"https://api.github.com/users/lapistano/repos","events_url":"https://api.github.com/users/lapistano/events{/privacy}","received_events_url":"https://api.github.com/users/lapistano/received_events","type":"User","site_admin":false},"body":"docBlocks","created_at":"2015-03-17T16:44:41Z","updated_at":"2015-03-17T16:44:41Z","html_url":"https://github.com/libgraviton/php-rql-parser/pull/11#discussion_r26590607","pull_request_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11","_links":{"self":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/comments/26590607"},"html":{"href":"https://github.com/libgraviton/php-rql-parser/pull/11#discussion_r26590607"},"pull_request":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11"}}},"pull_request":{"url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11","id":29703153,"html_url":"https://github.com/libgraviton/php-rql-parser/pull/11","diff_url":"https://github.com/libgraviton/php-rql-parser/pull/11.diff","patch_url":"https://github.com/libgraviton/php-rql-parser/pull/11.patch","issue_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/11","number":11,"state":"open","locked":false,"title":"AST, Parser and MongoOdm refactor","user":{"login":"hairmare","id":116588,"avatar_url":"https://avatars.githubusercontent.com/u/116588?v=3","gravatar_id":"","url":"https://api.github.com/users/hairmare","html_url":"https://github.com/hairmare","followers_url":"https://api.github.com/users/hairmare/followers","following_url":"https://api.github.com/users/hairmare/following{/other_user}","gists_url":"https://api.github.com/users/hairmare/gists{/gist_id}","starred_url":"https://api.github.com/users/hairmare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hairmare/subscriptions","organizations_url":"https://api.github.com/users/hairmare/orgs","repos_url":"https://api.github.com/users/hairmare/repos","events_url":"https://api.github.com/users/hairmare/events{/privacy}","received_events_url":"https://api.github.com/users/hairmare/received_events","type":"User","site_admin":false},"body":"The main focus on the is PR is the AST. The rest ist just here to show that it works ;) Have a look at the [branches README](https://github.com/libgraviton/php-rql-parser/blob/feature/ast-refactor/README.md).\r\n\r\n* [x] refactor AST to more classes and interfaces\r\n* [x] refactor Parser to use the Strategy pattern to do most of the work\r\n* [x] make existing Visitor support the new AST design \r\n* [x] get #9 merged (it's also in here and I want this PR to be uncluttered, if we don't merge it i'll revert here as well)\r\n* [x] add tests for example from #6 and make sure they work\r\n* [x] refactor SortOperation (keeping #10 in mind, we support both cases in the AST)\r\n* [x] get input on AST and maybe refactor it (i really like this verbose AST more than expected)\r\n\r\nThis fixes #10 and #6. It also makes us ready for nested queries and extending both the AST and the MongoDB visitors functionality. With this the AST is at a state that it can be used by others to implement their own visitors (ie. PHP_ActiveRecord or doctrine-orm).\r\n\r\nWith this and the work in #12 we will be ready to release ``2.0.0-alpha2``.\r\n\r\nFor stabilising  ``2.0.0`` there is still work to be done:\r\n\r\n* implement sugar syntax (no changes to the AST)\r\n* support more things in the ast\r\n* finish docs with topics on how to extend the ast and more\r\n* split out mongo-odm visitor into its own repo (if we ever run into versioning problems with mongo this makes alot of sense, it also paves the way for integrating new visitors without cluttering our repo and issue tracker)\r\n* also, more refactoring of the visitor to really make the best use of this ASTs interfaces\r\n* expose proper error handling api and add optional logging\r\n\r\nI will create the corresponding issues for these after this is merged.","created_at":"2015-02-20T15:17:23Z","updated_at":"2015-03-17T16:44:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"049819fec7df9cf3709625e56dc3db69b25a71ab","assignee":null,"milestone":{"url":"https://api.github.com/repos/libgraviton/php-rql-parser/milestones/1","html_url":"https://github.com/libgraviton/php-rql-parser/milestones/v2.0.0-alpha2","labels_url":"https://api.github.com/repos/libgraviton/php-rql-parser/milestones/1/labels","id":1020186,"number":1,"title":"v2.0.0-alpha2","description":"","creator":{"login":"hairmare","id":116588,"avatar_url":"https://avatars.githubusercontent.com/u/116588?v=3","gravatar_id":"","url":"https://api.github.com/users/hairmare","html_url":"https://github.com/hairmare","followers_url":"https://api.github.com/users/hairmare/followers","following_url":"https://api.github.com/users/hairmare/following{/other_user}","gists_url":"https://api.github.com/users/hairmare/gists{/gist_id}","starred_url":"https://api.github.com/users/hairmare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hairmare/subscriptions","organizations_url":"https://api.github.com/users/hairmare/orgs","repos_url":"https://api.github.com/users/hairmare/repos","events_url":"https://api.github.com/users/hairmare/events{/privacy}","received_events_url":"https://api.github.com/users/hairmare/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-03-13T12:14:58Z","updated_at":"2015-03-13T13:05:35Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11/commits","review_comments_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11/comments","review_comment_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/comments{/number}","comments_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/11/comments","statuses_url":"https://api.github.com/repos/libgraviton/php-rql-parser/statuses/0364f49a9a9474349693b21783a5a126dfe0a7fc","head":{"label":"libgraviton:feature/ast-refactor","ref":"feature/ast-refactor","sha":"0364f49a9a9474349693b21783a5a126dfe0a7fc","user":{"login":"libgraviton","id":4174061,"avatar_url":"https://avatars.githubusercontent.com/u/4174061?v=3","gravatar_id":"","url":"https://api.github.com/users/libgraviton","html_url":"https://github.com/libgraviton","followers_url":"https://api.github.com/users/libgraviton/followers","following_url":"https://api.github.com/users/libgraviton/following{/other_user}","gists_url":"https://api.github.com/users/libgraviton/gists{/gist_id}","starred_url":"https://api.github.com/users/libgraviton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libgraviton/subscriptions","organizations_url":"https://api.github.com/users/libgraviton/orgs","repos_url":"https://api.github.com/users/libgraviton/repos","events_url":"https://api.github.com/users/libgraviton/events{/privacy}","received_events_url":"https://api.github.com/users/libgraviton/received_events","type":"Organization","site_admin":false},"repo":{"id":26475077,"name":"php-rql-parser","full_name":"libgraviton/php-rql-parser","owner":{"login":"libgraviton","id":4174061,"avatar_url":"https://avatars.githubusercontent.com/u/4174061?v=3","gravatar_id":"","url":"https://api.github.com/users/libgraviton","html_url":"https://github.com/libgraviton","followers_url":"https://api.github.com/users/libgraviton/followers","following_url":"https://api.github.com/users/libgraviton/following{/other_user}","gists_url":"https://api.github.com/users/libgraviton/gists{/gist_id}","starred_url":"https://api.github.com/users/libgraviton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libgraviton/subscriptions","organizations_url":"https://api.github.com/users/libgraviton/orgs","repos_url":"https://api.github.com/users/libgraviton/repos","events_url":"https://api.github.com/users/libgraviton/events{/privacy}","received_events_url":"https://api.github.com/users/libgraviton/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/libgraviton/php-rql-parser","description":"A PHP RQL Parsing Library","fork":false,"url":"https://api.github.com/repos/libgraviton/php-rql-parser","forks_url":"https://api.github.com/repos/libgraviton/php-rql-parser/forks","keys_url":"https://api.github.com/repos/libgraviton/php-rql-parser/keys{/key_id}","collaborators_url":"https://api.github.com/repos/libgraviton/php-rql-parser/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/libgraviton/php-rql-parser/teams","hooks_url":"https://api.github.com/repos/libgraviton/php-rql-parser/hooks","issue_events_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/events{/number}","events_url":"https://api.github.com/repos/libgraviton/php-rql-parser/events","assignees_url":"https://api.github.com/repos/libgraviton/php-rql-parser/assignees{/user}","branches_url":"https://api.github.com/repos/libgraviton/php-rql-parser/branches{/branch}","tags_url":"https://api.github.com/repos/libgraviton/php-rql-parser/tags","blobs_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/refs{/sha}","trees_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/trees{/sha}","statuses_url":"https://api.github.com/repos/libgraviton/php-rql-parser/statuses/{sha}","languages_url":"https://api.github.com/repos/libgraviton/php-rql-parser/languages","stargazers_url":"https://api.github.com/repos/libgraviton/php-rql-parser/stargazers","contributors_url":"https://api.github.com/repos/libgraviton/php-rql-parser/contributors","subscribers_url":"https://api.github.com/repos/libgraviton/php-rql-parser/subscribers","subscription_url":"https://api.github.com/repos/libgraviton/php-rql-parser/subscription","commits_url":"https://api.github.com/repos/libgraviton/php-rql-parser/commits{/sha}","git_commits_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/commits{/sha}","comments_url":"https://api.github.com/repos/libgraviton/php-rql-parser/comments{/number}","issue_comment_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/comments{/number}","contents_url":"https://api.github.com/repos/libgraviton/php-rql-parser/contents/{+path}","compare_url":"https://api.github.com/repos/libgraviton/php-rql-parser/compare/{base}...{head}","merges_url":"https://api.github.com/repos/libgraviton/php-rql-parser/merges","archive_url":"https://api.github.com/repos/libgraviton/php-rql-parser/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/libgraviton/php-rql-parser/downloads","issues_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues{/number}","pulls_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls{/number}","milestones_url":"https://api.github.com/repos/libgraviton/php-rql-parser/milestones{/number}","notifications_url":"https://api.github.com/repos/libgraviton/php-rql-parser/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/libgraviton/php-rql-parser/labels{/name}","releases_url":"https://api.github.com/repos/libgraviton/php-rql-parser/releases{/id}","created_at":"2014-11-11T07:55:49Z","updated_at":"2015-03-10T23:07:49Z","pushed_at":"2015-03-16T00:59:37Z","git_url":"git://github.com/libgraviton/php-rql-parser.git","ssh_url":"git@github.com:libgraviton/php-rql-parser.git","clone_url":"https://github.com/libgraviton/php-rql-parser.git","svn_url":"https://github.com/libgraviton/php-rql-parser","homepage":null,"size":818,"stargazers_count":3,"watchers_count":3,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":4,"forks":2,"open_issues":4,"watchers":3,"default_branch":"develop"}},"base":{"label":"libgraviton:develop","ref":"develop","sha":"03786d93db1c10e52ded24dae5a57898967ad6d9","user":{"login":"libgraviton","id":4174061,"avatar_url":"https://avatars.githubusercontent.com/u/4174061?v=3","gravatar_id":"","url":"https://api.github.com/users/libgraviton","html_url":"https://github.com/libgraviton","followers_url":"https://api.github.com/users/libgraviton/followers","following_url":"https://api.github.com/users/libgraviton/following{/other_user}","gists_url":"https://api.github.com/users/libgraviton/gists{/gist_id}","starred_url":"https://api.github.com/users/libgraviton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libgraviton/subscriptions","organizations_url":"https://api.github.com/users/libgraviton/orgs","repos_url":"https://api.github.com/users/libgraviton/repos","events_url":"https://api.github.com/users/libgraviton/events{/privacy}","received_events_url":"https://api.github.com/users/libgraviton/received_events","type":"Organization","site_admin":false},"repo":{"id":26475077,"name":"php-rql-parser","full_name":"libgraviton/php-rql-parser","owner":{"login":"libgraviton","id":4174061,"avatar_url":"https://avatars.githubusercontent.com/u/4174061?v=3","gravatar_id":"","url":"https://api.github.com/users/libgraviton","html_url":"https://github.com/libgraviton","followers_url":"https://api.github.com/users/libgraviton/followers","following_url":"https://api.github.com/users/libgraviton/following{/other_user}","gists_url":"https://api.github.com/users/libgraviton/gists{/gist_id}","starred_url":"https://api.github.com/users/libgraviton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libgraviton/subscriptions","organizations_url":"https://api.github.com/users/libgraviton/orgs","repos_url":"https://api.github.com/users/libgraviton/repos","events_url":"https://api.github.com/users/libgraviton/events{/privacy}","received_events_url":"https://api.github.com/users/libgraviton/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/libgraviton/php-rql-parser","description":"A PHP RQL Parsing Library","fork":false,"url":"https://api.github.com/repos/libgraviton/php-rql-parser","forks_url":"https://api.github.com/repos/libgraviton/php-rql-parser/forks","keys_url":"https://api.github.com/repos/libgraviton/php-rql-parser/keys{/key_id}","collaborators_url":"https://api.github.com/repos/libgraviton/php-rql-parser/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/libgraviton/php-rql-parser/teams","hooks_url":"https://api.github.com/repos/libgraviton/php-rql-parser/hooks","issue_events_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/events{/number}","events_url":"https://api.github.com/repos/libgraviton/php-rql-parser/events","assignees_url":"https://api.github.com/repos/libgraviton/php-rql-parser/assignees{/user}","branches_url":"https://api.github.com/repos/libgraviton/php-rql-parser/branches{/branch}","tags_url":"https://api.github.com/repos/libgraviton/php-rql-parser/tags","blobs_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/refs{/sha}","trees_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/trees{/sha}","statuses_url":"https://api.github.com/repos/libgraviton/php-rql-parser/statuses/{sha}","languages_url":"https://api.github.com/repos/libgraviton/php-rql-parser/languages","stargazers_url":"https://api.github.com/repos/libgraviton/php-rql-parser/stargazers","contributors_url":"https://api.github.com/repos/libgraviton/php-rql-parser/contributors","subscribers_url":"https://api.github.com/repos/libgraviton/php-rql-parser/subscribers","subscription_url":"https://api.github.com/repos/libgraviton/php-rql-parser/subscription","commits_url":"https://api.github.com/repos/libgraviton/php-rql-parser/commits{/sha}","git_commits_url":"https://api.github.com/repos/libgraviton/php-rql-parser/git/commits{/sha}","comments_url":"https://api.github.com/repos/libgraviton/php-rql-parser/comments{/number}","issue_comment_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/comments{/number}","contents_url":"https://api.github.com/repos/libgraviton/php-rql-parser/contents/{+path}","compare_url":"https://api.github.com/repos/libgraviton/php-rql-parser/compare/{base}...{head}","merges_url":"https://api.github.com/repos/libgraviton/php-rql-parser/merges","archive_url":"https://api.github.com/repos/libgraviton/php-rql-parser/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/libgraviton/php-rql-parser/downloads","issues_url":"https://api.github.com/repos/libgraviton/php-rql-parser/issues{/number}","pulls_url":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls{/number}","milestones_url":"https://api.github.com/repos/libgraviton/php-rql-parser/milestones{/number}","notifications_url":"https://api.github.com/repos/libgraviton/php-rql-parser/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/libgraviton/php-rql-parser/labels{/name}","releases_url":"https://api.github.com/repos/libgraviton/php-rql-parser/releases{/id}","created_at":"2014-11-11T07:55:49Z","updated_at":"2015-03-10T23:07:49Z","pushed_at":"2015-03-16T00:59:37Z","git_url":"git://github.com/libgraviton/php-rql-parser.git","ssh_url":"git@github.com:libgraviton/php-rql-parser.git","clone_url":"https://github.com/libgraviton/php-rql-parser.git","svn_url":"https://github.com/libgraviton/php-rql-parser","homepage":null,"size":818,"stargazers_count":3,"watchers_count":3,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":4,"forks":2,"open_issues":4,"watchers":3,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11"},"html":{"href":"https://github.com/libgraviton/php-rql-parser/pull/11"},"issue":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/11"},"comments":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/issues/11/comments"},"review_comments":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11/comments"},"review_comment":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/pulls/11/commits"},"statuses":{"href":"https://api.github.com/repos/libgraviton/php-rql-parser/statuses/0364f49a9a9474349693b21783a5a126dfe0a7fc"}}}}