<div dir="ltr">Coco does calculate first and follow sets.  I think there is a distinction that they are static and not dynamic, but I don't have the experience to discuss it, it is just something I saw in the documentation a decade ago.<div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 18, 2016 at 3:45 PM, John R. Strohm <span dir="ltr"><<a href="mailto:strohm@airmail.net" target="_blank">strohm@airmail.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As I recall, ANTLR generates parsers for LL(1) languages.<br>
<br>
yacc generates parsers for LALR(1) languages.<br>
<br>
COCO/R generates parsers for LL(k) languages.  There is an old version for Oberon.<br>
<br>
Wirth strongly prefers handmade recursive descent parsers, in part because languages that can be parsed easily by a handmade recursive descent parser tend to be quite a bit simpler and cleaner than languages that "requires" a machine-built LR(1) (or higher: JOVIAL was LR(2), if I remember correctly) parser.  PASCAL, Modula-2, and Oberon certainly meet that criteria when compared to C and C++ and their ilk.<br>
<br>
--- <a href="mailto:sinu.nayak2001@gmail.com">sinu.nayak2001@gmail.com</a> wrote:<br>
<br>
From: Srinivas Nayak <<a href="mailto:sinu.nayak2001@gmail.com">sinu.nayak2001@gmail.com</a>><br>
To: ETH Oberon and related systems <<a href="mailto:oberon@lists.inf.ethz.ch">oberon@lists.inf.ethz.ch</a>><br>
Subject: Re: [Oberon] How2 calculate First and Follow and check if LL(1)<br>
Date: Mon, 18 Jul 2016 22:38:36 +0530<br>
<div class="HOEnZb"><div class="h5"><br>
Dear Jorg and John,<br>
<br>
You both are correct.<br>
<br>
At least I got to know that we have EBNF parsing program.<br>
But we don't have a program to calculate First and Follow.<br>
Otherwise, you already would have mentioned it...<br>
<br>
Nicely without mentioning the word LL(1), professor Wirth explained<br>
what should be the characteristics of a language,<br>
so that it can easily be parsed using recursive descent parsing.<br>
He gave 3-4 rules of thumb and manually calculated First and Follow.<br>
<br>
No doubt, with Oberon like small/elegant language,<br>
one doesn't need to use machine to calculate First and Follow<br>
and to check LL(1) mechanically. It can be done manually.<br>
Mechanically calculating First and Follow is mostly needed for<br>
table driven parsers. For us not.<br>
<br>
I could see, because of unwanted complexity, Wirth intentionally<br>
refrained from detailing those and using the mechanical means,<br>
which is never needed for language implementer, but rather<br>
needed for the language designer, when language is LL(1).<br>
<br>
But I was little curious if we already have any<br>
mechanized program; so that, in case I want to play<br>
creating dialects of Oberon, I will have easy means to check my dialect.<br>
<br>
Another angle to my query was, if these algorithms can easily be<br>
inter woven with our EBNF parser... Those books present the algorithm<br>
in purest form. But I wanted to know, if using attributed grammar<br>
and our EBNF parser, it is easy to get the job done... If yes,<br>
how should we start about it.<br>
<br>
And yes, from another angle, I wanted to know, if someone has ever tried to do so...<br>
<br>
<br>
With thanks and best regards,<br>
<br>
Yours sincerely,<br>
Srinivas Nayak<br>
<br>
Home: <a href="http://www.mathmeth.com/sn/" rel="noreferrer" target="_blank">http://www.mathmeth.com/sn/</a><br>
Blog: <a href="http://srinivas-nayak.blogspot.in/" rel="noreferrer" target="_blank">http://srinivas-nayak.blogspot.in/</a><br>
<br>
On 07/18/2016 06:01 PM, John R. Strohm wrote:<br>
> Calculation of First and Follow is covered in the Green Dragon Book.  I'd expect it to be covered in the later books as well.<br>
><br>
> And, as always, Google is your FRIEND.  "first follow sets"<br>
><br>
> -----Original Message----- From: Srinivas Nayak<br>
> Sent: Sunday, July 17, 2016 8:52 PM<br>
> To: ETH Oberon and related systems<br>
> Subject: [Oberon] How2 calculate First and Follow and check if LL(1)<br>
><br>
> Dear All,<br>
><br>
> Lets say I want to modify Oberon language.<br>
> I would then like to check if my modified language is LL(1).<br>
> Towards that end, I would also like to calculate First and<br>
> Follow set of symbols for each of my non-terminals.<br>
><br>
> I see a nice program EBNF.Mod<br>
> How can I modify this program to<br>
> 1. calculate First and Follow set of symbols for each of my non-terminals.<br>
> 2. check if my language is LL(1)<br>
><br>
><br>
><br>
> With thanks and best regards,<br>
><br>
> Yours sincerely,<br>
> Srinivas Nayak<br>
><br>
> Home: <a href="http://www.mathmeth.com/sn/" rel="noreferrer" target="_blank">http://www.mathmeth.com/sn/</a><br>
> Blog: <a href="http://srinivas-nayak.blogspot.in/" rel="noreferrer" target="_blank">http://srinivas-nayak.blogspot.in/</a><br>
> --<br>
> <a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
><br>
> ---<br>
> This email has been checked for viruses by Avast antivirus software.<br>
> <a href="https://www.avast.com/antivirus" rel="noreferrer" target="_blank">https://www.avast.com/antivirus</a><br>
><br>
> --<br>
> <a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
><br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><font face="'times new roman', serif">(email is my preferred communication media)</font><div><font face="'times new roman', serif">Aubrey McIntosh, Ph.D.<br>1502 Devon Circle<br>Austin TX 78723-1814</font><div><div><span style="line-height:20px;background-color:rgb(255,255,255)"><font face="'times new roman', serif">(512)-348-7401</font></span></div></div><div><div><br></div></div></div></div></div>
</div>