{"action":"closed","issue":{"url":"https://api.github.com/repos/TalesM/spectre/issues/8","labels_url":"https://api.github.com/repos/TalesM/spectre/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/TalesM/spectre/issues/8/comments","events_url":"https://api.github.com/repos/TalesM/spectre/issues/8/events","html_url":"https://github.com/TalesM/spectre/issues/8","id":98549718,"number":8,"title":"Uniform syntax for compound parsers","user":{"login":"TalesM","id":2328227,"avatar_url":"https://avatars.githubusercontent.com/u/2328227?v=3","gravatar_id":"","url":"https://api.github.com/users/TalesM","html_url":"https://github.com/TalesM","followers_url":"https://api.github.com/users/TalesM/followers","following_url":"https://api.github.com/users/TalesM/following{/other_user}","gists_url":"https://api.github.com/users/TalesM/gists{/gist_id}","starred_url":"https://api.github.com/users/TalesM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TalesM/subscriptions","organizations_url":"https://api.github.com/users/TalesM/orgs","repos_url":"https://api.github.com/users/TalesM/repos","events_url":"https://api.github.com/users/TalesM/events{/privacy}","received_events_url":"https://api.github.com/users/TalesM/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/TalesM/spectre/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":{"login":"TalesM","id":2328227,"avatar_url":"https://avatars.githubusercontent.com/u/2328227?v=3","gravatar_id":"","url":"https://api.github.com/users/TalesM","html_url":"https://github.com/TalesM","followers_url":"https://api.github.com/users/TalesM/followers","following_url":"https://api.github.com/users/TalesM/following{/other_user}","gists_url":"https://api.github.com/users/TalesM/gists{/gist_id}","starred_url":"https://api.github.com/users/TalesM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TalesM/subscriptions","organizations_url":"https://api.github.com/users/TalesM/orgs","repos_url":"https://api.github.com/users/TalesM/repos","events_url":"https://api.github.com/users/TalesM/events{/privacy}","received_events_url":"https://api.github.com/users/TalesM/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/TalesM/spectre/milestones/1","html_url":"https://github.com/TalesM/spectre/milestones/v0.1,%20aka,%20Parse%20Everything!","labels_url":"https://api.github.com/repos/TalesM/spectre/milestones/1/labels","id":1236234,"number":1,"title":"v0.1, aka, Parse Everything!","description":"To the first milestone, we want to be able to parse everything (EBNF compatible) in a uniform interface. At the moment of writing, we already have the parsing, but the interface is somewhat clumsy. The goal is to provide every basic parser with literals (actually *already done*) and every compound with and only with an operator (almost all have operators, but all have textual form). \r\n\r\nAn example of the desired interface (a simple brainfuck validator):\r\n\r\n```cpp\r\nauto commands = declareRule<char>();\r\nauto comments = *(any<char>() - ('+'_l | '-' | '<' | '>' | '.' | ',' | '[' | ']' ));\r\nauto command = '+'_l | '-' | '<' | '>' | '.' | ',' | '['_l >> commands >> ']'_l;\r\ncommands = *(command >> -(comments));\r\nauto program = comments>> commands >> comments;\r\n```\r\n\r\nA brainfuck parser should be like that:\r\n\r\n```cpp\r\nstruct Command: variant<char,vector<Command>>{};\r\nauto commands = declareRule<char, Command>();\r\nauto comments = *(any<char>() - ('+'_l | '-' | '<' | '>' | '.' | ',' | '[' | ']' ));\r\nauto command = '+'_lv\r\n            | '-'_lv \r\n            | '<'_lv\r\n            | '>'_lv \r\n            | '.'_lv \r\n            | ','_lv \r\n            | ('['_l >> commands >> ']'_l) ;\r\ncommands = *(command >> -(comments));\r\nauto program = comments>> commands >> comments;\r\n```\r\n\r\nAnd in the eve of the 0.1 we want to launch a basic website with the examples and such things, but basically a clone of the readme.md (a better one should came ate v0.3).","creator":{"login":"TalesM","id":2328227,"avatar_url":"https://avatars.githubusercontent.com/u/2328227?v=3","gravatar_id":"","url":"https://api.github.com/users/TalesM","html_url":"https://github.com/TalesM","followers_url":"https://api.github.com/users/TalesM/followers","following_url":"https://api.github.com/users/TalesM/following{/other_user}","gists_url":"https://api.github.com/users/TalesM/gists{/gist_id}","starred_url":"https://api.github.com/users/TalesM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TalesM/subscriptions","organizations_url":"https://api.github.com/users/TalesM/orgs","repos_url":"https://api.github.com/users/TalesM/repos","events_url":"https://api.github.com/users/TalesM/events{/privacy}","received_events_url":"https://api.github.com/users/TalesM/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":4,"state":"open","created_at":"2015-08-01T16:31:30Z","updated_at":"2015-08-05T00:08:10Z","due_on":"2015-08-09T03:00:00Z","closed_at":null},"comments":0,"created_at":"2015-08-01T16:54:29Z","updated_at":"2015-08-05T00:08:10Z","closed_at":"2015-08-05T00:08:10Z","body":"Simplify generator parser functions, make uniform the Parser classes (With Parser posfix). Do all possible tests through the symbols instead free functions."}}