{"action":"closed","issue":{"url":"https://api.github.com/repos/ocsigen/eliom/issues/19","repository_url":"https://api.github.com/repos/ocsigen/eliom","labels_url":"https://api.github.com/repos/ocsigen/eliom/issues/19/labels{/name}","comments_url":"https://api.github.com/repos/ocsigen/eliom/issues/19/comments","events_url":"https://api.github.com/repos/ocsigen/eliom/issues/19/events","html_url":"https://github.com/ocsigen/eliom/issues/19","id":18800772,"number":19,"title":"New syntax extension","user":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ocsigen/eliom/labels/feature","name":"feature","color":"fbca04"},{"url":"https://api.github.com/repos/ocsigen/eliom/labels/syntax%20extension","name":"syntax extension","color":"009800"}],"state":"closed","locked":false,"assignee":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2013-08-30T17:43:55Z","updated_at":"2016-02-03T18:54:59Z","closed_at":"2016-02-03T18:54:59Z","body":"I'm planning to do a new syntax extension, using the new extension-point mechanism and following some ideas from Alain Frisch.\r\nThe syntax would look like this : \r\n\r\n```ocaml\r\nlet@sh bla = 3 (* A shared declaration *)\r\nlet@s blu = \"blu\" (* A server declaration *)\r\nlet x = ( \"blop\" )@cval (* A client value *)\r\n\r\n[%%client ] (* The beginning of a server section *)\r\nlet a = ... \r\nlet b = ...\r\n```\r\n\r\nThere is something a bit touchy : injections. I havn't study the question enough to have an opinion on it.\r\n\r\nI didn't even begin to work on this, and we have quite some time since extension-points just got only merge on the trunck. Any feedback on the syntax and ideas about this would be appreciated.\r\n\r\nhopefully, this new syntax should fix some bugs like #18."}}