🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5109

Re: Wat doet volgende Makefile? (reguliere expressies)

#5109
From: Gunter Schelfhout
Date: Sat, 31 May 2003 14:29
71 lines
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-mail
References: <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