<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#62;∞</title>
	<atom:link href="http://greaterthaninfinity.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://greaterthaninfinity.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 31 Oct 2011 06:16:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>MAME Arcade Update</title>
		<link>http://greaterthaninfinity.com/2011/10/mame-arcade-update/</link>
		<comments>http://greaterthaninfinity.com/2011/10/mame-arcade-update/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 19:26:31 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=135</guid>
		<description><![CDATA[I made a mistake when looking at the library V-USB. It seems to require a processor that is 16 Mhz or faster, and the Arduino Fio is only 8 Mhz. I do have a Arduino Pro 16 Mhz that runs on 5 volts, but I also have an Arduino Uno, which is 16 Mhz and [...]]]></description>
			<content:encoded><![CDATA[<p>I made a mistake when looking at the library V-USB. It seems to require a processor that is 16 Mhz or faster, and the Arduino Fio is only 8 Mhz. I do have a Arduino Pro 16 Mhz that runs on 5 volts, but I also have an Arduino Uno, which is 16 Mhz and has a 2nd chip on it, an Atmega8u2 which acts as a USB Device. This means I&#8217;ll still be able to get this to work, but I&#8217;ll have to use a different chip than I originally thought.</p>
<p>Other than that not much else is new. I plan on working on getting the USB drivers working on the Atmega8u2 so it shows up as a keyboard and does something simple, like press &#8216;A&#8217; every 2~3 seconds to verify that its working.</p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2011/10/mame-arcade-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MAME Arcade Controller</title>
		<link>http://greaterthaninfinity.com/2011/09/mame-arcade-controller/</link>
		<comments>http://greaterthaninfinity.com/2011/09/mame-arcade-controller/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 02:56:19 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Embedded]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=119</guid>
		<description><![CDATA[Just wanted to put an update out about my game controller. The controller currently communicates over serial to the computer and requires a special driver for it to send key presses. Right now, I send key presses via a C API I access from python, but I am working on a new solution. I am trying [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://greaterthaninfinity.com/wp-content/uploads/2011/09/IMG_0198.jpg"><img class="size-medium wp-image-120 alignright" style="padding: 10px;" title="Red Box Arcade Controller" src="http://greaterthaninfinity.com/wp-content/uploads/2011/09/IMG_0198-300x225.jpg" alt="Totally Awesome Sparkfun shaped arcade controller" width="300" height="225" /></a>Just wanted to put an update out about my game controller. The controller currently communicates over serial to the computer and requires a special driver for it to send key presses. Right now, I send key presses via a C API I access from python, but I am working on a new solution. I am trying to get <a title="V-USB" href="http://www.obdev.at/products/vusb/index.html">V-USB</a> to play nice with my Arduino Fio, which shouldn&#8217;t be a problem. Hopefully, once I have that figured out I&#8217;ll have a working wireless MAME Arcade controller and I can start working on a proper case for it instead of the cardboard box its in. Not that the Sparkfun box isn&#8217;t awesome, but it could due with a more comfortable shape than it has.</p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2011/09/mame-arcade-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Try Rakudo, in your browser</title>
		<link>http://greaterthaninfinity.com/2010/09/try-rakudo-in-your-browser/</link>
		<comments>http://greaterthaninfinity.com/2010/09/try-rakudo-in-your-browser/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 02:11:05 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Perl 6]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[rakudo]]></category>
		<category><![CDATA[try.rakudo.org]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=98</guid>
		<description><![CDATA[A new site I have been helping with is up and running. try.rakudo.org is a site to let people try out rakudo right in their browser. It connect the browser to an instance of the Rakudo REPL running on the server to let you evaluate any sample code (within reason) you&#8217;d like. It has some [...]]]></description>
			<content:encoded><![CDATA[<p>A new site I have been helping with is up and running. <a href="http://try.rakudo.org">try.rakudo.org</a> is a site to let people try out rakudo right in their browser. It connect the browser to an instance of the Rakudo REPL running on the server to let you evaluate any sample code (within reason) you&#8217;d like. It has some obvious limitations, anything that takes longer than 15 seconds is probably an endless loop and will be killed and it has limitations on memory usage for the system.</p>
<p>My next goal for the site will be to introduce a tutorial system into the website&#8217;s interactive terminal. The current plan is to follow along the outline of the <a href="http://github.com/perl6/book/">rakudo book</a> and build a set of interactive tutorials to teach new users about rakudo, and perl 6 in general. Maybe I can extend it to use other backend but for now its focused on the rakudo backend.</p>
<p>Any questions or comments are welcome. Please feel free to comment on the site and its usability or any flaws you may find.</p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/09/try-rakudo-in-your-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSoC Work</title>
		<link>http://greaterthaninfinity.com/2010/05/gsoc-work/</link>
		<comments>http://greaterthaninfinity.com/2010/05/gsoc-work/#comments</comments>
		<pubDate>Thu, 20 May 2010 15:24:51 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Parrot]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=88</guid>
		<description><![CDATA[I would like to outline of my GSoC goals and objectives: My Google Summer of Code (2010) objectives are to integrate libffi into the NCI framework and to build a new Stack Frame builder that takes advantage of the llvm. NCI Framework &#8211; The current NCI system has a few limitations which I am going [...]]]></description>
			<content:encoded><![CDATA[<p>I would like to outline of my GSoC goals and objectives:</p>
<p>My Google Summer of Code (2010) objectives are to integrate libffi into the NCI framework and to build a new Stack Frame builder that takes advantage of the llvm. </p>
<p>NCI Framework &#8211; The current NCI system has a few limitations which I am going to try to alleviate. I don&#8217;t know if I will be able to remove all of the limitations, but I will try to add all of the capabilities of the libffi library to the core of Parrot. This includes being able to define structures as data types for calling functions, adding a few new data types on systems that support them (this would be 64 bit integers on systems that have 64 bit integers, and etc.), as well as adding improvements for calling functions in foreign libraries. The current NCI system in Parrot is not capable of defining a structure for instance, or int64 types. I plan on implementing all of the supported data types in libffi as parts of the modified NCI system. I do plan on retaining the current functionality of the NCI system for people without libffi. I don&#8217;t think parrot currently bundles any third party libraries with parrot, but I do know python, for example, bundles libffi with its source code and builds its by default if you don&#8217;t make it use your system libffi. </p>
<p>Stack Frame Builder &#8211; There are a number of places for integrating the llvm into parrot. One obvious place to start is with the stack frame builder. Translating the stack frame into llvm-ir and running some of the llvm optimization passes over the resulting code could provide parrot with both a JIT system and some speed ups of the generated code. It could also be possible to dump the llvm-ir code to a file, so you end up with a sort of pbc to llvm-ir translation. The resulting llvm-ir can also be compiled into a native binary or dynamic library, which would also be useful because that could cut out some of the overhead for libraries. </p>
<p>The current plans for the stack frame builder are still being mapped out, but for now I am focusing on the NCI system, and I am hoping to have that knocked out relatively quickly so I can move on to the work with the llvm. </p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/05/gsoc-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nq-nqp: Lessons Learned</title>
		<link>http://greaterthaninfinity.com/2010/05/nq-nqp-lessons-learned/</link>
		<comments>http://greaterthaninfinity.com/2010/05/nq-nqp-lessons-learned/#comments</comments>
		<pubDate>Tue, 04 May 2010 02:03:52 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[NQP]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=77</guid>
		<description><![CDATA[NQ-NQP&#8217;s Status: A fairly well defined grammar for parsing nqp exists. It generates AST nodes for most of the grammar, but not all of the grammar. In the future, it would be useful for AST optimizations, like constant folding Code generation supports integers and subs, but it does not yet support other data types like [...]]]></description>
			<content:encoded><![CDATA[<p>NQ-NQP&#8217;s Status:</p>
<ul>
<li>A fairly well defined grammar for parsing nqp exists. It generates AST nodes for most of the grammar, but not all of the grammar.
<ul>
<li>In the future, it would be useful for AST optimizations, like constant folding</li>
</ul>
</li>
<li>Code generation supports integers and subs, but it does not yet support other data types like floats, strings, bools, or anything else like regular expressions.
<ul>
<li>Built in basic types should eventually include:
<ul>
<li>Packages</li>
<li>Subs</li>
<li>Classes</li>
<li>Roles</li>
<li>Arrays</li>
<li>Hashes</li>
<li>Ints</li>
<li>Nums</li>
<li>Strings</li>
<li>Bools</li>
</ul>
</li>
</ul>
</li>
<li>Execution of code generated works.
<ul>
<li>Debugging is surprisingly easy with the gdb, but I will have to see how hard it is in the future. I know that if I start working with a JIT it becomes increasingly difficult to view whats being run on the processor.</li>
</ul>
</li>
<li>A limited number of binary ops, like add and subtract are working.</li>
<li>The VM supports method calls, but the code does not currently generate code properly.</li>
</ul>
<p>Lessons learned:</p>
<ul>
<li>LLVM is neat but advanced and complicated</li>
<li>Grammars are fun, we should do more of those
<ul>
<li>Having a way of defining a grammar is difficult though currently, in C there is yacc/bison but that is a bit limited compared to other systems.</li>
</ul>
</li>
<li>Grammars are hard, parsing is not easy
<ul>
<li>Tokenizers and Lexers are difficult if you want to contextually call things based off of where they should be in your grammar</li>
</ul>
</li>
<li>Focusing on construction a real &#8220;Compiler&#8221; is probably a mistake. Start small, an ast that you can walk and execute each step of the way is better for learning than building a code generation system. Code generation is useful but hard, and can be deferred until later.</li>
</ul>
<p>Things I would do different if I could start over:</p>
<ul>
<li>Focus on the grammar, and making an executable AST rather than translating the AST into code.</li>
<li>If there was a VM out there I could link to for a runtime, I have not found an easy to use one. It would be nice to have because then I could of focused more on other parts of the language, but VM support is not that hard, just lots of typing.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/05/nq-nqp-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Small Update for Scoping</title>
		<link>http://greaterthaninfinity.com/2010/04/small-update-for-scoping/</link>
		<comments>http://greaterthaninfinity.com/2010/04/small-update-for-scoping/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 03:30:09 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[NQP]]></category>
		<category><![CDATA[implementation details]]></category>
		<category><![CDATA[scopes]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=63</guid>
		<description><![CDATA[I now have lexical and dynamic scopes fully implemented in my runtime support, and I know how I will be using them once I have code generation completed. Package scope seems like it shouldn&#8217;t be to difficult to figure out, now that I have lexical&#8217;s working. My strategy for lexical scoping is on any block [...]]]></description>
			<content:encoded><![CDATA[<p>I now have lexical and dynamic scopes fully implemented in my runtime support, and I know how I will be using them once I have code generation completed. Package scope seems like it shouldn&#8217;t be to difficult to figure out,  now that I have lexical&#8217;s working.<span id="more-63"></span></p>
<p>My strategy for lexical scoping is on any block that adds to the scope, I call a special function that pushes a new Stash onto my current scope, and sets its OUTER to the former scope. Then, at the end of the second of code that causes the scope, I simply pop it by redirection the pointer back to what OUTER pointed to.</p>
<p>So, lets look at an example of code:</p>
<pre class="brush: perl">my $a := 5;
my $*b := 5;
sub g() {
  my $a := 4;
  my $*b := 4;
  f();
}
sub f() {
  say($a);
  say($*b);
}
g();
# prints:
# 5
# 4</pre>
<p>In here this example you can clearly see how scoping works. I&#8217;ll make a chart for the of the values in each scope and say on which line numbers it creates the scope:</p>
<table>
<tbody>
<tr>
<th>Scope<br />
GLOBAL</th>
<th>Scope<br />
g()</th>
<th>Scope<br />
f()</th>
</tr>
<tr>
<td>$a = 5</td>
<td>$a = 4</td>
<td>look up $a finds $a = 5</td>
</tr>
<tr>
<td>$*b = 5</td>
<td>$*b = 4</td>
<td>look up $*b finds $*b = 4</td>
</tr>
<tr>
<td>&amp;g()</td>
<td></td>
</tr>
<tr>
<td>&amp;f()</td>
<td></td>
</tr>
<tr>
<td></td>
<td>OUTER = GLOBAL</td>
<td>OUTER = &#038;g()</td>
</tr>
</tbody>
</table>
<p>&amp;f() has a scope too, but no variables are declared in it, so it wouldn&#8217;t be required to make a scope there in this case.</p>
<p>So, lexically scoped variables will look in the scope they were defined in as well as their parent scopes for a variable. Since the definition of &amp;g() is in the same lexical scope as $a it, it can see the value of the nearest $a. When you look up a variable, any variable, it looks for the closest variable with the same name, lexical and dynamic scope just start looking in different places. Lexical scope is tied to the a specific place in the stack and looks up from there. Dynamic scope starts at the top of stack and traveses down the stack frame until it finds something with the same name, and then checkes the GLOBAL package for a variable with the same name, the raises an error that its not defined.</p>
<p>As you can see, there wouldn&#8217;t be to many complications implementing this, it just a hash with an extra pointer to its OUTER, which is exactly how I am implementing it. But I am glad I have this working now, so I can move on to code generation. </p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/04/small-update-for-scoping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Runtime Support for nq-nqp</title>
		<link>http://greaterthaninfinity.com/2010/04/runtime-support-for-nq-nqp/</link>
		<comments>http://greaterthaninfinity.com/2010/04/runtime-support-for-nq-nqp/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 14:18:41 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[NQP]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[gc]]></category>
		<category><![CDATA[runtime support]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=51</guid>
		<description><![CDATA[So, I have a fairly complete parser and AST for my compiler. I think its an appropriate time to start looking at runtime support and how some of the runtime properties of the language will work. Here is a rough diagram of the relation between objects instances, their containers, and their lexical values: For garbage [...]]]></description>
			<content:encoded><![CDATA[<p>So, I have a fairly complete parser and AST for my compiler. I think its an appropriate time to start looking at runtime support and how some of the runtime properties of the language will work.</p>
<p>Here is a rough diagram of the relation between objects instances, their containers, and their lexical values:<br />
<a href="http://greaterthaninfinity.com/wp-content/uploads/2010/04/Object-Meta-model-Map.png"><img class="aligncenter size-full wp-image-52" title="Object Meta-model Map" src="http://greaterthaninfinity.com/wp-content/uploads/2010/04/Object-Meta-model-Map.png" alt="" width="693" height="593" /></a></p>
<p>For garbage collection for now I am simply going to use Boehm GC [1], it should do for now, till I can look into GC a bit more.</p>
<p>The meta model seems pretty solid, granted its from the perl 6 spec. The current nqp-rx doesn&#8217;t have its own meta model. It uses parrot&#8217;s meta model directly. So, this has lead me to an issue, since I can&#8217;t be consistant with nqp, since I don&#8217;t want to implement all of parrot. So, instead I am going to steal the MOP (Meta Object Protocol) from perl 6.</p>
<p>Dispatch is going to be interesting. I&#8217;d like to implement multi-dispatch, but maybe not just yet. I have been thinking about it, for now I will probably start with single dispatch, and build up to multi-dispatch later.</p>
<p>Here is a sequence diagram of how I think I could accomplish multi-dispatch, sorta. I still need to flush out some of my ideas for how to do this right.</p>
<p style="text-align: center;"><a href="http://greaterthaninfinity.com/wp-content/uploads/2010/04/Dispatch.png"><img class="aligncenter size-full wp-image-59" title="Dispatch" src="http://greaterthaninfinity.com/wp-content/uploads/2010/04/Dispatch.png" alt="" width="563" height="368" /></a></p>
<p><strong>Foot Notes:</strong><br />
1#  http://www.hpl.hp.com/personal/Hans_Boehm/gc/</p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/04/runtime-support-for-nq-nqp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nq-nqp AST Nodes</title>
		<link>http://greaterthaninfinity.com/2010/03/nq-nqp-ast-nodes/</link>
		<comments>http://greaterthaninfinity.com/2010/03/nq-nqp-ast-nodes/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 17:14:29 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=43</guid>
		<description><![CDATA[Here is a current diagram of the types of nodes in my AST for nq-nqp. I will be adding more as I need, but currently I feel I have enough to start with all the basic control flow. I need to figure out how packages will work, and how dispatching will work.]]></description>
			<content:encoded><![CDATA[<p>Here is a current diagram of the types of nodes in my AST for nq-nqp. </p>
<div id="attachment_44" class="wp-caption aligncenter" style="width: 714px"><a href="http://greaterthaninfinity.com/wp-content/uploads/2010/03/AST-Nodes.png"><img src="http://greaterthaninfinity.com/wp-content/uploads/2010/03/AST-Nodes.png" alt="nq-nqp AST Nodes" title="nq-nqp AST Nodes" width="704" height="1856" class="size-full wp-image-44" /></a><p class="wp-caption-text">nq-nqp AST Nodes</p></div>
<p>I will be adding more as I need, but currently I feel I have enough to start with all the basic control flow. I need to figure out how packages will work, and how dispatching will work. </p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/03/nq-nqp-ast-nodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCV Mapping System</title>
		<link>http://greaterthaninfinity.com/2010/03/opencv-mapping-system/</link>
		<comments>http://greaterthaninfinity.com/2010/03/opencv-mapping-system/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 04:51:23 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=40</guid>
		<description><![CDATA[I am starting work on a new robotics project. The current goal of this project is to have a set of robots that have an ad hoc wireless mesh network, for research purposes at Auburn University. Professor Biaz is conducting research on mesh networking systems. To make his life easier, he has enlisted my help [...]]]></description>
			<content:encoded><![CDATA[<p>I am starting work on a new robotics project. The current goal of this project is to have a set of robots that have an ad hoc wireless mesh network, for research purposes at Auburn University. Professor Biaz is conducting research on mesh networking systems. To make his life easier, he has enlisted my help with programming a set of robots that he can use for broadcasting his mesh network.</p>
<p>A current need for the system is a localization system for navigation inside the building we are working in. Utilizing OpenCV and web cameras mounted on the robots, I plan on creating a SLAM system that uses maps of the ceiling of our building for navigation purposes. With an upwards facing camera, and a map of the ceiling I should be able to use OpenCV to locate where the robots are on the map.</p>
<p>Right now, I am working on a proof of concept, if this works, I&#8217;ll update this and move on to maybe a more general library.</p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/03/opencv-mapping-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Difficulties with creating a LALR(1) Parser for NQ-NQP</title>
		<link>http://greaterthaninfinity.com/2010/03/difficulties-with-creating-a-lalr1-parser-for-nq-nqp/</link>
		<comments>http://greaterthaninfinity.com/2010/03/difficulties-with-creating-a-lalr1-parser-for-nq-nqp/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 03:05:24 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lexer]]></category>
		<category><![CDATA[NQP]]></category>
		<category><![CDATA[parser]]></category>

		<guid isPermaLink="false">http://greaterthaninfinity.com/?p=33</guid>
		<description><![CDATA[So, I have run into an interesting problem. In a LALR(1) Parser, how do you tell the difference between / for divide and / for starting a regular expression? 
]]></description>
			<content:encoded><![CDATA[<p>So, I have run into an interesting problem. In a LALR(1) Parser, how do you tell the difference between / for divide and / for starting a regular expression? </p>
<p>The lexer needs to be able to see the difference between these two operations, so, maybe its not the parsers fault? This would require flex (the lexer I am currently using) to be aware of the context it is in. It does support state based context, but the lexer has to be able to enter and exit the context. It is not callable from the parser generator. So, now I have a problem. Either I make the lexer do really complicated things, or I have a different kind of parser. Perl 5 has a bison based grammar but, its lexer is not at all sane. It has to do some tricky things to look around and find when a / is a regex vs a divide. A simple example of this might be 5 / 5 / 5; If your parser/lexer is not very smart, that might seem like an integer followed by a regular expression followed by an integer. Or is it an integer divided by an integer divided by an integer? Well, I know thats a divide not an regular expression. But its proving difficult, in my limited knowledge of bison and flex, to make bison and flex understand this. </p>
<p>So, talking to some of the folks in the #perl6 IRC channel, it seems nqp and the STD.pm for perl 6 both use a LL strategy for parsing content. Bison produces a LALR(1) style parser, which is a look-ahead left recursion parser. Left recursion produces a bottom-up parser. A LALR(k) or GLR parser would also give me some trouble, since I would have less knowledge of what I am parsing coming from the bottom-up. That doesn&#8217;t mean its impossible to make a bottom-up parser for NQP and Perl 6 but it seems more difficult. </p>
<p>I may not understand all the parser details as much as I should, but it seems to me that for now I am going to come up with a LL style parser strategy. </p>
]]></content:encoded>
			<wfw:commentRss>http://greaterthaninfinity.com/2010/03/difficulties-with-creating-a-lalr1-parser-for-nq-nqp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

