Received: from webgate.proteosys.de (mail.proteosys-ag.com [62.225.9.49]) by lucy.proteosys (8.11.0/8.9.3/SuSE Linux 8.9.3-0.1) with ESMTP id f0FJIi707176 for ; Mon, 15 Jan 2001 20:18:44 +0100 Received: by webgate.proteosys.de (8.11.0/8.11.0) with ESMTP id f0FJIt700765 . for ; Mon, 15 Jan 2001 20:19:04 +0100 Received: from mail.Uni-Mainz.DE (mailserver1.zdv.Uni-Mainz.DE [134.93.8.30]) by mailgate2.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f0FJIT008165 for ; Mon, 15 Jan 2001 20:18:29 +0100 (MET) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C07F27.F9EEC200" Received: from mailgate2.zdv.Uni-Mainz.DE (mailgate2.zdv.Uni-Mainz.DE [134.93.8.57]) by mail.Uni-Mainz.DE (8.9.3/8.9.3) with ESMTP id UAA14208 for ; Mon, 15 Jan 2001 20:18:28 +0100 (MET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from mail.listserv.gmd.de (mail.listserv.gmd.de [192.88.97.5]) by mailgate2.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f0FJIS008160 for ; Mon, 15 Jan 2001 20:18:28 +0100 (MET) Received: from mail.listserv.gmd.de (192.88.97.5) by mail.listserv.gmd.de (LSMTP for OpenVMS v1.1a) with SMTP id <7.C7EDDD6D@mail.listserv.gmd.de>; Mon, 15 Jan 2001 20:18:26 +0100 Received: from RELAY.URZ.UNI-HEIDELBERG.DE by RELAY.URZ.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8b) with spool id 481084 for LATEX-L@RELAY.URZ.UNI-HEIDELBERG.DE; Mon, 15 Jan 2001 20:18:24 +0100 Received: from ix.urz.uni-heidelberg.de (mail.urz.uni-heidelberg.de [129.206.119.234]) by relay.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id UAA00603 for ; Mon, 15 Jan 2001 20:18:23 +0100 (MET) Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by ix.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id UAA18684 for ; Mon, 15 Jan 2001 20:18:22 +0100 Received: from musse.tninet.se (musse.tninet.se [195.100.94.12]) by relay.uni-heidelberg.de (8.10.2+Sun/8.10.2) with SMTP id f0FJIM707838 for ; Mon, 15 Jan 2001 20:18:22 +0100 (MET) Received: (qmail 27777 invoked from network); 15 Jan 2001 20:18:21 +0100 Received: from garibaldi.tninet.se (HELO algonet.se) (195.100.94.103) by musse.tninet.se with SMTP; 15 Jan 2001 20:18:21 +0100 Received: from [195.100.226.143] (du173-226.ppp.su-anst.tninet.se [195.100.226.173]) by garibaldi.tninet.se (BLUETAIL Mail Robustifier 2.2.1) with ESMTP id 888165.586299.979garibaldi-s1 ; Mon, 15 Jan 2001 20:18:19 +0100 In-Reply-To: <200101061950.OAA03845@pluto.math.albany.edu> Return-Path: X-Sender: haberg@pop.matematik.su.se Content-class: urn:content-classes:message Subject: Re: GELLMU progress Date: Mon, 15 Jan 2001 11:20:28 +0100 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: From: "Hans Aberg" Sender: "Mailing list for the LaTeX3 project" To: "Multiple recipients of list LATEX-L" Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 3652 This is a multi-part message in MIME format. ------_=_NextPart_001_01C07F27.F9EEC200 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable At 14:50 -0500 1-01-06, William F. Hammond wrote: >Although I've written in C, I've never gotten into C++. Are there >good regular expression libraries for C++? I once wrote a regular expression -> NFA translator. If one wants to translate into a DFA, one problem is that some regular words produces exponential size DFA's. One way around this is to translate DFA = transitions dynamically, in which case both size and time can be made fast (space as NFA, time as DFA). I have never seen any such libraries, but they must exist, as there are programs like grep and the like, which uses regular expression and must = use some kind of FA (finite automata) for string identification. In your case, I think you want to attach rules to the parsing, so parser generateors seem to be better. In addition, you probably have a limited amount of programmer time at your disposal. So this speaks for relying = on existing parser generators. Once one knows what is needed, one can = choose other alternatives as a means of optimization. If one does not want to use C/C++, there is a parser generator in = Haskell http://haskell.org/, called "Happy" I think. And for Java, there is = ANTLR http://www.antlr.org/. Hans Aberg ------_=_NextPart_001_01C07F27.F9EEC200 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: GELLMU progress

At 14:50 -0500 1-01-06, William F. Hammond = wrote:
>Although I've written in C, I've never gotten = into C++.  Are there
>good regular expression libraries for C++?

I once wrote a regular expression -> NFA = translator. If one wants to
translate into a DFA, one problem is that some = regular words produces
exponential size DFA's. One way around this is to = translate DFA transitions
dynamically, in which case both size and time can be = made fast (space as
NFA, time as DFA).

I have never seen any such libraries, but they must = exist, as there are
programs like grep and the like, which uses regular = expression and must use
some kind of FA (finite automata) for string = identification.

In your case, I think you want to attach rules to the = parsing, so parser
generateors seem to be better. In addition, you = probably have a limited
amount of programmer time at your disposal. So this = speaks for relying on
existing parser generators. Once one knows what is = needed, one can choose
other alternatives as a means of optimization.

If one does not want to use C/C++, there is a parser = generator in Haskell
http://haskell.org/, called = "Happy" I think. And for Java, there is ANTLR
http://www.antlr.org/.

  Hans Aberg

------_=_NextPart_001_01C07F27.F9EEC200--