Schrift
[thread]7035[/thread]

Prefix-Terme berechnen (Seite 2)



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
kabel
 2005-06-07 10:00
#55340 #55340
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
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
renee
 2005-06-07 11:02
#55341 #55341
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@kabel: gibt es richtige Parser-/Scanner-Generatoren für Perl??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-06-07 11:35
#55342 #55342
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe gerade zwei Mögliche Kandidaten gefunden:
CPAN:Parse::Yapp und
CPAN:yagg
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2005-06-07 13:08
#55343 #55343
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich stelle mal wieder fest, das ein Informatik-Studium vieleicht doch hilfreich gewesen wäre. Die nächsten zwei Jahre wird das wohl nix, aber vieleicht probiere ich es dann mal als Abend-Studium.
Programmieren kann man zwar auch relativ gut so erlernen, aber es fehlt einem immer mal wieder an Hintergrundwissen.
renee
 2005-06-07 13:12
#55344 #55344
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kannst ja ein berufsbegleitendes Studium machen... Das ist eigentlich ne feine Sache (außer dass man samstags vormittags in die Vorlesung muss)!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2005-06-07 13:26
#55345 #55345
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=renee,07.06.2005, 11:12]Kannst ja ein berufsbegleitendes Studium machen... Das ist eigentlich ne feine Sache (außer dass man samstags vormittags in die Vorlesung muss)![/quote]
Ja, das hatte ich in Erwägung gezogen. Nur die nächsten zwei Jahre bin ich wahrscheinlich genug ausgelastet. Mein neuer Job ist nochmal mit Ausbildung für diese Zeit verbunden, so das mir solange wohl nicht langweilig wird.
pKai
 2005-06-07 14:54
#55346 #55346
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
@renee, betreffs Unterschied YAPP, RecDescent.

Beides sind Parser-Generatoren.

YAPP ist quasi eine Perl-Implementierung des (bekannten?) YACC.
Ist quasi ein standalone-Programm, was aus einer entsprechenden Eingabe ein Perl-Modul erstellt, das man dann in seinem Skript used. Der erzeugte Parser ist ein tabellengesteuerter LALR-Parser aber der Anwender muss einen eigenen Lexer (Tokenizer) zur Verfügung stellen. Zwar gibt es CPAN:ParseLex (analog zu YACC) aber bei den Möglichkeiten, die Perl mit Regexen bieten lohnt das m. E. nicht, außer man hat schon fertige YACC und LEX-Dateien vor sich.

RecDescent generiert ebenfalls einen Parser, aber dynamisch im Konstruktor, dabei werden die Grammatik-Regeln direkt in Funktionen (Methoden) umgesetzt. Der Lexer entfällt, da direkt Strings oder Regexp in die Produktionen geschrieben werden.

Aufgrund des Ansatzes ist ein YAPP-Parser in der Ausführung schneller als ein durch RecDescent erzeugter. RecDescent ist aber schneller in der Vorbereitung und für Prototypen und kleine Applikationen allemal brauchbar.

Der erwähnte yagg ist wohl kein Parsergenerator, sondern er erzeugt zu einer Grammatik aller daraus herleitbaren Strings bis zu einer vorgegebenen Länge, während ein Parser ja einen String nimmt und prüft, ob er durch eine gegebene Grammatik erzeugt werden kann und durch welchen Ableitungsbaum.
I sense a soul in search of answers.
renee
 2005-06-07 15:24
#55347 #55347
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da Yapp eine "quasi Implementierung" des YACC ist, ist es das, was ich wollte... Werde damit mal ein wenig rumspielen...
Danke für den Link zum Lex-Modul!

Mir sind YACC und (F)LEX durch das Studium bekannt, und da muss ich immer Perl "verteidigen"... Schön, wenn ich dann etwas YACC- und FLEX-ähnliches bieten kann *g*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
kabel
 2005-06-07 22:11
#55348 #55348
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[quote=pKai,07.06.2005, 12:54][...]LALR-Parser aber der Anwender muss einen eigenen Lexer (Tokenizer) zur Verfügung stellen.[/quote]
LR parser gibts bei mir in zwei wochen :) wie tief geht ihr rein?

[quote=pKai,07.06.2005, 12:54]Zwar gibt es CPAN:ParseLex (analog zu YACC) aber bei den Möglichkeiten, die Perl mit Regexen bieten lohnt das m. E. nicht, außer man hat schon fertige YACC und LEX-Dateien vor sich.[/quote]
eventuell willst du noch andere sprachen ausser perl?!
-- stefan
renee
 2005-06-08 01:23
#55349 #55349
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wir machen relativ viel Praxis zu den Themen Parser und Scanner, die Theorie musste mit rund 8 Doppelstunden vorlieb nehmen...

Wir generieren C- und Python-Scanner und Parser...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-06-05 01:10.