Path: news.net.uni-c.dk!not-for-mail From: Jacob Eskildsen Newsgroups: daimi.beta,daimi.dpass Subject: Re: Cycles imellem Units Date: Sat, 19 Oct 2002 17:14:42 +0200 Organization: UNI-C Lines: 120 Message-ID: References: <3DA960C9.544587ED@cs.au.dk> <3DA98B60.FC693674@cs.au.dk> NNTP-Posting-Host: skids.cs.au.dk Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.net.uni-c.dk 1035040485 10578 130.225.18.104 (19 Oct 2002 15:14:45 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Sat, 19 Oct 2002 15:14:45 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020827 X-Accept-Language: en-us, en Xref: news.net.uni-c.dk daimi.beta:10581 daimi.dpass:902 Janus Norgaard Tondering wrote: >>Er der nogen måde at undgå, at compileren brokker sig, eller skal man >>omskrive sit program? > > En metode, som giver lidt uorganiseret kode, er at have al koden i en > fil. Du kan ogsaa proeve at se, om du kan hive de referencer ud i en > implementationsfil og paa den maade undgaa cyklerne. > > Et andet (lidt grimt) hack er fx: > > fil1: (# > equals: (# > enterpattern: @<> > enter enterpattern > do > ... > #); > #) > > hvor vi i implementationsfilen har: > > --- enterpattern: descriptor --- > INCLUDE 'fil2' > (# > fil: @fil2; > enter fil > #) > > > og saa kan du i din do-part i equals bruge enterpattern.fil. Her kan man > bare ikke udelukkende ved hjaelp af interfacet se hvilket input equals > tager. > > Der er sikkert ogsaa andre metoer (som sikkert ogsaa er bedre) ... men > ovenstaaende skulle i hvert fald virke. > > Janus Hej Jeg har nu provet at lave de forslag til det grimme hack, men kunne ikke faa det til at virke. Dernaest, har jeg proevet at lave et interface/implementations del, som burde kunne faa det til at virke. Det kan jeg dog heller ikke. ex: Fil1: Klasse1: ORIGIN '~beta/basiclib/betaenv'; INCLUDE '~beta/containers/list'; BODY 'Klasse1Body'; --- lib:Attributes --- Fil1: (# Private: @ <>; enfunktion: (# #); enandenfunktion (# #); #) Fil1Body: ORIGIN 'Klasse1'; INCLUDE '~beta/basiclib/betaenv'; --- private:ObjectDescriptor --- INCLUDE 'Klasse2' 'Klasse3' (# navn1: ^Klasse2; navn2: ^Klasse3; navn3: ^Text; #) fejlen den kommer med er noget lig flg: computer:~...program% beta Klasse1.bet Mjolner BETA Compiler version 5.5 (860) for Linux (Intel 386/486/586/Pentium) (elf) Target machine type linux Building dependency graph for: 'Klasse1' ... Parsing: 'Klasse1Body' Parse errors # 3 # 4 # 5 --- private:ObjectDescriptor --- # 6 INCLUDE 'Klasse2' # 7 'Klasse3' # 8 (# # **** ^ # Expected symbols: .% [ (# . File "/users/eske/courses/program/Klasse1Body.bet"; Line 8 Parse errors in fragment : /users/eske/courses/program/Klasse1Body Der er saa ogsaa selvsagt en reference i Klasse2 til Klasse1 (ellers ville det jo ikke vaere noedvendigt, at lave disse fiksfakserier). Det kan ogsaa vaere noedvendigt at der er flere filer i cyclen, ex: class1 refs class2 refs class3 refs class4 refs class1 Hvad er det lige jeg har gjort galt??? Jeg vil meget gerne have helt konkrete eksempler, hvor ALT skaeres ud i pap. Desuden ville det vaere rart hvis der var nogen der forklarede hvorfor betacompileren endnu ikke selv kan gennemloebe en graf for at finde cykler???, saa man ikke havde brug for at lave disse interfaces (De eksempler der findes i bogen(baade den trykte, og den der findes paa URL'en: "http://www.cs.au.dk/~olm/PUB/betabook.pdf" synes ikke at give en fyldestgoerende eksempel paa interfaces. Paa forhaand tak. mvh Jacob / eske