<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3118801521195066133</id><updated>2011-09-20T12:16:50.066-05:00</updated><category term='Duck Typing'/><category term='C♯'/><category term='LINQ'/><category term='Scope'/><category term='Compiler'/><category term='Abstraction'/><category term='DFA'/><category term='Intermediate AST Bridge'/><category term='Expressions'/><category term='Semantic Analysis'/><category term='Parser'/><category term='SLF'/><category term='LL(k)'/><category term='Syntactical Analysis'/><category term='LL(inf)'/><category term='Generation'/><category term='NFA'/><category term='Idea'/><category term='Lexical Analysis'/><category term='Refactoring'/><category term='Finite State Automation'/><category term='Optimization'/><category term='Compiled Type Bridge'/><category term='Type Inference'/><title type='text'>Objectified Intermediate Language</title><subtitle type='html'>The ramblings of a coder creating a high level code generation framework targeting the .NET Common Language Infrastructure</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-3286876698693787310</id><published>2011-09-17T10:07:00.001-05:00</published><updated>2011-09-17T18:10:56.911-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Type Inference'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimization'/><title type='text'>Abstraction - Core</title><summary type='text'>After a few years of working on a side project, aimed at replacing the simpler Code Generation Framework named the Objectified Intermediate Language, I've finally started to get to the point where the functional parity between the two is equivalent.  The newer OIL framework allows more and understands the concepts behind true generic typing.

The initial tests of constant folding, type-parameter </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/3286876698693787310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=3286876698693787310&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3286876698693787310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3286876698693787310'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2011/09/abstraction-core.html' title='Abstraction - Core'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-3637014550321866637</id><published>2009-09-04T16:17:00.006-05:00</published><updated>2011-08-12T01:46:40.091-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Refactoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='DFA'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='LL(inf)'/><title type='text'>Build: Refresh</title><summary type='text'>Well,After two years in the project, I decided a few days ago to start a major overhaul of the compiler's build code.  In these two years I learned the basic structure of NFA, DFA, recognizers vs. transducers, look-ahead determination, creating a state-machine which can figure out the look-ahead of the langauge at any given point; however, in all of this, the code has become quite cluttered and</summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/3637014550321866637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=3637014550321866637&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3637014550321866637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3637014550321866637'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/09/build-refresh.html' title='Build: Refresh'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-981854002241950755</id><published>2009-08-28T18:54:00.011-05:00</published><updated>2009-08-30T21:23:51.229-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parser'/><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='LL(inf)'/><title type='text'>LL(∞)</title><summary type='text'>Finally,I have the parser compiler somewhere that I can say is progress, and with that, comes knowing that the class of parser I'm writing a compiler for: LL(∞).  This still places it in the LL parser category (top-down, left-most derivative); however, it means that the lookahead for the grammars is unbound to any specific k.I've written a very simplistic recognizer (below) to go with the </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/981854002241950755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=981854002241950755&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/981854002241950755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/981854002241950755'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/08/ll.html' title='LL(∞)'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-9148837306601606672</id><published>2009-07-25T22:40:00.002-05:00</published><updated>2009-07-25T22:54:51.226-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parser'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><title type='text'>C♯ Parser</title><summary type='text'>Well,It's taken a long time and a lot of research but I'm finally making headway on the C♯ parser I've been writing (well writing the parser compiler to write...).Previously, I decided to attempt a backtrack-less, left-most derivation, recursive descent parser.  In the end, all the research told me: it's not worth it.  Other LL(*) implementations, such as ANTLR, that use recursive descent and </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/9148837306601606672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=9148837306601606672&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/9148837306601606672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/9148837306601606672'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/07/c-parser.html' title='C♯ Parser'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-8636445650222317891</id><published>2009-06-14T22:58:00.006-05:00</published><updated>2009-06-15T00:13:04.871-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Language Integrated Query - Manual or Aided Objectified Building</title><summary type='text'>Well,Today's project was implementing an objectified representation of Language Integrated Query.  Even before I started, I knew that I wanted it to be as seamless as the original, so I decided to create two variants of the structure: your standard AST form, and a 'builder' form.  Where the builder takes responsibility for selecting the proper body type (select, group, select into, group into), </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/8636445650222317891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=8636445650222317891&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8636445650222317891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8636445650222317891'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/06/language-integrated-query-manual-or.html' title='Language Integrated Query - Manual or Aided Objectified Building'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-6413629391473321350</id><published>2009-05-22T23:17:00.003-05:00</published><updated>2009-05-22T23:27:18.185-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Intermediate AST Bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Scope'/><title type='text'>Lambda Expressions - Hoisting</title><summary type='text'>Just musing over the concept of lambda expressions, AKA. anonymous methods.  If what I understand is correct, the entire method of hoisting involves a simple analysis of the scopes involved within the hoist.  You'd merely have to create a scope dependency chain within each scope.  If a scope depends on another scope, you evaluate the associated variables, and move them forward.  This process </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/6413629391473321350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=6413629391473321350&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6413629391473321350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6413629391473321350'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/05/lambda-expressions-hoisting.html' title='Lambda Expressions - Hoisting'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-72129755305702727</id><published>2009-05-22T01:38:00.016-05:00</published><updated>2009-05-22T02:46:49.882-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><title type='text'>Building a framework for compilers...</title><summary type='text'>I'm taking a break from the Parser Compiler madness to work on some functionality that would be useful for a compiler.  It's what I call an AssemblyWorkspace.  It's basically a large scale wrapper around the concept of an INamespaceParent (which is also a type parent).  In creating an AssemblyWorkspace, you provide it with the assembly that's its 'core' assembly.  Typical examples would be the </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/72129755305702727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=72129755305702727&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/72129755305702727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/72129755305702727'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/05/building-framework-for-compilers.html' title='Building a framework for compilers...'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-2676001887967349843</id><published>2009-04-02T16:08:00.005-05:00</published><updated>2009-04-02T17:40:14.522-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='DFA'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><title type='text'>DFA - Behind the Scenes</title><summary type='text'>Just posting for anyone interested.  Something I learned while handling a large part of the finite state automation code was working with subsets, full sets, and so on.  In order to ease the pain of working with a large series of characters, I created a 'RegularLanguageBitArray' which originally wrapped the Systems.Collections.BitArray.  One thing I found with using it is with the frequency at </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/2676001887967349843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=2676001887967349843&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/2676001887967349843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/2676001887967349843'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/04/dfa-behind-scenes.html' title='DFA - Behind the Scenes'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-5774030823689420915</id><published>2009-03-30T20:05:00.004-05:00</published><updated>2009-03-30T20:24:25.507-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Syntactical Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='LL(k)'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Lexical Analysis'/><title type='text'>LL(k) Parser - Tail Ambiguity</title><summary type='text'>One of the fun things of doing it yourself is you learn of some annoying hurdles, the hard way.  The most recent of which is what I'm calling 'Tail ambiguity', which is basically a lock created by the required part of a rule after the parsing rule exits.  A lock exists with the optional aspect of the parsing rule and the required aspect of (one of) the calling rule(s).A simple example is if you </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/5774030823689420915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=5774030823689420915&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/5774030823689420915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/5774030823689420915'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/03/llk-parser-tail-ambiguity.html' title='LL(k) Parser - Tail Ambiguity'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-6997931876745110817</id><published>2009-03-22T18:01:00.004-05:00</published><updated>2009-03-22T18:14:49.253-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Syntactical Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Refactoring'/><category scheme='http://www.blogger.com/atom/ns#' term='LL(k)'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><title type='text'>Look ahead exploration - LL(k)</title><summary type='text'>Well about a week later, and a few dozen failures, I've learned a thing or two.The initial attempt at a 'syntax tree' yielded a system wherein I had a true tree of the syntax, but the problem was, it didn't do a damn bit of good for a Recursive Descent parser.  Extracting the information about which rule was related to what look-ahead was difficult and hackish, at best a guess.  Which doesn't </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/6997931876745110817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=6997931876745110817&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6997931876745110817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6997931876745110817'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/03/look-ahead-exploration-llk.html' title='Look ahead exploration - LL(k)'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-6759809159258579281</id><published>2009-03-14T15:26:00.004-05:00</published><updated>2009-03-14T16:39:28.552-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Syntactical Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='DFA'/><title type='text'>Language Data Analysis and Syntactical Analysis</title><summary type='text'>Well, presently I'm working on two aspects of the language analysis phase, data dependencies (what it exports in the form of a Concrete Syntax Tree) and Syntactical analysis.  Both are turning out to be harder than expected, though the data analysis is a lot easier by comparison than the syntactical aspect.  Below is a small snippet from the console (reformatted for reading) that describes the </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/6759809159258579281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=6759809159258579281&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6759809159258579281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6759809159258579281'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/03/language-data-analysis-and-syntactical.html' title='Language Data Analysis and Syntactical Analysis'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-742215372568770918</id><published>2009-03-09T06:29:00.009-05:00</published><updated>2009-03-09T07:19:43.235-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='DFA'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Lexical Analysis'/><title type='text'>Context Awareness for Simple Lexical analysis</title><summary type='text'>I've been working on the project quite a bit lately, the major thing of late is context awareness for state machines.  Unlike the much older hack attempt from a year+ ago, which used a radix tree structure or something similar, this uses a proper DFA implementation.Most of the Compiler Compilers I've used seem to use a series of state transition tables (a series of integers that relates to what </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/742215372568770918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=742215372568770918&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/742215372568770918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/742215372568770918'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/03/context-awareness-for-simple-lexical.html' title='Context Awareness for Simple Lexical analysis'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-8281837902989266657</id><published>2009-03-06T07:55:00.002-06:00</published><updated>2009-03-06T12:24:39.147-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finite State Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='NFA'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='DFA'/><title type='text'>NFA - DFA - and so on</title><summary type='text'>I'd like to say I've been super busy, but the reality is quite the opposite.My job's entered work-share, which means the hours I was working (60+) were cut into less than half.In other news, I decided to use the extra time to focus on some other areas of language research, namely NFA-&gt;DFA-&gt;Minimal state state machines.  So far it's going very well.  The next step, since for the scope of the </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/8281837902989266657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=8281837902989266657&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8281837902989266657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8281837902989266657'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2009/03/nfa-dfa-and-so-on.html' title='NFA - DFA - and so on'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-3481257446830616133</id><published>2008-09-07T12:47:00.004-05:00</published><updated>2008-09-07T13:27:13.994-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Duck Typing'/><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Type Inference'/><title type='text'>Duck Typing in a Static Core</title><summary type='text'>I was reading an interesting blog post that described duck typing and how it helps dynamic languages, and how it works in theory.  I'm thinking of a few ways on how this might be feasible to implement, and I think I have one.  I'm going to do a few whiteboards on the idea and post back when I get a chance.The basic idea involves use of generics.  The full idea will take some time to just map out,</summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/3481257446830616133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=3481257446830616133&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3481257446830616133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3481257446830616133'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/09/duck-typing-in-static-core.html' title='Duck Typing in a Static Core'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-4043082509365008621</id><published>2008-07-26T10:13:00.008-05:00</published><updated>2008-07-26T15:21:07.426-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Refactoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Compiled Type Bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><title type='text'>Light Refactoring turns into Major Refactoring</title><summary type='text'>Well,As much as I'd like to keep the project simple, it hasn't been simple from day one.  Due to the features I'm planning on, I figured it best if I restructured the project, the Scripting Language Foundation, into a series of projects.  There's the primary Type System, the CLI Type system, and the OIL (Intermediate) Type System.  These three systems are best kept separate to help simplify </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/4043082509365008621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=4043082509365008621&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/4043082509365008621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/4043082509365008621'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/07/light-refactoring-turns-into-major.html' title='Light Refactoring turns into Major Refactoring'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-3832156582975127144</id><published>2008-07-03T18:34:00.010-05:00</published><updated>2008-07-03T21:52:59.132-05:00</updated><title type='text'>Light Refactoring</title><summary type='text'>After a short delay, due to work, I'm back working on this.I'm doing a little clean up work on the core type system and rewriting the assist methods that are associated to the functionality, that's presently broken.  This will greatly assist in streamlining the code and reduce the dependency on internal components that were used before.  I also hope to be able to open up the type system a little </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/3832156582975127144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=3832156582975127144&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3832156582975127144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/3832156582975127144'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/07/light-rework.html' title='Light Refactoring'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-8697145270106018277</id><published>2008-05-14T13:55:00.004-05:00</published><updated>2008-05-14T15:35:07.378-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><category scheme='http://www.blogger.com/atom/ns#' term='Idea'/><title type='text'>Constructor Arguments on Generic Type Parameters</title><summary type='text'>This is something I've wanted on Generics since they first introduced them. It didn't come in version 3.0 or 3.5; however because I'm writing my own Objectified Intermediate Language with the goal of translating the objects into Common Intermediate Language, I can add features similarly to how C#'s compiler adds support for lambda expressions, anonymous methods, closures, and so on.I decided to </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/8697145270106018277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=8697145270106018277&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8697145270106018277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8697145270106018277'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/constructor-arguments-on-generic-type.html' title='Constructor Arguments on Generic Type Parameters'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-6538695119350999339</id><published>2008-05-12T12:50:00.012-05:00</published><updated>2008-05-12T13:41:22.153-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><category scheme='http://www.blogger.com/atom/ns#' term='Type Inference'/><title type='text'>Type-Inference - Part 1</title><summary type='text'>Well,I finally got to a point where I can start the fun challenging aspects involved in the new languages.  Smart type inference.  I'm just posting a few notes about it for others to either laugh about or reply to.  First I'll start with Lambda expressions and how to properly discern a good match from a not-so-good match.Figure 1Basically a lambda signature type, if encountered as a parameter of </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/6538695119350999339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=6538695119350999339&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6538695119350999339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/6538695119350999339'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/type-inference-interesting-challenge-pt.html' title='Type-Inference - Part 1'/><author><name>Alexander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_e6zZq9aYLl8/SCdOvFPsalI/AAAAAAAAAAM/Rf9ez9TZVV0/S220/avatar-ev2-a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-4804494856947652828</id><published>2008-05-11T11:13:00.004-05:00</published><updated>2008-05-11T14:44:59.006-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C♯'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimization'/><title type='text'>C♯ - Fast Array Initialization</title><summary type='text'>I've been researching the .NET Common Intermediate Language (CIL) lately, and I noticed a few funny things in how C♯ exports array initializers.If you use a primitive type, such as Int32, Int64, Byte, SByte, and so on, instead of creating a new array and initializing each element individually, it merely creates a new array and pushes a RuntimeFieldHandle of a static field stored privately.Now to </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/4804494856947652828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=4804494856947652828&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/4804494856947652828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/4804494856947652828'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/c-fast-array-initialization.html' title='C♯ - Fast Array Initialization'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-2515464246229076493</id><published>2008-05-11T11:09:00.000-05:00</published><updated>2008-05-11T11:12:02.479-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiled Type Bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimization'/><title type='text'>Compiled Types - Part II</title><summary type='text'>Finished the limited load aspect of the Compiled types.  Now even if you access a property like so:console.Members["WindowHeight"] &lt;-- the 'Members' will only encapsulate the WindowHeight property.  The difference there is the indexer on the Members returns a MasterDictionaryEntry&lt;IMember&gt; instance instead of a property.  The reason for this is in order to make the members dictionary work, I used</summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/2515464246229076493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=2515464246229076493&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/2515464246229076493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/2515464246229076493'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/compiled-types-part-ii.html' title='Compiled Types - Part II'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-1901330036468781371</id><published>2008-05-11T11:05:00.003-05:00</published><updated>2008-05-11T14:33:09.921-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimization'/><title type='text'>Expressions - Primitive Reduction</title><summary type='text'>Just thought I'd post on the latest changes to the OIL framework, part of the Abstraction framework.Recently I wrote a mini evaluator for the primitive expressions inside the system.  This way if you had a statement that, for whatever reason, utilized literal mathematical expressions, it would properly reduce them in such a way that the resulted code would contain the least possible execution to </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/1901330036468781371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=1901330036468781371&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/1901330036468781371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/1901330036468781371'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/objectified-intermediate-language.html' title='Expressions - Primitive Reduction'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-8460526079567334871</id><published>2008-05-11T10:59:00.001-05:00</published><updated>2008-05-11T14:29:09.463-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiled Type Bridge'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimization'/><title type='text'>Compiled Type Optimization</title><summary type='text'>I was going through the Compiled Type system and was irritated because the system auto-loaded every member, always, whenever you merely accessed the property associated to them.For example, if I have a reference to Console, if I accessed its 'Properties'; before, it would load all the properties (which is fine) and then encapsulate every member with the framework's equivalent.  While that's fine,</summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/8460526079567334871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=8460526079567334871&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8460526079567334871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8460526079567334871'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/i-was-going-through-compiled-type.html' title='Compiled Type Optimization'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3118801521195066133.post-8590681778738412074</id><published>2008-05-11T10:44:00.000-05:00</published><updated>2008-05-11T11:17:44.064-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Abstraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Generation'/><category scheme='http://www.blogger.com/atom/ns#' term='SLF'/><title type='text'>Introduction</title><summary type='text'>The Objectified Intermediate Language is a framework I'm writing to help people generate code in three of the .NET's primary target languages. That is:Visual BasicVisual C♯Common Intermediate Language (CIL)To do this, there are a few things I must do, such as provide functionality for the transitory steps necessary to generate CIL for operator overloads, short circuiting, extension methods, </summary><link rel='replies' type='application/atom+xml' href='http://blog.oil.slf.abstraction-project.com/feeds/8590681778738412074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3118801521195066133&amp;postID=8590681778738412074&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8590681778738412074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3118801521195066133/posts/default/8590681778738412074'/><link rel='alternate' type='text/html' href='http://blog.oil.slf.abstraction-project.com/2008/05/objectified-intermediate-language-is.html' title='Introduction'/><author><name>Alexander Morou</name><uri>http://www.blogger.com/profile/08365921561476705463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://lhq.rpgsource.net/images/avatar-ev.jpg'/></author><thr:total>0</thr:total></entry></feed>
