<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>ometasharp Source Control Rss Feed</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>ometasharp Source Control Rss Description</description><item><title>Source code checked in, #17706</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added &amp;#34;Markup&amp;#34; project based off discussion question by nblumhardt on Codeplex. See http&amp;#58;&amp;#47;&amp;#47;www.codeplex.com&amp;#47;ometasharp&amp;#47;Thread&amp;#47;View.aspx&amp;#63;ThreadId&amp;#61;36146</description><author>jeffmoser</author><pubDate>Mon, 22 Sep 2008 23:57:05 GMT</pubDate><guid isPermaLink="false">Source code checked in, #17706 20080922115705P</guid></item><item><title>Source code checked in, #17578</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Moved CalculatorParser to be siblings with the Calculator example.</description><author>jeffmoser</author><pubDate>Tue, 16 Sep 2008 03:03:01 GMT</pubDate><guid isPermaLink="false">Source code checked in, #17578 20080916030301A</guid></item><item><title>Source code checked in, #17577</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Removed excess directories</description><author>jeffmoser</author><pubDate>Tue, 16 Sep 2008 02:57:32 GMT</pubDate><guid isPermaLink="false">Source code checked in, #17577 20080916025732A</guid></item><item><title>Source code checked in, #17576</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Very initial check-in of some noticable restructuring of the entire project. Based off some good comments by Nicholas Blumhardt, I decided to do some re-arranging of the folders to improve the distinction between the core runtime, host languages, examples, and then unit tests.  In addition, I created a console based interpreter playground where you can experiment with each grammar that you create. For example, if you set &amp;#34;Calculator&amp;#34; as your startup project and then run it, you can see a very primitive calculator in action &amp;#58;&amp;#41;&amp;#13;&amp;#10;&amp;#13;&amp;#10;In addition, I put some work into the Prolog interpreter to make it handle basic queries via the console. &amp;#13;&amp;#10;&amp;#13;&amp;#10;Each project has sample input and responses that are shown right when you start the project so you get a feel for what&amp;#39;s expected.&amp;#13;&amp;#10;&amp;#13;&amp;#10;Finally, the &amp;#34;README&amp;#34; project basically does what the previous unit test runner did &amp;#40;e.g. compile all grammars and run most tests&amp;#41;.&amp;#13;&amp;#10;&amp;#13;&amp;#10;I&amp;#39;d love to hear feedback if you download the code. My contact info is on my blog at http&amp;#58;&amp;#47;&amp;#47;www.moserware.com&amp;#47;&amp;#13;&amp;#10;&amp;#13;&amp;#10;&amp;#40;NOTE&amp;#58; Since I did some heavy moving in the source code, there might be some problems synchronizing everything in TFS. It might take another changeset to remove extra files&amp;#41;</description><author>jeffmoser</author><pubDate>Tue, 16 Sep 2008 02:54:49 GMT</pubDate><guid isPermaLink="false">Source code checked in, #17576 20080916025449A</guid></item><item><title>Source code checked in, #17196</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added first glimpse of ideas for syntax sugar in the host semantic actions. I started with a simple list cons. This allows you to say &amp;#123; &amp;#34;add&amp;#34;, x, y &amp;#125; instead of &amp;#34;Sugar.Cons&amp;#40;&amp;#34;add&amp;#34;, x, y&amp;#41;&amp;#34;. This notably simplified CalculatorParser and NullOptimization grammars. &amp;#13;&amp;#10;&amp;#13;&amp;#10;The eventual goal is that &amp;#34;Sugar&amp;#34; wouldn&amp;#39;t have to be explicitly referenced in an action but would rather rely on the CSharpRecgonizer to convert the nicer syntax to a Sugar usage. The nicer syntax should play nice with the overal goals of C&amp;#35;.</description><author>jeffmoser</author><pubDate>Mon, 08 Sep 2008 02:00:20 GMT</pubDate><guid isPermaLink="false">Source code checked in, #17196 20080908020020A</guid></item><item><title>Source code checked in, #16907</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Small update to Meta-FizzBuzz grammar by using C&amp;#35;&amp;#39;s type aliasing ability &amp;#40;e.g. &amp;#34;using E &amp;#61; System.Func&amp;#60;object&amp;#62;&amp;#34;&amp;#41; to make the code less verbose. I&amp;#39;m not sure if this is best long term for readability&amp;#47;comprehension, but I do like how it makes things more compact.</description><author>jeffmoser</author><pubDate>Mon, 01 Sep 2008 21:15:34 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16907 20080901091534P</guid></item><item><title>Source code checked in, #16784</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Implemented support for automatic casting of a type in the semantic action and host expression part of a grammar &amp;#40;e.g. the C&amp;#35; part&amp;#41; based on a grammar default &amp;#40;&amp;#34;ometa Factorial&amp;#60;int, &amp;#42;&amp;#42;&amp;#42;int&amp;#42;&amp;#42;&amp;#42;&amp;#62;&amp;#34;&amp;#41; or by specifying the type by the variable capture. The former allows you to get a notably simpler Calculator, Factorial, LittleTypeChecker, and NumberParser &amp;#40;take a peek at their new version in this changesteThe latter allows &amp;#34;Super&amp;#40;Digit&amp;#41;&amp;#58;d&amp;#60;int&amp;#62;&amp;#34;.&amp;#13;&amp;#10;&amp;#13;&amp;#10;The focus on this release is therefore less typing. Hopefully with a few more iterations will bring us closer to the compactness similar to what can occur in a dynamic language like JavaScript but being strongly typed.</description><author>jeffmoser</author><pubDate>Fri, 29 Aug 2008 02:52:43 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16784 20080829025243A</guid></item><item><title>Source code checked in, #16572</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added a Meta-FizzBuzz implementation and two versions of FizzBuzz written in it.</description><author>jeffmoser</author><pubDate>Mon, 25 Aug 2008 10:41:48 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16572 20080825104148A</guid></item><item><title>Source code checked in, #16467</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added support for defining overrides in a grammar via the &amp;#94; character.&amp;#13;&amp;#10;&amp;#13;&amp;#10;For example, the Calculator grammar now has&amp;#13;&amp;#10;&amp;#13;&amp;#10;Digit   &amp;#94;&amp;#61; Super&amp;#40;Digit&amp;#41;&amp;#58;d           -&amp;#62; &amp;#123; d.ToDigit&amp;#40;&amp;#41; &amp;#125;,&amp;#13;&amp;#10;&amp;#13;&amp;#10;since it is overriding the &amp;#34;Digit&amp;#34; rule in its base grammar.  This now generates an &amp;#34;override&amp;#34; in the C&amp;#35; code. With this extension, I can now emit enough information to get rid of the warning about unverifiable code from using a base class reference in an anonymous method.  I do this by storing the reference to a local variable &amp;#34;__baseRule__&amp;#34;.&amp;#13;&amp;#10;&amp;#13;&amp;#10;For the first time, the entire OMeta project compiles without any warnings.</description><author>jeffmoser</author><pubDate>Fri, 22 Aug 2008 02:27:36 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16467 20080822022736A</guid></item><item><title>Source code checked in, #16203</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>More syntax updates. I now make inheritance look more C&amp;#43;&amp;#43;&amp;#47;C&amp;#35;-ish of &amp;#34;MyClass &amp;#58; BaseClass&amp;#34; instead of &amp;#34;MyClass &amp;#60;&amp;#58; BaseClass&amp;#34;. &amp;#13;&amp;#10;&amp;#13;&amp;#10;This was driven by another change that I made where I add types to the grammar definition to specify what goes in &amp;#40;e.g. &amp;#34;ometa OMetaTranslator&amp;#60;HostExpression&amp;#62; &amp;#58; Parser&amp;#60;HostExpression&amp;#62;&amp;#34;&amp;#41;. &amp;#13;&amp;#10;&amp;#13;&amp;#10;This annotation used to be done in the tests themselves. Now it&amp;#39;s right in the grammar itself &amp;#40;by default I assume a char input&amp;#41;.&amp;#13;&amp;#10;&amp;#13;&amp;#10;You can also define the &amp;#34;default&amp;#34; type as in &amp;#34;ometa Calculator&amp;#60;char, int&amp;#62; &amp;#58; Parser&amp;#60;char&amp;#62; &amp;#123;&amp;#34;. My thought is that in an upcoming change I can dramatically simplify the calculator grammar &amp;#40;among others&amp;#41; by making it unnecessary to do all those .As&amp;#60;int&amp;#62;&amp;#40;&amp;#41; and have that be automatic if you define a default.</description><author>jeffmoser</author><pubDate>Fri, 15 Aug 2008 03:45:50 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16203 20080815034550A</guid></item><item><title>Source code checked in, #16095</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added preliminary support for namespaces. You can now use &amp;#34;using&amp;#34; statements like C&amp;#35; as well as specify a namespace prefix to your grammar name. If you don&amp;#39;t specify one, defaults will be provided.&amp;#13;&amp;#10;&amp;#13;&amp;#10;This is the first noticable addition to the grammar to make it more .NET friendly.</description><author>jeffmoser</author><pubDate>Tue, 12 Aug 2008 02:50:15 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16095 20080812025015A</guid></item><item><title>Source code checked in, #16066</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Added Prolog library and grammar that I translated  based off of the ones on the OMeta&amp;#47;JS project. This shows a symbiosis of OMeta&amp;#35; for the language aspects and C&amp;#35; for other logic &amp;#40;e.g. Prolog&amp;#39;s unification concept&amp;#41;</description><author>jeffmoser</author><pubDate>Mon, 11 Aug 2008 01:48:33 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16066 20080811014833A</guid></item><item><title>Source code checked in, #15986</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Removed about 30 lines from OMetaTranslator.ometacs by introducing a Format option to CodeGen. Slowly trying to get cleaner syntax.</description><author>jeffmoser</author><pubDate>Sat, 09 Aug 2008 03:50:12 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15986 20080809035012A</guid></item><item><title>Source code checked in, #15985</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Got rid of manually created grammar-ish code. Most notable is that the manual translator is out. The OMeta&amp;#35; one is quite a bit easier to understand.&amp;#13;&amp;#10;&amp;#13;&amp;#10;This is symbolic of OMeta&amp;#35;&amp;#39;s future of more of it being written in itself. This requires removing the hints of the past where we had to manually bootstrap ourself &amp;#58;-&amp;#41;</description><author>jeffmoser</author><pubDate>Sat, 09 Aug 2008 02:24:48 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15985 20080809022448A</guid></item><item><title>Source code checked in, #15984</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Updated OMetaParser&amp;#39;s HostExpr and C&amp;#35; recognizer so that a HostExpr is&amp;#13;&amp;#10;&amp;#13;&amp;#10;Expr &amp;#61; ParenExpr &amp;#124; Spaces &amp;#40;StringLiteral &amp;#124; FunctionCall &amp;#124; BasicName&amp;#41;&amp;#13;&amp;#10;&amp;#13;&amp;#10;This finally allows for less &amp;#40;&amp;#41;&amp;#39;s&amp;#13;&amp;#10;&amp;#13;&amp;#10;Compare&amp;#13;&amp;#10;&amp;#13;&amp;#10;Block &amp;#61; EverythingInside&amp;#40;&amp;#40;&amp;#34;&amp;#123;&amp;#34;&amp;#41;, &amp;#40;&amp;#34;&amp;#125;&amp;#34;&amp;#41;&amp;#41;&amp;#13;&amp;#10;&amp;#13;&amp;#10;With&amp;#13;&amp;#10;&amp;#13;&amp;#10;Block &amp;#61; EverythingInside&amp;#40;&amp;#34;&amp;#123;&amp;#34;, &amp;#34;&amp;#125;&amp;#34;&amp;#41;</description><author>jeffmoser</author><pubDate>Sat, 09 Aug 2008 02:14:04 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15984 20080809021404A</guid></item><item><title>Source code checked in, #15954</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>OMeta&amp;#35; now bootstraps itself&amp;#33;&amp;#13;&amp;#10;&amp;#13;&amp;#10;Added a OMetaTranslator written in OMeta&amp;#35; to make this happen. This involved a new grammar &amp;#40;OMetaTranslator.ometacs&amp;#41;. As of this check-in, no manually &amp;#34;parsed&amp;#34; grammar-ish code is used and thus the code generates the code that generates the code. &amp;#13;&amp;#10;&amp;#13;&amp;#10;This is a notable milestone in this project because the recognizer -&amp;#62; parser -&amp;#62; translator chain is a reasonably complex grammar and is a good proof of concept.&amp;#13;&amp;#10;&amp;#13;&amp;#10;This will probably be the last changeset that has the manually created code in it. I&amp;#39;ll use TFS to preserve the roots of where it came from so that the main project isn&amp;#39;t littered with it.&amp;#13;&amp;#10;&amp;#13;&amp;#10;The next major step is to clean things up in preparation of CTP 1.&amp;#13;&amp;#10;&amp;#13;&amp;#10;&amp;#13;&amp;#10;</description><author>jeffmoser</author><pubDate>Fri, 08 Aug 2008 02:52:35 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15954 20080808025235A</guid></item><item><title>Source code checked in, #15766</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>OMeta&amp;#35; now has an optimzer that was written in OMeta&amp;#35;&amp;#33;&amp;#13;&amp;#10;&amp;#13;&amp;#10;Most of the code was just a port of the OMeta&amp;#47;JS optimizer. See the NullOptimization.ometacs, AndOrOptimization.ometacs, and OMetaOptimizer.ometacs grammars for more details.&amp;#13;&amp;#10;&amp;#13;&amp;#10;One of the most fascinating lines of OMeta&amp;#35;  is this one&amp;#58;&amp;#13;&amp;#10;&amp;#13;&amp;#10;  OptimizeRule    &amp;#61; &amp;#58;r &amp;#40;Foreign&amp;#40;&amp;#40;typeof&amp;#40;AndOrOptimization&amp;#41;&amp;#41;, &amp;#40;&amp;#34;Optimize&amp;#34;&amp;#41;, &amp;#40;r&amp;#41;&amp;#41;&amp;#58;r&amp;#41;&amp;#42; -&amp;#62; &amp;#123; r &amp;#125;&amp;#13;&amp;#10;&amp;#13;&amp;#10;This basically keeps optimizing a rule until it can&amp;#39;t be optimized any further. Very neat way of expressing it.&amp;#13;&amp;#10;&amp;#13;&amp;#10;The optimizer is making a noticable improvement in generated code.  Average savings is around 15&amp;#37; for simple grammars and 40&amp;#37; for more complicated ones. For example, the OMetaParser.cs generated code shrank from 3022 lines to 1843 lines with the optimizer turned on. A savings of 1179 lines or 39&amp;#37;.&amp;#13;&amp;#10;&amp;#13;&amp;#10;The next piece of optimization will be to eliminate unnecessary wrapped functions from And expressions. That is, if the MetaRules.Apply&amp;#40;...&amp;#41; is the only function, then just generate the inner scope instead of wrapping it.&amp;#13;&amp;#10;&amp;#13;&amp;#10;I&amp;#39;ll defer this this last major optimization until after the code generator is rewritten into OMeta&amp;#35;.</description><author>jeffmoser</author><pubDate>Sat, 02 Aug 2008 17:50:53 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15766 20080802055053P</guid></item><item><title>Source code checked in, #15748</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Fixed the RegularString rule. Forgot to implode the list of EscapedChar&amp;#39;s</description><author>jeffmoser</author><pubDate>Sat, 02 Aug 2008 02:52:13 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15748 20080802025213A</guid></item><item><title>Source code checked in, #15710</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Oops. Forgot to actually turn on OMetaParser. Previous version was using ManualOMetaParser. This exposed a bug in my implementation of RegularString that I&amp;#39;ll need to fix soon.</description><author>jeffmoser</author><pubDate>Fri, 01 Aug 2008 03:31:11 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15710 20080801033111A</guid></item><item><title>Source code checked in, #15493</title><link>http://www.codeplex.com/ometasharp/SourceControl/ListDownloadableCommits.aspx</link><description>Did work on CSharpRecognizer.ometacs so that it works properly. This required some changes in other spots to fix up a few problems.&amp;#13;&amp;#10;&amp;#13;&amp;#10;Now OMeta&amp;#35; can parse itself and the C&amp;#35; recognizer. Furthermore, the generated parser now uses the generated C&amp;#35; recognizer.</description><author>jeffmoser</author><pubDate>Sun, 27 Jul 2008 23:23:39 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15493 20080727112339P</guid></item></channel></rss>