From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Ada grammar rules for names too permissive? Date: Tue, 1 Jan 2019 09:44:14 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <30ba8954-a19e-4c95-b350-798b0276db41@googlegroups.com> NNTP-Posting-Host: i065DRYuysvTI4qVnaNkyg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US X-Mozilla-News-Host: news://news.aioe.org Xref: reader01.eternal-september.org comp.lang.ada:55148 Date: 2019-01-01T09:44:14+01:00 List-Id: On 2018-12-31 22:45, Randy Brukardt wrote: > Ada semantic rules use the syntax rules and vice versa. In this case, one > does not want to repeat the various rules for interpreting an expanded name > (which are part of selected_component). > > In this particular case, the resolution rule for subtype_mark eliminates any > nonsense cases. > > There's also two practical considerations: one is that with typical grammar > generators, you usually have to allow more syntax than you want, as > differentiating between options requires essentially unlimited lookahead. > (Most grammar generators use a single token lookahead.) In this case, you > would have a lot of trouble telling between a type conversion and an indexed > component, if the prefix syntax was different for each. > > Secondly, error detection for generated grammars tends to be less > understandable than hand written error handling. (My understanding is that > this is a major reason why GNAT uses a hand-written parser.) So allowing too > much syntactically allows providing better error messages. > > For instance, one could easily require "others" to stand alone with your > grammar. However, if you do that, the error message ends up being something > like "unexpected |", which is not very helpful. This discussion repeats each year! (:-() Maybe it is worth to write somewhere in c.l.a: attention! Ada needs no grammar generators! Never push semantic rules into syntax. The grammar as written is never the one actually used for whatever purpose other than explanation or, maybe, validation. An extreme case illustrating why, is source code coloring, but applies to compilers just same. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de