pygen

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

pygen

Beitragvon Costi » Freitag 16. Februar 2007, 23:38

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: pygen

Beitragvon Leonidas » Samstag 17. Februar 2007, 09:06

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 Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Samstag 17. Februar 2007, 11:00

das sieht aus als ob du Schleifenfunktionen ueberladen willst... aber warum o,O
Ich denke ganz so selbsterklaerend ist es dann doch nicht :(
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Samstag 17. Februar 2007, 12:25

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:

Beitragvon nkoehring » Samstag 17. Februar 2007, 12:34

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).
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 17. Februar 2007, 13:04

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 Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Samstag 17. Februar 2007, 19:58

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

Beitragvon BlackJack » Samstag 17. Februar 2007, 23:49

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder