[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] Compiler design



On Mon, 28 Nov 2005 16:03:43 +0100
Robert wrote:

> Jeg ved ikke om dette er off topic, men here goes...
> Jeg står ofte med noget kode, som skal kunne alt muligt på én gang og 
> synes det kunne være godt at kunne specificere detaljerne på runtime med 
> et sprog, men jeg ved intet om parsere, sprog, compilere, fortolkere og 
> alt det der. Så jeg søger altså efter en bog, som forklarer det.

De fleste programmer, som har config-filer, har jo egentlig en slags
oversættelse, selv om det er på et meget primitivt plan. Derfor er det
udmærket at kende de grundlæggende begreber for hvordan oversættelse
virker - hvad man kan med det og hvad man ikke kan.

> Jeg ved at drage-bogen (*Compilers - Principles, Techniques and Tools*) 
> er det helt store, men er den stadig det ? Der må være sket noget siden 
> 1986.

Ja, selvfølgelig er der sket noget, men grundlæggende begreber som
terminal symbol og non-terminal symboler er nu meget rare at kende.

> Jeg tænkte på lex, yacc og bison, men er det ikke kun parser generering 

Jo, parser generering, hvor du så kan indskyde kodegenerator linier.

Det forudsætter, at du har "et andet sprog" at generere kode i. Hvis
dette "andet sprog" er assembler, så genereres derved indirekte den
endelige maskinkode. Det kræver viden om, hvordan man bruger en maskine.


> ? Hvad med kode generering eller fortolkning ?
> Er lidt lost.
> Hvor skal man begynde ?

Ærligt talt, keep it simple.

Hvis du kun lige skal bruge oversættelse af et symbol til en
value, så start med en simpel identifier scanner og symbol-tabel
og den slags.

Hvis du læser de første kapitler af "dragebogen", så er du
allerede langt. Jeg har prøvet at vise en simpel expression parser
i noget kode i linuxbog/c/bog men må indrømme, at jeg (så vidt jeg
husker) ikke fik beskrevet nogle af de grundlæggende begreber for
parsning: <eng> token, identifier, variable-type/data-type,
terminal symbol, non-terminal-symbol (som er et symbol, der
henviser til andre symboler). Selv om man skriver en parser på en
anden måde end med Yacc-tabeller (fx. som en rekursiv-descent
parser), så skal man jo vide, hvad det er for ting, parseren
støder ind i.

I princippet læser en oversætter et bogstav ad gangen og sætter
dem sammen til ord (det kan C++ gøre for en, og det kan en lex'er
også gøre). 

Så overtager parseren.

Ordene kan så enten være værdier (tal) eller keywords
(reserverede ord, flow-kontrol m.v.) eller variable (symboler, som
kan slås op i symboltabellen, eller som skal tilføjes til
symboltabellen).


Det var en hurtig lidt sjusket kommentar - håber det inspirerer
lidt eller hjælper til at komme videre.

-- 
donald_j_axel donax snabela get2net.dk -- http://d-axel.dk/


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-12-01, 02:01 CET [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *