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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: OpenToken: Parsing Ada (subset)? Date: Tue, 16 Jun 2015 15:24:14 +0200 Organization: cbb software GmbH Message-ID: <1a08qrccls0bi$.16y7q3hosklae.dlg@40tude.net> References: <878uc3r2y6.fsf@adaheads.sparre-andersen.dk> <85twupvjxo.fsf@stephe-leake.org> <81ceb070-16fe-4578-a09a-eb11a2bbb664@googlegroups.com> <162zj7c2l0ykp$.1rxias18vby83.dlg@40tude.net> <856172bk80.fsf@stephe-leake.org> <1ljiyuuchbxvp.wrtbilkw3rdb.dlg@40tude.net> <85pp4vakmy.fsf@stephe-leake.org> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: enOx0b+nfqkc2k+TNpOejg.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:26343 Date: 2015-06-16T15:24:14+02:00 List-Id: On Tue, 16 Jun 2015 07:43:49 -0500, Stephen Leake wrote: > "Dmitry A. Kazakov" writes: > >> Yes, it is writing regular expression vs. writing Ada program. I prefer Ada >> program. > > I'm confused; you start by agreeing with my statement, but then say > something else. > > I said "implement a general regular expression engine", meaning the Ada > code that interprets regular expressions at run time. I hope you agree > that writing that is harder than writing an Ada scanner. > > To address your point; let's compare writing a regular expression with > writing Ada code to do the same thing. > > Here's the regular expression I use for Ada numeric literals: > > "\([0-9]+#\)?[-+0-9a-fA-F.]+\(#\)?" > > Given that you are at least a little familiar with regular expressions, > there's nothing hard about that. It is hard. > It does not enforce all the lexical rules for numbers; it allows > repeated, leading, and trailing underscores; it doesn't enforce pairs of > '#'. That is exactly the point. It does not parse literal right and you have to reparse the matched chunk of text once again. What was the gain? Why wouldn't do it right in single step? > It took a few minutes to write the regular expression, and I reused the > tests; no bugs found yet. > Obviously, if you are not familiar with regular expressions, they will > be harder to write. But a software engineer should be willing to learn > the appropriate language for the job at hand. That is not the point. I am familiar with C, but I am avoiding writing anything in C. Regular expressions is a far worse language than C and, additionally, incapable to parse Ada literals. Why bother with that mess? > I would guess that the average good programmer, starting with no > knowledge of either, can learn enough about regular expressions to write > the above faster than they can learn enough about writing scanners in > Ada to do that job well. The problem is that writing a correct pattern for anything more complex than trivial is hard even for people doing this on daily basis. For an average programmer it is patently impossible. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de