Thread abgedrehtes problem mit switch: oder bin ich blind?
(71 answers)
Opened by deepblack at 2004-06-16 21:56
[quote=Dieter,07.07.2004, 16:50]Keinesfalls sri - der 'Parser' arbeitet den Code von oben nach unten ab und übergibt jeden BEGIN Block sofort an den 'Compiler' zur Ausführung - That's the way it works ;)
Aber wie ich schon sagte - Let's call it a day.[/quote] Also bitte, wem willst du hier was über Perl interna erzählen! :) Was tut der Parser denn? Genau, er übersetzt Perl Quelltext zu einem OP-Tree. Wie nennt man den OP-Tree noch? Genau, Bytecode. Manche bezeichnen den Parser (toke.c, perly.y, op.c) als Translator andere als Compiler, wieder andere trennen zwischen Lexer/Tokenizer und Parser, definitionssache da alles einfach zu verwoben ist. Aber vorallem möchte ich wissen von welchem Compiler du da redest an den der BEGIN block übergeben wird, das macht so wie du es schreibst einfach keinen sinn??? -spoiler------------------------------------------------------ Für die die es interessiert: Also, der Lexer splittet den code in kleine schnipsel ("my $x = 1;") übergibt diese an den Parser (byacc) der daraus einen OP-Tree erstellt. (Nebenbei Variablen initialisiert etc.). Bekommt der Parser (byacc) nun zufällig einen BEGIN Block zu fassen wird dieser in einem string eval erst vom Parser übersetzt , optimiert und dann vom Interpreter ausgeführt. Nun, fährt der Parser mit der Arbeit fort und übersetzt weiter fleissig. Ist er fertig wird der OP-Tree noch schnell optimiert und anschliessend vom Interpreter ausgeführt. -/spoiler------------------------------------------------------ Halt dich nicht so an den einzelnen Worten in deinem Camel Buch fest, liess lieber mal perldoc perlhack, das Pantherbuch und Perl Quelltexte und find raus wie es wirklich funktioniert! P.S.: Meinst du das wirklich ernst was du so postest oder findest du es nur toll wenn die Leute sich mit dir beschäftigen? Ich zweifle langsam... |