Thread Prefix-Terme berechnen
(19 answers)
Opened by Ronnie at 2005-06-05 01:10
ich erklär diese zeile, dann ist alles klar (fast) ;-)
Code (perl): (dl
)
LOOP: print eval ( rewrite_perl lisp( myread ) ), $/; goto LOOP; das soll die read-eval-print-loop nachbilden; geht natürlich nur mit interpretierten sprachen. sowas wie die python shell oder das eval.rb von ruby. myread liest eine zeile und initialisiert den parser. lisp ist die startproduktion (nemms einfach hin); das liefert eine arrayref zurück, quasi den "parsebaum". guck dir den mal an und vergleiche die grammatik dazu. rewrite_perl schreibt den mist in einen infix-term um, der vom perl eval ausgeführt werden kann. das ergebnis wird rausgeschrieben, und dann auf die nächste eingabe gewartet. der *** parser hat mich ewig zeit gekostet. aber wer heutzutage noch parser selber baut (und nicht gleichzeitig in einer syntaxanalysevorlesung hockt ;-) ), gehört erschlagen. recursive descent lässt sich AFAIR relativ leicht erklären, also wenn dus wissen willst, frag einfach. -- stefan
|