pygen

Code-Stücke können hier veröffentlicht werden.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

ich denke der code muesste selbsterkalerend sein
(nur sehr grob getestet!)


gruesse
costi

Code: Alles auswählen

class Pygen:
    def __init__(self, bound = 5 * ' '):
        self.bound = bound
        self.level = 0

    def _begin(self):
        self.level += 1

    #used for if, while, for and else
    def _space2(self):
        self.level += 1
        return (self.level - 1) * self.bound

    def _space1(self):
        return self.level * self.bound


    def Set(self, var1, var2):
        return self._space1() + ', '.join(var1) + " = " + ', '.join(var2)

    def Call(self, function, args):
        return self._space1() + ".".join(function) + " (" + ", ".join(args) + ")"


    def If(self, condition):
        return self._space2() + "if " + condition + ":"

    def End(self):
        self.level -= 1

    def For(self, var, condition):
        return self._space2() + "for " + var + " " + condition + ":"

    def While(self, condition):
        return self._space2() + "while " + condition + ":"

    def Def(self, def_name, args):
        return self._space2() + "def " + def_name + " (" + ", ".join(args) + "):"

    def ClassDef(self, def_name, args):
        return self.iDef(def_name, ("self") + args)

    def Else(self):
        retval = self._space2() + "else:"
        self.level += 1
        return retval 

Zuletzt geändert von Costi am Samstag 17. Februar 2007, 12:43, insgesamt 6-mal geändert.
cp != mv
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Costi hat geschrieben:ich denke der code muesste selbsterkalerend sein
Nein, wofür sollte sowas gut sein?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

das sieht aus als ob du Schleifenfunktionen ueberladen willst... aber warum o,O
Ich denke ganz so selbsterklaerend ist es dann doch nicht :(
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

Ich denke ganz so selbsterklaerend ist es dann doch nicht
es ist ein python code generator in python ( :

Code: Alles auswählen

>>> from pyGen import Pygen
>>> p = Pygen()
>>> p.Def("mal", ("x", "y"))
'def mal (x, y):'
>>> p.Call(("return",), ("x * y",))
'     return (x * y)'
>>> p.End()
>>> p.Set(("x",), (p.Call(("mal",), ("7", "5")),))
'x = mal (7, 5)'
>>> p.Call(("print",), ("x",))
'print (x)'
wofür sollte sowas gut sein?
@Leonidas: pls naechstes mal konstruktiv und begruendet kritisieren
Zuletzt geändert von Costi am Samstag 17. Februar 2007, 12:39, insgesamt 1-mal geändert.
cp != mv
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Costi hat geschrieben:
wofür sollte sowas gut sein?
@Leonidas: pls naechstes mal konstruktiv und begruendet kritisieren
ehm... ich hab da nix kritisches entdeckt... nur eine direkte frage ;)
aber egal... ich werd mir einfach mal genauer anschauen, was du da geschrieben hast, denn es ist wirklich nicht ohne weiteres aus dem code erkenntlich, und die zeit sich zwei stunden damit zu beschaeftigen, nur weil der author der meinung waere, es nicht erklaeren zu muessen, hat wohl kaum jemand (ich jedenfalls nicht).
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Costi hat geschrieben:
wofür sollte sowas gut sein?
@Leonidas: pls naechstes mal konstruktiv und begruendet kritisieren
Der Kommentar war sowohl konstruktiv als auch begründet. Ich führe mal aus:
  1. du hast einfach irgendeinen schwer lesbaren Code in das Forum geschmissen mit der Begründung dass er selbsterklärend ist. Ist er aber nicht.
  2. Wofür braucht man einen Codegenarator in Python? Es gibt Metaklassen, Dekoratoren etc. schon in Python eingebaut also wozu soll das gut sein?
Du siehst, sowohl konstruktive als auch begründete Kritik.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ich kapiere auch nicht, wozu das sein soll. Und "selbsterklärend" ist, wenn da Kommentare drin stehen. Die sollen nämlich nicht die Beschreibung des Codes doppeln, sondern den Sinn und Zweck davon erklären.

Übrigens kann ich dir wärmstens ans Herz legen, mal die %-Formatierung (vgl. printf() aus C) zu verinnerlichen und anzuwenden.
BlackJack

lunar hat geschrieben:Die GUI-Dateien haben den echten Vorteil das sie unabhängig von der Programmiersprache sind.
Mmmh, dem kann ich so nicht zustimmen ...
  • Um Glade GUI Dateien zu verwenden, benötigt man libglade Bindings für die gewählte Sprache.
  • Um QT UI Dateien zu verwenden, benötigt man einen UI Compiler für die gewählte Sprache.
[/quote]

Inwiefern macht das jetzt die Datei mit der GUI-Beschreibung abhängig von der Programmiersprache? Wenn mir der Designer Code für Python ausspuckt, kann ich den nicht für ein C Programm verwenden. Eine Datei mit der GUI-Beschreibung ist dagegen unabhängig von der Programmiersprache. Ich kann einen Prototyp in Sprache X entwerfen und die GUI-Beschreibung dann für die spätere Implementierung in Sprache Y wiederverwenden. Da sind Daten und Code strikter voneinander getrennt. Ist im Grunde das gleiche wie die wünschenswerte Trennung von Darstellung und Logik bei Webframeworks.

Edit (Leonidas): Rest der Diskussion in "Vorteile der Codegeneratoren, aber auch deren Nachteile" abgetrennt.
Antworten