<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Writing a BBC BASIC compiler for the CLR</title>
	<atom:link href="http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/</link>
	<description>sin(x) = x</description>
	<lastBuildDate>Sat, 12 Jun 2010 02:44:45 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Les May</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-3027</link>
		<dc:creator>Les May</dc:creator>
		<pubDate>Sat, 06 Feb 2010 16:47:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-3027</guid>
		<description>I invite MUNCH to carefully re-read what I actually said in my posting. I did not say that OBERON does not discard BEBIN/END in control structures. None of the descendents of Pascal implement full closure of control structures. The single word &#039;END&#039; is used to terminate all except the REPEAT..UNTIL loop. If full closure were implemented the examples given would read RECORD..ENDRECORD, FOR..ENDFOR etc. This may be just &#039;syntactic sugar&#039; but it enhances readability. We spend more time reading programs than we do writing them, so readability is important. Lack of ambiguity is the first line of defence against logical errors in a program. 

There is a price to pay for this &#039;verbosity&#039;. It produces larger source files and requires a bit more typing. The latter problem can be overcome by means of a good editor which will check for incorrectly closed control structures and automatically add in the needed terminating word. Interpreters written to the COMAL80 standard accept &#039;NEXT&#039; and replace it with &#039;ENDFOR&#039;. If this could be done 30 years ago it could be done now with compiled languages.

Zonnon corrects one of the unfortunate aspects of MODULA 2 and OBERON which reduce their readability: their insistance on upper case keywords. It does not implement &#039;full closure&#039;. Editors of code for interpreters to the COMAL80 standard accept lower case keyword and silently change it the upper case. I know of only one editor of Component Pascal, a descendent of OBERON 2, which does this. Upper case keywords were fine when everyone used character based displays.

If anyone ever does produce a new COMAL interpreter for the CLR I hope the use of upper case keywords will be dropped. A good syntax highlighting editor would be far better.

One of the factors in making the BBC Basic for Windows so successful is the built in editor. Not perfect but good.</description>
		<content:encoded><![CDATA[<p>I invite MUNCH to carefully re-read what I actually said in my posting. I did not say that OBERON does not discard BEBIN/END in control structures. None of the descendents of Pascal implement full closure of control structures. The single word &#8216;END&#8217; is used to terminate all except the REPEAT..UNTIL loop. If full closure were implemented the examples given would read RECORD..ENDRECORD, FOR..ENDFOR etc. This may be just &#8217;syntactic sugar&#8217; but it enhances readability. We spend more time reading programs than we do writing them, so readability is important. Lack of ambiguity is the first line of defence against logical errors in a program. </p>
<p>There is a price to pay for this &#8216;verbosity&#8217;. It produces larger source files and requires a bit more typing. The latter problem can be overcome by means of a good editor which will check for incorrectly closed control structures and automatically add in the needed terminating word. Interpreters written to the COMAL80 standard accept &#8216;NEXT&#8217; and replace it with &#8216;ENDFOR&#8217;. If this could be done 30 years ago it could be done now with compiled languages.</p>
<p>Zonnon corrects one of the unfortunate aspects of MODULA 2 and OBERON which reduce their readability: their insistance on upper case keywords. It does not implement &#8216;full closure&#8217;. Editors of code for interpreters to the COMAL80 standard accept lower case keyword and silently change it the upper case. I know of only one editor of Component Pascal, a descendent of OBERON 2, which does this. Upper case keywords were fine when everyone used character based displays.</p>
<p>If anyone ever does produce a new COMAL interpreter for the CLR I hope the use of upper case keywords will be dropped. A good syntax highlighting editor would be far better.</p>
<p>One of the factors in making the BBC Basic for Windows so successful is the built in editor. Not perfect but good.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: munch</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-3025</link>
		<dc:creator>munch</dc:creator>
		<pubDate>Tue, 26 Jan 2010 02:58:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-3025</guid>
		<description>Oberon absolutely discards BEGIN/END in control structures.  I&#039;m not sure why Les says it doesn&#039;t, and belies an ignorance of the language from lack of use.  The only use for BEGIN in Oberon is distinguishing program code from declarations in procedures.

RECORD...END, FOR...END, WHILE...END, REPEAT...UNTIL, IF...(ELSE)...(ELSIF)...END, etc.

I invite Les to reconsider his position on Oberon.</description>
		<content:encoded><![CDATA[<p>Oberon absolutely discards BEGIN/END in control structures.  I&#8217;m not sure why Les says it doesn&#8217;t, and belies an ignorance of the language from lack of use.  The only use for BEGIN in Oberon is distinguishing program code from declarations in procedures.</p>
<p>RECORD&#8230;END, FOR&#8230;END, WHILE&#8230;END, REPEAT&#8230;UNTIL, IF&#8230;(ELSE)&#8230;(ELSIF)&#8230;END, etc.</p>
<p>I invite Les to reconsider his position on Oberon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sufficiently Small &#187; IronPython 2.0 and Jython 2.5 performance compared to Python 2.5</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-2082</link>
		<dc:creator>Sufficiently Small &#187; IronPython 2.0 and Jython 2.5 performance compared to Python 2.5</dc:creator>
		<pubDate>Fri, 22 May 2009 17:08:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-2082</guid>
		<description>[...] about whether the low performance was an effect peculiar to my system, or to my program &#8212; the OWL BASIC compiler &#8212; where the problem was first noticed. To briefly recap, I&#8217;d determined that [...]</description>
		<content:encoded><![CDATA[<p>[...] about whether the low performance was an effect peculiar to my system, or to my program &#8212; the OWL BASIC compiler &#8212; where the problem was first noticed. To briefly recap, I&#8217;d determined that [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sufficiently Small &#187; Dismal performance with IronPython</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1963</link>
		<dc:creator>Sufficiently Small &#187; Dismal performance with IronPython</dc:creator>
		<pubDate>Mon, 18 May 2009 09:45:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1963</guid>
		<description>[...] the past few years I&#8217;ve been working on a hobby project called OWL BASIC, which is a compiler for the BBC BASIC lanaguage targeting the .NET Common Language Runtime (CLR). [...]</description>
		<content:encoded><![CDATA[<p>[...] the past few years I&#8217;ve been working on a hobby project called OWL BASIC, which is a compiler for the BBC BASIC lanaguage targeting the .NET Common Language Runtime (CLR). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1827</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Mon, 26 Jan 2009 17:51:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1827</guid>
		<description>Thing is, would you actually ever want to run a program that used Richard&#039;s FNassign hack?  If not, EVAL can be neatly implemented by shipping the compiler in the runtime library.</description>
		<content:encoded><![CDATA[<p>Thing is, would you actually ever want to run a program that used Richard&#8217;s FNassign hack?  If not, EVAL can be neatly implemented by shipping the compiler in the runtime library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Smallshire</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1825</link>
		<dc:creator>Robert Smallshire</dc:creator>
		<pubDate>Sat, 27 Dec 2008 16:03:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1825</guid>
		<description>Hi Richard,

As soon as I get the first full pass for a program like Sphinx Adventure through the compiler, that is from BBC BASIC source code through to .NET byte code, I&#039;ll publish the whole thing.

I intend to leave the extensive diagnostic outputs, such as the abstract syntax tree and control flow graphs in the compiler, since as you indicate they can be very useful in their own right.

The current implementation, in IronPython, is actually very slow. The PLY code, which although its plenty fast enough on regular CPython, seems to hit some corner performance cases in IronPython. Once its compiling is fast enough, but the start-up time is on the order of tens of seconds.  If I can&#039;t solve this problem I may reconsider recoding the compiler in F#.</description>
		<content:encoded><![CDATA[<p>Hi Richard,</p>
<p>As soon as I get the first full pass for a program like Sphinx Adventure through the compiler, that is from BBC BASIC source code through to .NET byte code, I&#8217;ll publish the whole thing.</p>
<p>I intend to leave the extensive diagnostic outputs, such as the abstract syntax tree and control flow graphs in the compiler, since as you indicate they can be very useful in their own right.</p>
<p>The current implementation, in IronPython, is actually very slow. The PLY code, which although its plenty fast enough on regular CPython, seems to hit some corner performance cases in IronPython. Once its compiling is fast enough, but the start-up time is on the order of tens of seconds.  If I can&#8217;t solve this problem I may reconsider recoding the compiler in F#.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Russell</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1824</link>
		<dc:creator>Richard Russell</dc:creator>
		<pubDate>Thu, 25 Dec 2008 13:20:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1824</guid>
		<description>&quot;right now I have a fairly complete compiler front-end for BBC BASIC with lexer, parser and type-checker, which will parse real-world BBC BASIC programs&quot;

Is there any chance you could be persuaded to publish that as a tool in its own right?  It could be an extremely useful pre-processor for BBC BASIC for Windows, because it could draw attention to obscure programming faults which might otherwise only show up, at run time, long after the program is deployed.

I started to write my own syntax checker, for the same reason, but gave up because of the complexities and idiosyncrasies of BBC BASIC&#039;s syntax.</description>
		<content:encoded><![CDATA[<p>&#8220;right now I have a fairly complete compiler front-end for BBC BASIC with lexer, parser and type-checker, which will parse real-world BBC BASIC programs&#8221;</p>
<p>Is there any chance you could be persuaded to publish that as a tool in its own right?  It could be an extremely useful pre-processor for BBC BASIC for Windows, because it could draw attention to obscure programming faults which might otherwise only show up, at run time, long after the program is deployed.</p>
<p>I started to write my own syntax checker, for the same reason, but gave up because of the complexities and idiosyncrasies of BBC BASIC&#8217;s syntax.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Smallshire</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1818</link>
		<dc:creator>Robert Smallshire</dc:creator>
		<pubDate>Thu, 25 Sep 2008 18:52:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1818</guid>
		<description>Hi Kevin,

Well, building this compiler is nothing more than an exercise in learning about how compilers are put together.  To me its similar to how I used to play with Lego as a child - I would spend hours and hours constructing some complex mechanism, only to play with it for five minutes before moving on to the next challenge.  The eventual result of having a compiler for BBC BASIC is not the goal - rather it is the journey of how I get there that interests me.

BBC BASIC makes for an interesting source language precisely because it was never meant to be compiled - and indeed various people in the thread above have pointed out that it will be very difficult, or even impossible, to do so.  I don&#039;t subscribe to the impossible view, but I am prepared to accept that it is difficult, because of its quirky and dynamic features.

I haven&#039;t had time to post about progress recently (I&#039;ll try to correct that at least), but right now I have a fairly complete compiler front-end for BBC BASIC with lexer, parser and type-checker, which will parse real-world BBC BASIC programs such as Acornsoft&#039;s Sphinx Adventure!  I&#039;m currently working on the Control Flow Graph construction and analysis which will enable me to untangle all of the interesting stack-based control structures in BBC BASIC (e.g. omitted NEXT statements) into something compilable.

An interest in code generation is the other purpose of this project.  I&#039;ve been doing a lot of experimentation with .NET, and this project also provides a reason for me to build an good understanding of CIL (MSIL as was) and the Common Language Runtime.

I spend my working hours being paid to make brutal/pragmatic software engineering decisions on a 3 million line C++ project, so spending a little time in the evenings now and again tinkering with a relatively small IronPython compiler for BBC BASIC is not something I take too seriously, and pretty harmless at that.

Ultimately, I don&#039;t have a single BBC BASIC program of my own that I need to, or even want to compile, with this tool.  I can&#039;t retrieve my corpus of BBC BASIC programs I created in my formative years from the seized-up hard-drive in my old Acorn A4000 or any of the other Beebs or Arcs in in the family computer museum.  Maybe eventually, I&#039;ll get some of the Acornsoft text adventures to compile and run...</description>
		<content:encoded><![CDATA[<p>Hi Kevin,</p>
<p>Well, building this compiler is nothing more than an exercise in learning about how compilers are put together.  To me its similar to how I used to play with Lego as a child &#8211; I would spend hours and hours constructing some complex mechanism, only to play with it for five minutes before moving on to the next challenge.  The eventual result of having a compiler for BBC BASIC is not the goal &#8211; rather it is the journey of how I get there that interests me.</p>
<p>BBC BASIC makes for an interesting source language precisely because it was never meant to be compiled &#8211; and indeed various people in the thread above have pointed out that it will be very difficult, or even impossible, to do so.  I don&#8217;t subscribe to the impossible view, but I am prepared to accept that it is difficult, because of its quirky and dynamic features.</p>
<p>I haven&#8217;t had time to post about progress recently (I&#8217;ll try to correct that at least), but right now I have a fairly complete compiler front-end for BBC BASIC with lexer, parser and type-checker, which will parse real-world BBC BASIC programs such as Acornsoft&#8217;s Sphinx Adventure!  I&#8217;m currently working on the Control Flow Graph construction and analysis which will enable me to untangle all of the interesting stack-based control structures in BBC BASIC (e.g. omitted NEXT statements) into something compilable.</p>
<p>An interest in code generation is the other purpose of this project.  I&#8217;ve been doing a lot of experimentation with .NET, and this project also provides a reason for me to build an good understanding of CIL (MSIL as was) and the Common Language Runtime.</p>
<p>I spend my working hours being paid to make brutal/pragmatic software engineering decisions on a 3 million line C++ project, so spending a little time in the evenings now and again tinkering with a relatively small IronPython compiler for BBC BASIC is not something I take too seriously, and pretty harmless at that.</p>
<p>Ultimately, I don&#8217;t have a single BBC BASIC program of my own that I need to, or even want to compile, with this tool.  I can&#8217;t retrieve my corpus of BBC BASIC programs I created in my formative years from the seized-up hard-drive in my old Acorn A4000 or any of the other Beebs or Arcs in in the family computer museum.  Maybe eventually, I&#8217;ll get some of the Acornsoft text adventures to compile and run&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Swinton</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1817</link>
		<dc:creator>Kevin Swinton</dc:creator>
		<pubDate>Wed, 24 Sep 2008 20:40:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1817</guid>
		<description>Hi Robert

This is an interesting site/thread. I too had an urge about ten months ago to look into BBC BASIC - I spent formative years using it to write an awful lot of BASIC/6502 software without consciously  stopping to appreciate how neat the interpreter itself was.

Perhaps I&#039;m more brutal/pragmatic with such things but for me, rather than trying to create a BBC BASIC &quot;to the nth degree&quot; it&#039;s been quite instructive and a lot of fun to simply knuckle down and build a BBC BASIC interpreter (using C) without worrying about backwards compatibility or the desire for the utmost efficiency.

IMHO I&#039;d suggest that the efforts underway here are certainly well intentioned, but maybe a little askew? To explain: if the aim of all this is to ultimately produce a compiler, then BBC BASIC might not be the best language to base your efforts on. Whereas if you want to effectively emulate what Sophie Wilson did all those years ago, throw away the thought that it has to be compiled and lose yourself in the fun that is writing an interpreter!

Whatever you choose to do though, wishing you all the best.</description>
		<content:encoded><![CDATA[<p>Hi Robert</p>
<p>This is an interesting site/thread. I too had an urge about ten months ago to look into BBC BASIC &#8211; I spent formative years using it to write an awful lot of BASIC/6502 software without consciously  stopping to appreciate how neat the interpreter itself was.</p>
<p>Perhaps I&#8217;m more brutal/pragmatic with such things but for me, rather than trying to create a BBC BASIC &#8220;to the nth degree&#8221; it&#8217;s been quite instructive and a lot of fun to simply knuckle down and build a BBC BASIC interpreter (using C) without worrying about backwards compatibility or the desire for the utmost efficiency.</p>
<p>IMHO I&#8217;d suggest that the efforts underway here are certainly well intentioned, but maybe a little askew? To explain: if the aim of all this is to ultimately produce a compiler, then BBC BASIC might not be the best language to base your efforts on. Whereas if you want to effectively emulate what Sophie Wilson did all those years ago, throw away the thought that it has to be compiled and lose yourself in the fun that is writing an interpreter!</p>
<p>Whatever you choose to do though, wishing you all the best.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Les May</title>
		<link>http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/comment-page-1/#comment-1811</link>
		<dc:creator>Les May</dc:creator>
		<pubDate>Mon, 21 Jul 2008 18:35:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.smallshire.org.uk/sufficientlysmall/2007/06/10/writing-a-bbc-basic-compiler-for-the-clr/#comment-1811</guid>
		<description>I used COMAL to write my first &#039;serious&#039; program in 1986/7. It allowed me to display the way that radio tagged animals used their home range. It was complex but maintainable because of the high readability of COMAL. I used this experience to write much larger programs for Acorn RISC machines, but BBC BASIC is much less readable. I also used this experience when I learned Pascal (Delphi) but COMAL has the better structure. I call it &#039;full closure. i.e. a COMAL uses FOR ... ENDFOR; Pascal uses FOR but what follows must be on one line or bracketed with BEGIN... END. Wirth did not improve upon this completely in MODULA 2 or OBERON and ZONNON has left it unchanged, thought they are better than Pascal. 

The whole system is designed for ease of use. e.g. assignment is := but = is quietly converted to :=, cosmetic words like DO are inserted automatically to improve readability. Key words are automatically forced into upper case, others into lower case. This means that if you can touch type you can largely forget the shift key or CapLock keys. This of course is a function of the editor, but it shows the &#039;ease of use&#039; approach.

COMAL does not have a lot of intrinsic data types, integer, real, string and boolean, although the latter are hardly noticed. Languages which do have a lot of types need GOOD type conversion functions which should check for overflow/underflow. Some don&#039;t. Because the &#039;sizes&#039; of the two numeric types can be made compatible intrinsic type conversion is not a great problem.

COMAL87 includes a TRAP.. HANDLER.. ENDTRAP structure for errors. Much nicer than BASIC.

I could go on! There are few books on programming in COMAL. I just managed to get hold of Atherton&#039;s &#039;Structured Programming with COMAL&#039; today via Amazon. It does not have a grammer.

You could look at OpenComal on Jos Visser&#039;s. There is a grammar in the documentation see &#039;Guide&#039;

He also provides the Source Code for his OpenComal system(s). I have tried the Win32 OpenComal system and it works a treat. Nostalgic too with its line editor!</description>
		<content:encoded><![CDATA[<p>I used COMAL to write my first &#8217;serious&#8217; program in 1986/7. It allowed me to display the way that radio tagged animals used their home range. It was complex but maintainable because of the high readability of COMAL. I used this experience to write much larger programs for Acorn RISC machines, but BBC BASIC is much less readable. I also used this experience when I learned Pascal (Delphi) but COMAL has the better structure. I call it &#8216;full closure. i.e. a COMAL uses FOR &#8230; ENDFOR; Pascal uses FOR but what follows must be on one line or bracketed with BEGIN&#8230; END. Wirth did not improve upon this completely in MODULA 2 or OBERON and ZONNON has left it unchanged, thought they are better than Pascal. </p>
<p>The whole system is designed for ease of use. e.g. assignment is := but = is quietly converted to :=, cosmetic words like DO are inserted automatically to improve readability. Key words are automatically forced into upper case, others into lower case. This means that if you can touch type you can largely forget the shift key or CapLock keys. This of course is a function of the editor, but it shows the &#8216;ease of use&#8217; approach.</p>
<p>COMAL does not have a lot of intrinsic data types, integer, real, string and boolean, although the latter are hardly noticed. Languages which do have a lot of types need GOOD type conversion functions which should check for overflow/underflow. Some don&#8217;t. Because the &#8217;sizes&#8217; of the two numeric types can be made compatible intrinsic type conversion is not a great problem.</p>
<p>COMAL87 includes a TRAP.. HANDLER.. ENDTRAP structure for errors. Much nicer than BASIC.</p>
<p>I could go on! There are few books on programming in COMAL. I just managed to get hold of Atherton&#8217;s &#8216;Structured Programming with COMAL&#8217; today via Amazon. It does not have a grammer.</p>
<p>You could look at OpenComal on Jos Visser&#8217;s. There is a grammar in the documentation see &#8216;Guide&#8217;</p>
<p>He also provides the Source Code for his OpenComal system(s). I have tried the Win32 OpenComal system and it works a treat. Nostalgic too with its line editor!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
