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!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Writing a scanner and parser in Ada Date: Mon, 25 Dec 2017 18:08:36 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <2d87298a-4d1f-446a-9d46-d4f03879246b@googlegroups.com> <285de3c1-6c16-47b3-83b7-ec3419c8d324@googlegroups.com> NNTP-Posting-Host: TliDXSPe+gBSGCqP3SEJ2Q.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:52.0) Gecko/20100101 Thunderbird/52.5.2 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: reader02.eternal-september.org comp.lang.ada:49638 Date: 2017-12-25T18:08:36+01:00 List-Id: On 2017-12-25 17:35, Yves Cloutier wrote: > Yes my Perl version does all that in 1 pass, but one of the things I > want to do is have it generate for different targets. Groff was my > initial one. I wan't creating any kind of AST but I think I'll want to > do that in my rewrite to make things simpler and allow for generating > for other targets like maybe Latex, or epub etc... You don't need AST for that. Simply define code generator interface (tagged) with abstract operations generating pieces of code. For each target have a derived type implementing these operations. Pass a class-wide Target object as a parameter to the parser. If the actual is of Groff_Target the result is groff etc. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de