From alexwarth at gmail.com Thu Dec 3 12:06:28 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Thu Dec 3 12:06:42 2009 Subject: [Ometa] GPCE'10 First Call for Papers Message-ID: ---------------------------------------------------------- CALL FOR PAPERS Ninth International Conference on Generative Programming and Component Engineering (GPCE 2010) October 10-13, 2010 Eindhoven, The Netherlands (co-located with SLE 2010) http://www.gpce.org ---------------------------------------------------------- IMPORTANT DATES * Submission of abstracts: May 17, 2010 * Submission of papers: May 24, 2010 * Author notification: Jul 5, 2010 SCOPE Generative and component approaches are revolutionizing software development similar to how automation and components revolutionized manufacturing. Generative Programming (concerning programs that synthesize other programs), Component Engineering (concerning modularity in application design), and Domain-Specific Languages (DSLs) (concerning compact domain-specific notations for expressing programs) are key technologies for automating program development. The International Conference on Generative Programming and Component Engineering is a venue for researchers and practitioners interested in techniques that, through deploying components and program generation, increase programmer productivity, improve software quality, and shorten the time-to-market of software products. In addition to exploring cutting-edge techniques of generative and component-based software, our goal is to foster further cross-fertilization between the software engineering and the programming languages research communities. SUBMISSIONS Research papers: 10 pages in SIGPLAN proceedings style (sigplanconf.cls) reporting original research results that contribute to scientific knowledge in the areas listed below (the PC chair can advise on appropriateness). Tool demonstrations: Tool demonstrations should present tools that implement novel generative and component-based software engineering techniques, and are available for use. Any of the GPCE'10 topics of interest are appropriate areas for research demonstrations. Purely commercial tool demonstrations will not be accepted. Submissions should contain a tool description of 4 pages in SIGPLAN proceedings style (sigplanconf.cls) and a demonstration outline of up to 2 pages text plus 2 pages screen shots. The four page description will, if the demonstration is accepted, be published in the proceedings. The 2+2 page demonstration outline will only be used by the PC for evaluating the submission. TOPICS GPCE seeks contributions in software engineering and in programming languages related (but not limited) to: - Generative programming - Reuse, meta-programming, partial evaluation, multi-stage and multi-level languages, step-wise refinement, generic programming - Semantics, type systems, symbolic computation, linking and explicit substitution, in-lining and macros, templates, program transformation - Runtime code generation, compilation, active libraries, synthesis from specifications, development methods, generation of non-code artifacts, formal methods, reflection - Generative techniques for - Product-line architectures - Distributed, real-time and embedded systems - Model-driven development and architecture - Resource bounded/safety critical systems. - Component-based software engineering - Reuse, distributed platforms and middleware, distributed systems, evolution, patterns, development methods, deployment and configuration techniques, formal methods - Integration of generative and component-based approaches - Domain engineering and domain analysis - Domain-specific languages including visual and UML-based DSLs - Separation of concerns - Aspect-oriented and feature-oriented programming, - Intentional programming and multi-dimensional separation of concerns - Industrial applications of the above Submissions must adhere to SIGPLAN's republication policy. Please contact the program chair if you have any questions about how this policy applies to your paper (chairs@gpce.org). ORGANIZATION General Chair: Eelco Visser (Delft University of Technology, The Netherl= ands) Program Chair: Jaakko J=E4rvi (Texas A&M University, USA) Publicity Chair: Giorgios Economopoulos (University of Southampton, UK) Program Committee * Sven Apel (University of Passau, Germany) * Don Batory (University of Texas, USA) * Martin Bravenboer (LogicBlox, USA) * Krzysztof Czarnecki (University of Waterloo, Canada) * Charles Consel (INRIA / LaBRI, France) * Gabriel Dos Reis (Texas A&M University, USA) * Ewen Denney (RIACS/NASA Ames, USA) * Ronald Garcia (Carnegie Mellon University, USA) * Magne Haveraaen (University of Bergen, Norway) * Johan Lilius (=C5bo Akademi University, Finland) * Andres L=F6h (Utrecht University, The Netherlands) * Mat Marcus (Canyonlands Software Design, USA) * Marjan Mernik (University of Maribor, Slovenia) * Klaus Ostermann (University of Marburg, Germany) * Bruno C. d. S. Oliveira (Seoul National University, Korea) * Hridesh Rajan (Iowa State University, USA) * Sukyoung Ryu (Korea Advanced Institute of Science and Technology) * Jo=E3o Saraiva (Minho University, Portugal) * Sibylle Schupp (Hamburg University of Technology, Germany) * Kwang Yi (Seoul National University, Korea) * Mirko Viroli (University of Bologna, Italy) * Alessandro Warth (Viewpoints Research Institute, USA) * Edwin Westbrook (Rice University, USA) * Jeremiah Willcock (Indiana University, USA) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091203/66163466/attachme= nt.htm From stephen.bannasch at deanbrook.org Thu Dec 3 19:28:17 2009 From: stephen.bannasch at deanbrook.org (Stephen Bannasch) Date: Thu Dec 3 19:28:40 2009 Subject: [Ometa] downloaded svn ometa-js, "Important info" projects missing Message-ID: I just downloaded ometa-js from the svn repo. I've read Alex's dissertation and the email list archives. It would be useful to have the basic projects listed in the "Important info" included in the repo. From stephen.bannasch at deanbrook.org Thu Dec 3 19:29:55 2009 From: stephen.bannasch at deanbrook.org (Stephen Bannasch) Date: Thu Dec 3 19:30:16 2009 Subject: [Ometa] ometa first project?: plain text math parser which feeds a grapher Message-ID: Here's an idea for a relatively simple project to learn more about ometa. I'd like to have users enter different forms of math functions, parse the text input and end up with a JavaScript function I can graph. For example see this page which is shows an example of entering a JavaScript equation and graphing it with JSXGraph: http://jsxgraph.uni-bayreuth.de/wiki/index.php/Change_Equation_of_a_Graph I'm thinking that a relatively simple project to learn more about ometa-js would be enable a user to enter either: 1. sinx(x)*cos(x) or 2. sinx cosx The parser would in the end return: Math.sin(x)*Math.cos(x) Which would then be graphed. Does this seem like something I could use ometa-js for? From alexwarth at gmail.com Fri Dec 4 10:49:36 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Fri Dec 4 10:49:52 2009 Subject: [Ometa] ometa first project?: plain text math parser which feeds a grapher In-Reply-To: References: Message-ID: Hi Stephen, Sounds like fun! You could do the graphing on a canvas element, which you can add dynamically to the OMeta/JS Workspace Wiki page. (I did that in the Logo project -- take look at the first two lines.) It should be straightforward to write the parser, and if it returns a string like you were saying, e.g., "Math.sin(x) * Math.cos(x)", it would be easy to wrap that inside a string that looks like a JavaScript function that takes x as an argument. Then you could eval that string in order to get a real function that you can call repeatedly in order to draw the graph. Here's what I mean: var e =3D THE_RESULT_OF_PARSING; // which is a string var s =3D "function(x) { return " + p + "; }"; var f =3D eval(s); Let us know if you run into any problems... Cheers, Alex On Thu, Dec 3, 2009 at 7:29 PM, Stephen Bannasch < stephen.bannasch@deanbrook.org> wrote: > Here's an idea for a relatively simple project to learn more about ometa. > > I'd like to have users enter different forms of math functions, parse the > text input and end up with a JavaScript function I can graph. > > For example see this page which is shows an example of entering a > JavaScript equation and graphing it with JSXGraph: > > http://jsxgraph.uni-bayreuth.de/wiki/index.php/Change_Equation_of_a_Graph > > I'm thinking that a relatively simple project to learn more about ometa-js > would be enable a user to enter either: > > 1. sinx(x)*cos(x) > > or > > 2. sinx cosx > > The parser would in the end return: > > Math.sin(x)*Math.cos(x) > > Which would then be graphed. > > Does this seem like something I could use ometa-js for? > > > _______________________________________________ > OMeta mailing list > OMeta@vpri.org > http://vpri.org/mailman/listinfo/ometa > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091204/ae71d4d1/attachme= nt-0001.htm From alexwarth at gmail.com Fri Dec 4 11:11:37 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Fri Dec 4 11:11:52 2009 Subject: [Ometa] downloaded svn ometa-js, "Important info" projects missing In-Reply-To: References: Message-ID: Hi Stephen, Right now you can get all of the projects -- including those shown in the "important info" menu -- by checking out the ometa-js-projects repo: svn co http://www.tinlizzie.org/~awarth/svn/ometa-js/ ... but I agree that having that information included in the main ometa-js repo would be nice too. I'll make that change now. Thanks, Alex On Thu, Dec 3, 2009 at 7:28 PM, Stephen Bannasch < stephen.bannasch@deanbrook.org> wrote: > I just downloaded ometa-js from the svn repo. > > I've read Alex's dissertation and the email list archives. > > It would be useful to have the basic projects listed in the "Important > info" included in the repo. > > > _______________________________________________ > OMeta mailing list > OMeta@vpri.org > http://vpri.org/mailman/listinfo/ometa > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091204/4a2228e5/attachme= nt.htm From alexwarth at gmail.com Fri Dec 4 11:12:26 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Fri Dec 4 11:12:10 2009 Subject: [Ometa] downloaded svn ometa-js, "Important info" projects missing In-Reply-To: References: Message-ID: Oops, the URL in my svn command was wrong. It should have been: svn co http://www.tinlizzie.org/~awarth/svn/ometa-js-projects/ Cheers, Alex On Fri, Dec 4, 2009 at 11:11 AM, Alessandro Warth wrot= e: > Hi Stephen, > > Right now you can get all of the projects -- including those shown in the > "important info" menu -- by checking out the ometa-js-projects repo: > > svn co http://www.tinlizzie.org/~awarth/svn/ometa-js/ > > > ... but I agree that > having that information included in the main ometa-js repo would be nice > too. I'll make that change now. > > Thanks, > Alex > > On Thu, Dec 3, 2009 at 7:28 PM, Stephen Bannasch < > stephen.bannasch@deanbrook.org> wrote: > >> I just downloaded ometa-js from the svn repo. >> >> I've read Alex's dissertation and the email list archives. >> >> It would be useful to have the basic projects listed in the "Important >> info" included in the repo. >> >> >> _______________________________________________ >> OMeta mailing list >> OMeta@vpri.org >> http://vpri.org/mailman/listinfo/ometa >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091204/391de116/attachme= nt.htm From alexwarth at gmail.com Fri Dec 4 11:39:05 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Fri Dec 4 11:39:18 2009 Subject: [Ometa] downloaded svn ometa-js, "Important info" projects missing In-Reply-To: References: Message-ID: I've updated the ometa-js repo to include a README file and some additional .txt files that include all of the information in the OMeta/JS Wiki's "important info" menu. Thanks, Alex On Fri, Dec 4, 2009 at 11:11 AM, Alessandro Warth wrot= e: > Hi Stephen, > > Right now you can get all of the projects -- including those shown in the > "important info" menu -- by checking out the ometa-js-projects repo: > > svn co http://www.tinlizzie.org/~awarth/svn/ometa-js/ > > > ... but I agree that > having that information included in the main ometa-js repo would be nice > too. I'll make that change now. > > Thanks, > Alex > > On Thu, Dec 3, 2009 at 7:28 PM, Stephen Bannasch < > stephen.bannasch@deanbrook.org> wrote: > >> I just downloaded ometa-js from the svn repo. >> >> I've read Alex's dissertation and the email list archives. >> >> It would be useful to have the basic projects listed in the "Important >> info" included in the repo. >> >> >> _______________________________________________ >> OMeta mailing list >> OMeta@vpri.org >> http://vpri.org/mailman/listinfo/ometa >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091204/23ce90ef/attachme= nt.htm From al3xgr at gmail.com Sat Dec 5 10:22:38 2009 From: al3xgr at gmail.com (Alexandros Marinos) Date: Sat Dec 5 10:22:50 2009 Subject: [Ometa] Beginner Questions Message-ID: <4cf7ed2c0912051022t4f1d5af6r4c04be0195bacf40@mail.gmail.com> Hi all, I have been trying to implement an SBVR parserwith OMeta, using the JS 2.0 workspace. Being inexperienced with parsers in general, I have hit up against some beginner questions. 1. what is the way to denote a line break, such that it will parse strings of the type: s =3D 'abcde\ fghij\ lmno\ pqrs' 2. which is the complete list of primitives that OMeta JS supports? I know digit and char are included, and I could probably figure out a few more, but where can the complete list be found? Thans in advance, Alexandros Marinos -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091205/d43c1953/attachme= nt.htm From justin.m.chase at gmail.com Sat Dec 5 10:40:29 2009 From: justin.m.chase at gmail.com (Justin Chase) Date: Sat Dec 5 10:40:42 2009 Subject: [Ometa] preventing left recursion, Grow-LR Message-ID: <5dc1f71b0912051040o1bb0934bl26310f13f8f0fca9@mail.gmail.com> RHIuIFdhcnRoLAoKSSB3YXMganVzdCByZWFkaW5nIHlvdXIgUEhEIGRpc3NlcnRhdGlvbiBvbiBP TWV0YSBvbiB0aGUgY2hhcHRlciByZWdhcmRpbmcKdGhlIHByZXZlbnRpb24gb2YgbGVmdCByZWN1 cnNpb24uIEluIGZpZ3VyZSAzLjMgeW91IGdpdmUgcHN1ZWRvIGNvZGUgZm9yIGEKR3Jvdy1MUiBm dW5jdGlvbiBidXQgbGVhdmUgb3V0IGEgZmV3IGxpbmVzIHNheWluZyB0aGF0IHRoZXkgY2FuIGJl IGlnbm9yZWQKZm9yIHRoZSBtb21lbnQuIExhdGVyIHlvdSBleHBsYWluIGhvdyB0byByZWZpbmUg dGhlIEFwcGx5LVJ1bGUgZnVuY3Rpb24gdG8Kc3VwcG9ydCBpbmRpcmVjdCBsZWZ0LXJlY3Vyc2lv biBidXQgaW4gZmlndXJlIDMuOCB5b3UgcmVmZXJlbmNlIHRoZSBHcm93LUxSCmZ1bmN0aW9uIHdp dGhvdXQgcHJvdmlkaW5nIGFuIHVwZGF0ZWQsIGNvbXBsZXRlIEdyb3ctTFIuCgpBbSBJIG1pc3Np bmcgc29tZXRoaW5nIHRoZXJlPyBXaGF0IGFyZSB0aGUgbWlzc2luZyBsaW5lcyBmcm9tIEdyb3ct TFIgb3Igd2h5Cndhc24ndCBhbiB1cGRhdGVkIHZlcnNpb24gcHJvdmlkZWQgYWxvbmcgd2l0aCBm aWd1cmUgMy44PwoKCkJ1dCBhcyBmb3IgdGhlIGNoYXB0ZXIgaW4gZ2VuZXJhbCBJJ20gaW5jcmVk aWJseSBpbXByZXNzZWQuIEkgd2FzIGxpdHRlcmFsbHkKanVzdCB0aGlua2luZyBhYm91dCBob3cg dG8gc29sdmUgdGhpcyBwcm9ibGVtIGFuZCByZWFkIHRoaXMgY2hhcHRlciBhbmQgSQp1bmRlcnN0 b29kIGFsbW9zdCBldmVyeXRoaW5nIHVwIHRvIHRoZSBlbmQuIFRoaXMgaXMgYSBzZXJpb3VzbHkg YnJpbGxpYW50CnBpZWNlIG9mIHdvcmsgYW5kIGl0IHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB0aW1l IHNpbmNlIEkgZG9uJ3QgaGF2ZSB0bwpyZS1maWd1cmUgaXQgYWxsIG91dC4gVGhhbmsgeW91IHZl cnkgbXVjaC4KCkluIGNhc2UgeW91J3JlIHdvbmRlcmluZyB3aGF0IEknbSB3b3JraW5nIG9uLCBJ J3ZlIGJlZW4gd29ya2luZyBvbiBhIHByb2plY3QKZm9yIGEgd2hpbGUgbm93IGNhbGxlZCBNZXRh U2hhcnAgd2hpY2ggd2FzIGZvcm1lcmx5IGEgdG9vbCB0byBjb21wbGltZW50IHRoZQpuZXcgTWlj cm9zb2Z0IE1HcmFtbWFyIHRvb2xzLiBBZnRlciBkb2luZyBzb21lIHJlc2VhcmNoIGFuZCByZWFk aW5nIGFib3V0Ck9NZXRhIEkgaGF2ZSByZWFsaXplZCB0aGF0IE9NZXRhIGlzIGFjdHVhbGx5IHRo ZSBsb2dpY2FsIGNvbmNsdXNpb24gdG8gdGhlCmNvcmUgY29uY2VwdHMgSSBoYXZlIGJlZW4gaW5k ZXBlbmRlbnRseSBjb21pbmcgdXAgd2l0aCBhcyB3ZWxsLiBNeSByZWxpYW5jZQpvbiBNR3JhbW1h ciBob3dldmVyIHdhcyBwcmV2ZW50aW5nIG1lIGZyb20gZ29pbmcgYWxsIHRoZSB3YXkgZG93biB0 aGUgcmFiYml0CmhvbGUgYW5kIHJlYWxpemluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgbGlrZSB5 b3UgaGF2ZS4gUmVhZGluZyB5b3VyCmRpc3NlcnRhdGlvbiBoYXMgYmVlbiByZXZlbGF0b3J5LgoK SW4geW91ciBkb2N1bWVudCB5b3Ugc2F5ICJPTWV0YeKAmXMga2V5IGluc2lnaHQgaXMgdGhlIHJl YWxpemF0aW9uIHRoYXQgYWxsIG9mCnRoZSBwYXNzZXMgaW4gYSB0cmFkaXRpb25hbCBjb21waWxl ciBhcmUgZXNzZW50aWFsbHkgcGF0dGVybiBtYXRjaGluZwpvcGVyYXRpb25zIi4gSSB0aGluayB0 aGlzIGlzIHRoZSBtb3N0IGltcG9ydGFudCBzdGF0ZW1lbnQgaW4gdGhlIHdob2xlCmRvY3VtZW50 LiBXaGF0IHlvdSBoYXZlIGJlZW4gY2FsbGluZyBQYXR0ZXJuIE1hdGNoaW5nIEkgaGF2ZSBiZWVu IGNhbGxpbmcKVHJhbnNmb3JtYXRpb24uIFlvdSBoYXZlIG1hZGUgbWUgcmVhbGl6ZSB0aGF0IHRo ZSBUcmFuc2Zvcm1hdGlvbiBwYXR0ZXJuIGlzCmEgc3VwZXIgc2V0IG9mIHRoZSBTdGF0ZSBNYWNo aW5lIGFuZCBWaXNpdG9yIHBhdHRlcm5zIGFzIHlvdSBleHBsYWluZWQuIFRoaXMKY29tcGxldGVs eSBibGV3IG15IG1pbmQuIEkgaGFkIGJlZW4gcmVseWluZyBvbiBNR3JhbW1hciB0byBkbyBhbGwg b2YgbXkKdGV4dHVhbCBwYXJzaW5nIGJ1dCB0aGF0IHN0aWxsIGxlYXZlcyB0aGUgcHJvY2VzcyBv ZiB0cmFuc2Zvcm1pbmcgdGhlCnJlc3VsdGluZyBBU1QgaW50byBzb21ldGhpbmcgbWVhbmluZ2Z1 bC4gUmVhZGluZyB0aGF0IHNlbnRlbmNlIG9mIHlvdXJzCnN1ZGRlbmx5IG1hZGUgbWUgcmVhbGl6 ZSB0aGF0IHRyYW5zZm9ybWluZyB0ZXh0IHdhcyBsaXR0ZXJhbGx5IHRoZSBleGFjdApzYW1lIGNv bmNlcHQgYXMgdHJhbnNmb3JtaW5nIG9iamVjdHMgYW5kIHRoYXQgSSBjb3VsZCBjcmVhdGUgb25l IGNvcmUKbGlicmFyeSB0aGF0IHdhcyB0aGUgYmFzaXMgZm9yIGFsbCBvZiB0aGUgcGhhc2VzIG9m IHRoZSBjb21waWxlci4KCkFuZCB3aGF0IGlzIHJlYWxseSBibG93aW5nIG15IG1pbmQgaXMgdGhl IHJlYWxpemF0aW9uIHRoYXQgd2l0aCB0aGVzZSB0b29scwppbiBoYW5kIHlvdSBjYW4gZXhwcmVz cyBvdGhlciBkZXNpZ24gcGF0dGVybnMgYXMgRFNMcywgdGhlcmVmb3JlIHdpdGggdGhpcwpvbmUg cGF0dGVybiB5b3UgY2FuIGV4cHJlc3MgYW55IGFwcGxpY2F0aW9uIGFzIGxheWVycyBvZiBhYnN0 cmFjdGlvbnMuLi4KY29tcGxldGVseSBnZW5lcmF0aXZlIGRvbWFpbiBkcml2ZW4gYXBwbGljYXRp b25zLiBJIGRvbid0IHRoaW5rIGl0cyBhbgpleGFnZ2VyYXRpb24gdG8gc2F5IHRoYXQgdGhlIGlk ZWFzIHB1dCBmb3J0aCBoZXJlIGluIE9NZXRhIGFyZSBhIHVuaWZ5aW5nCnRoZW9yeSBvZiBjb21w aWxhdGlvbi4gSSBoYXZlIG5vdCBiZWVuIGZvcm1hbGx5IHRyYWluZWQgaW4gY29tcGlsZXJzIHNv Cm1heWJlIEknbSBsZXR0aW5nIG15IGV4Y2l0ZW1lbnQgZ2V0IGF3YXkgd2l0aCBtZSBidXQgcmVh ZGluZyB5b3VyIHdvcmsgaGFzCmJlZW4gcmV2ZWxhdG9yeSBmb3IgbWUsIHNvIGF0IHRoZSB2ZXJ5 IGxlYXN0IHlvdSBzaG91bGQgYmUgcHJvdWQgdG8gaGF2ZQppbnNwaXJlZCBvbmUgcGVyc29uLiBJ IGhvcGUgSSdtIG1ha2luZyBzb21lIHNlbnNlIGhlcmUsIHRob3VnaCBJJ20gc3VyZQp5b3UndmUg Y29tZSB0byBzaW1pbGFyIGNvbmNsdXNpb25zIGxvbmcgYWdvLiBUaGFuayB5b3UgdmVyeSBtdWNo IGZvciB5b3VyCndvcmshCgotLSAKSnVzdGluIENoYXNlCmh0dHA6Ly93d3cuanVzdG5idXNpbmVz cy5jb20KLS0tLS0tLS0tLS0tLS0gbmV4dCBwYXJ0IC0tLS0tLS0tLS0tLS0tCkFuIEhUTUwgYXR0 YWNobWVudCB3YXMgc2NydWJiZWQuLi4KVVJMOiBodHRwOi8vdnByaS5vcmcvcGlwZXJtYWlsL29t ZXRhL2F0dGFjaG1lbnRzLzIwMDkxMjA1L2UzMGZkZWVjL2F0dGFjaG1lbnQuaHRtCg== From alexwarth at gmail.com Sat Dec 5 14:01:08 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Sat Dec 5 14:01:20 2009 Subject: [Ometa] preventing left recursion, Grow-LR In-Reply-To: <5dc1f71b0912051040o1bb0934bl26310f13f8f0fca9@mail.gmail.com> References: <5dc1f71b0912051040o1bb0934bl26310f13f8f0fca9@mail.gmail.com> Message-ID: Hi Justin, I was just reading your PHD dissertation on OMeta on the chapter regarding > the prevention of left recursion. In figure 3.3 you give psuedo code for a > Grow-LR function but leave out a few lines saying that they can be ignored > for the moment. Later you explain how to refine the Apply-Rule function to > support indirect left-recursion but in figure 3.8 you reference the Grow-= LR > function without providing an updated, complete Grow-LR. > > Am I missing something there? What are the missing lines from Grow-LR or > why wasn't an updated version provided along with figure 3.8? > The missing lines are provided in section 3.3.4 (Adding Support for Indirect Left Recursion) -- just take a look at the bottom of page 54 and page 55. But as for the chapter in general I'm incredibly impressed. I was litterally > just thinking about how to solve this problem and read this chapter and I > understood almost everything up to the end. This is a seriously brilliant > piece of work and it will save me a lot of time since I don't have to > re-figure it all out. Thank you very much. > > In case you're wondering what I'm working on, I've been working on a > project for a while now called MetaSharp which was formerly a tool to > compliment the new Microsoft MGrammar tools. After doing some research and > reading about OMeta I have realized that OMeta is actually the logical > conclusion to the core concepts I have been independently coming up with = as > well. My reliance on MGrammar however was preventing me from going all the > way down the rabbit hole and realizing the full implications like you hav= e. > Reading your dissertation has been revelatory. > > In your document you say "OMeta=92s key insight is the realization that a= ll > of the passes in a traditional compiler are essentially pattern matching > operations". I think this is the most important statement in the whole > document. What you have been calling Pattern Matching I have been calling > Transformation. You have made me realize that the Transformation pattern = is > a super set of the State Machine and Visitor patterns as you explained. T= his > completely blew my mind. I had been relying on MGrammar to do all of my > textual parsing but that still leaves the process of transforming the > resulting AST into something meaningful. Reading that sentence of yours > suddenly made me realize that transforming text was litterally the exact > same concept as transforming objects and that I could create one core > library that was the basis for all of the phases of the compiler. > > And what is really blowing my mind is the realization that with these too= ls > in hand you can express other design patterns as DSLs, therefore with this > one pattern you can express any application as layers of abstractions... > completely generative domain driven applications. I don't think its an > exaggeration to say that the ideas put forth here in OMeta are a unifying > theory of compilation. I have not been formally trained in compilers so > maybe I'm letting my excitement get away with me but reading your work has > been revelatory for me, so at the very least you should be proud to have > inspired one person. I hope I'm making some sense here, though I'm sure > you've come to similar conclusions long ago. Thank you very much for your > work! > You're welcome, I'm glad you've found it useful! Cheers, Alex > > -- > Justin Chase > http://www.justnbusiness.com > > _______________________________________________ > OMeta mailing list > OMeta@vpri.org > http://vpri.org/mailman/listinfo/ometa > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091205/9f46b874/attachme= nt.htm From alexwarth at gmail.com Sat Dec 5 14:42:36 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Sat Dec 5 14:42:48 2009 Subject: [Ometa] Beginner Questions In-Reply-To: <4cf7ed2c0912051022t4f1d5af6r4c04be0195bacf40@mail.gmail.com> References: <4cf7ed2c0912051022t4f1d5af6r4c04be0195bacf40@mail.gmail.com> Message-ID: Hi Alexandros, I have been trying to implement an SBVR parserwith OMeta, using the JS 2.0 workspace. Being inexperienced with > parsers in general, I have hit up against some beginner questions. > > 1. what is the way to denote a line break, such that it will parse strings > of the type: > > s =3D 'abcde\ > fghij\ > lmno\ > pqrs' > In OMeta/JS, you would just say '\n'. For example, to consume a line of input, you might write: line =3D (~'\n' char)* '\n' ... which means "match zero or more characters that are not the newline character, and then match a newline character. > 2. which is the complete list of primitives that OMeta JS supports? I know > digit and char are included, and I could probably figure out a few more, = but > where can the complete list be found? > The only real "primitive" is a rule called 'anything', and it matches any one object. All other rules are implemented using a combination of the anything rule, semantic actions, predicates, and of course, other non-primitive rules. A large number of useful rules are pre-defined in a grammar called OMeta, which is the super-grammar of all the other grammars. These include things like true, false, number, char, letter, lower, upper, digit, etc. Unfortunately there is no document that lists and explains all of these rules at the moment, so I'm afraid you'll have to look at the source code: http://www.tinlizzie.org/ometa-js/ometa-base.js (It would be very useful for members of our community to document these kinds of things as projects on the OMeta/JS Workspace Wiki. You could even include little examples that the reader can evaluate on the fly, to make it more interactive... If anyone on this mailing list has written -- or eventually ends up writing -- this kind of project, please let me know and I'll add it to the "Important Info" menu.) Cheers, Alex > > Thans in advance, > Alexandros Marinos > > > _______________________________________________ > OMeta mailing list > OMeta@vpri.org > http://vpri.org/mailman/listinfo/ometa > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091205/a6c3b136/attachme= nt.htm From brasspen at gmail.com Wed Dec 30 16:17:01 2009 From: brasspen at gmail.com (Chris Cunnington) Date: Wed Dec 30 16:17:13 2009 Subject: [Ometa] Logo Demo Message-ID: <8dd95f390912301617i56db6f1cnf006642fc1e9ac3@mail.gmail.com> Hi Alex, The bottom of the Logo Demo says: smiley =3D new Turtle() translateCode =3D function(code) { smiley.eval(code); return "undefined" } to spiral :size :angle if :size < 100 [ fd :size rt :angle spiral :size + 2 :angle ] end spiral 0 89 I don't know what translateCode is for, or how the Logo code gets into the "code" variable to be eval'd by smiley. So, I adapted the code from your Old OMeta JS example thusly: smiley =3D new Turtle() smiley.eval(' to spiral :size :angle if :size < 100 [ fd :size rt :angle spiral :size + 2 :angle ] end spiral 0 89') Now I can see how the Logo code gets into smiley to be eval'd. The result produces a spiral on the canvas. I'm quite pleased with my hack. But I'd like to know how it's supposed to work with translateCode. How was the Logo code supposed to get into the "code" variable for smiley to execute? Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091230/d419c51c/attachme= nt.htm From alexwarth at gmail.com Wed Dec 30 18:02:07 2009 From: alexwarth at gmail.com (Alessandro Warth) Date: Wed Dec 30 18:02:15 2009 Subject: [Ometa] Logo Demo In-Reply-To: <8dd95f390912301617i56db6f1cnf006642fc1e9ac3@mail.gmail.com> References: <8dd95f390912301617i56db6f1cnf006642fc1e9ac3@mail.gmail.com> Message-ID: Hi Chris, I'm writing this on my phone, so I'll have to be brief... When you highlight some code and then press the "do it" button in the OMeta/JS Wiki, the highlighted code doesn't run directly. It is passed to the translateCode function, which is in charge of translating your code into JS code that is in turn passed to the eval function. This is a simple way to allow programmers to have control over the language they get to program in. My Logo example was taking advantage of this. The trick to making it go is to highlight the grammar and the definition of translateCode (but not the sample Logo code) and press do-it. At that point, you will have switched the language that's understood in the workspage to Logo. So now you should be able to highlight the definition of spiral, and the call, and it will work. (If you "do-it" the entire thing at once, it doesn't work b/c the original translateCode is used for the whole thing.) I think that's much nicer than having to put the code in a JS string... (I don't have a computer handy, but I'm pretty sure that the conclusion of my dissertation explains the translateCode stuff.) Ok, that wasn't exactly brief. Happy new year's eve eve! :) Cheers, Alex Sent on the Sprint=AE Now Network from my BlackBerry=AE On Wed, Dec 30, 2009 at 4:17 PM, Chris Cunnington wrote: > Hi Alex, > > The bottom of the Logo Demo says: > > smiley =3D new Turtle() > translateCode =3D function(code) { smiley.eval(code); return "undefined" } > > to spiral :size :angle > if :size < 100 [ > fd :size > rt :angle > spiral :size + 2 :angle > ] > end > > spiral 0 89 > > I don't know what translateCode is for, or how the Logo code gets into the > "code" variable to be eval'd by smiley. > So, I adapted the code from your Old OMeta JS example thusly: > > smiley =3D new Turtle() > smiley.eval(' > > to spiral :size :angle > if :size < 100 [ > fd :size > rt :angle > spiral :size + 2 :angle > ] > end > > spiral 0 89') > > Now I can see how the Logo code gets into smiley to be eval'd. The result > produces a spiral on the canvas. > I'm quite pleased with my hack. But I'd like to know how it's supposed to > work with translateCode. > How was the Logo code supposed to get into the "code" variable for smiley > to execute? > > Chris > > _______________________________________________ > OMeta mailing list > OMeta@vpri.org > http://vpri.org/mailman/listinfo/ometa > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091230/bc2f5bd7/attachme= nt.htm From brasspen at gmail.com Thu Dec 31 12:50:04 2009 From: brasspen at gmail.com (Chris Cunnington) Date: Thu Dec 31 12:50:12 2009 Subject: [Ometa] Re: Logo Demo In-Reply-To: References: <8dd95f390912301617i56db6f1cnf006642fc1e9ac3@mail.gmail.com> Message-ID: <8dd95f390912311250o534bfd95v3aee900125701724@mail.gmail.com> Happy New Year's Eve from the Smalltalk Medicine Show Chris http://www.youtube.com/watch?v=3DYEx4jfdFp1k http://www.youtube.com/user/gandysmedicineshow -------------- next part -------------- An HTML attachment was scrubbed... URL: http://vpri.org/pipermail/ometa/attachments/20091231/666a8992/attachme= nt.htm