Article View: be.comp.programming
Article #5109Re: Wat doet volgende Makefile? (reguliere expressies)
From: Gunter Schelfhout
Date: Sat, 31 May 2003 14:29
Date: Sat, 31 May 2003 14:29
71 lines
2866 bytes
2866 bytes
Nicolas Barbier wrote: >> ik >> vroeg me alleen af wat het eigenlijk juist doet: >> %.d: %.cxx >> set -e; $(CC) -MM $(CFLAGS) $< | sed 's/\($*\)\.o[ :]*/\1.o $@ : >> /g' > $@; >> [ -s $@ ] || rm -f $@ >> [knip] > > De regular expression kan als volgt uitgelegd worden (fouten mijnentwege > voorbehouden :-): > > sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; > > s: verander hetgeen gematcht wordt door de volgende RE door de > vervangingsexpressie. > > ER: "\($*\)\.o[ :]*" > > Uitleg: > $: begin van de regel. $ matcht het 'einde' van de regel. ;-) > \(: begin markering. ack > *: match nul of meerdere keren het vorige, ik denk dat je dit verkeerd > hebt overgetypt? Het lijkt me dat dit .* moet zijn (matcht alles). Vermits het hier een shell-pipe betreft, is die $* de desbetreffende shell-variabele. (net zoals $@) > \): einde markering. ack > \.o: letterlijke ".o", zonder aanhalingstekens. ack > [ :]*: een willekeurig aantal keren een spatie of een ":". ack > vervangingsexpressie: "\1.o $@ : " > > Uitleg: > \1: zet hier het deel dat door de eerste markering gematcht is. > .o : ".o" gevolgd door een spatie. > $@: de rule-target (de .d file). > : : " : " :-). > > De g duidt op meerdere keren vervangen als het meerdere keren voorkomt (ik > snap niet echt waarvoor dit nodig is). Omdat $* meerdere argumenten kan bevatten. > Maw: zoek alles voor de eerste ".o", en vervang het, inclusief de ".o" met > eventuele spaties en dubbelepunten erachter door de .o file en de .d file > met een dubbele punt achter. [knip] -- Blood, sweat & tears
Technical Details
Message-ID:
<Z_2Ca.30325$1u5.2115@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!eusc.inter.net!newsfeed01.sul.t-online.de!t-online.de!newsfeed.vmunix.org!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<bb7qnc$38c$1@reader08.wxs.nl> <3ed77a1c$0$6531$afc38c87@sisyphus.news.be.easynet.net>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,e99e0c65c5ba9bfb X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-05-31 07:29:14 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!eusc.inter.net!newsfeed01.sul.t-online.de!t-online.de!newsfeed.vmunix.org!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: Gunter Schelfhout <nospam@please.com> Subject: Re: Wat doet volgende Makefile? (reguliere expressies) Newsgroups: be.comp.programming References: <bb7qnc$38c$1@reader08.wxs.nl> <3ed77a1c$0$6531$afc38c87@sisyphus.news.be.easynet.net> Lines: 71 User-Agent: KNode/0.7.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit Message-ID: <Z_2Ca.30325$1u5.2115@afrodite.telenet-ops.be> Date: Sat, 31 May 2003 14:29:13 GMT NNTP-Posting-Host: 213.118.153.61 X-Complaints-To: abuse@telenet.be X-Trace: afrodite.telenet-ops.be 1054391353 213.118.153.61 (Sat, 31 May 2003 16:29:13 MET DST) NNTP-Posting-Date: Sat, 31 May 2003 16:29:13 MET DST Organization: Telenet Internet