AML Markup Library

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Hallo,

ich arbeite schon seit einiger Zeit an einem kleinen Projekt. Es handelt sich dabei um einen Parser für eine recht simple Auszeichnungssprache, welche sich von der Syntax her an LISP orientiert. Zu finden ist das Projekt unter http://code.google.com/p/aml/.

Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.

mfg. OverNord
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Nette Idee :-)

Für ne Lib ein bisserl zu wenig Kommentare. Außerdem täte ein Code-Beispiel gang gut.

Aber eine interssante Idee!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code-Beispiele sind im Wiki zu finden.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Aber nicht von der Benutzung in Python, sondern nur AML-Snippets?!? Oder hab ich da was übersehen?
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

im wiki sind nur ein paar aml-snippets zu finden, ich werde mal ein paar python-snippets reinstellen.

hier mal ein kleines beispiel(ist mittlerweile auch im wiki zu finden, allerdings ohne die kommentare):

Code: Alles auswählen

import aml
src = '''(lists
    (list name="test"
        #A comment.
        (item name="one" value="Hello world!")
        (item name="two" value="666")))'''
doc = aml.parse_string(src) # parst ein aml-dokument aus einem string
for node in doc.first_child: # iteriert über den ersten kindknoten von doc
    print node['name'], node['value'] #gibt die werte der attribute name und value des knotens node aus
item = Node('item') # erstellt einen neuen knoten item
# attribute eines knotens verhalten sich ähnlich wie ein dictionary
item['name'] = 'three'
item['value'] = 'I am only a test!'

doc.first_child.add(item)  # hängt den knoten item an den ersten kindknoten von doc
doc.write(open('sample.aml', 'w')) #schreibt doc in eine datei
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

OverNord hat geschrieben:Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.
Ich muss sagen, ich habe mit deinem Avatar-Bild ein Problem. Ich finde es geschmacklos. Doch zum Code: Mein Bauch sagt mir, das geht auch kürzer. Ich weiß nicht, ob http://gist.github.com/68143 deine komplette Syntax abdeckt, aber das sind unter 50 Zeilen. Bei dir sind's etwa 300 Zeilen. Vielleicht hilft dir ja mein Ansatz als Inspirationsquelle.

Stefan

Update: habe noch Support für Kommentare hinzugefügt - gist ist Klasse.
Zuletzt geändert von sma am Sonntag 22. Februar 2009, 11:02, insgesamt 1-mal geändert.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

sma hat geschrieben:
OverNord hat geschrieben:Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.
Ich muss sagen, ich habe mit deinem Avatar-Bild ein Problem. Ich finde es geschmacklos.
Dann nehm ich es mal raus.
Doch zum Code: Mein Bauch sagt mir, das geht auch kürzer. Ich weiß nicht, ob http://gist.github.com/68143 deine komplette Syntax abdeckt (ich habe keine Kommentare mit "#"), aber das sind unter 50 Zeilen. Bei dir sind's etwa 300 Zeilen. Vielleicht hilft dir ja mein Ansatz als Inspirationsquelle.
Ich werds mir auf jeden fall ansehen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wenns um die Syntax geht hätte ich statt ``name="value"`` lieber ``name :value`` oder ``(name value)`` gehabt. So erinnerts mich zu sehr an XML ;) Die Aufteilung bei XML in Attribute und Tags finde ich eher artifiziell, auch wenn ichs verstehen kann, da X-Expressions etwas geschwätziger sind als S-Expressions. Sind im groben aber so ziemlich das gleiche, siehe SXML und diesen, eigentlich ziemlich gelungenen Artikel.

OverNord, was ich dich fragen wollte: zu was ist AML gut? Wofür nutzt du es? Oder ist es nur ein Spielzeugprojekt?

Hmm, ob man mit XSLT halbwegs schmerzlos programmieren kann? Dann wäre es eine kuriose Neuerfindung der Lisp-Syntax nur in umständlicher :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Leonidas hat geschrieben:OverNord, was ich dich fragen wollte: zu was ist AML gut? Wofür nutzt du es? Oder ist es nur ein Spielzeugprojekt?
Ich verwende es momentan für ein paar Konfigurationsdateien. Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Leonidas hat geschrieben:Wenns um die Syntax geht hätte ich statt ``name="value"`` lieber ``name :value`` oder ``(name value)`` gehabt.
Mit ``(name value)`` hätte ich auch kein Problem, würde dann ungefähr so aussehen:

Code: Alles auswählen

(lists
    (list 
        (name "test")
        (item 
            (name "one")
            (value "Hello world!"))
        (item
            (name "two") 
            (value "42"))))
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

OverNord hat geschrieben:Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Der nachteil ist halt, dass man die ganzen ausgereiften Tools die es für XML gibt (insbeondere schnelle Parser und Validierung) nicht nutzen kann. Aber ja, AML ist etwas angenehmer anzusehen, besonders die S-Expression-Variante :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Leonidas hat geschrieben:
OverNord hat geschrieben:Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Der nachteil ist halt, dass man die ganzen ausgereiften Tools die es für XML gibt (insbeondere schnelle Parser und Validierung) nicht nutzen kann. Aber ja, AML ist etwas angenehmer anzusehen, besonders die S-Expression-Variante :)
Ich habe den Parser von sma umgeschrieben, so das er die S-Expression-Variante parsen kann(an dieser Stelle noch einmal einen Dank an sma). Den Rest habe ich nur leicht geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

OverNord hat geschrieben: Ich habe den Parser von sma umgeschrieben, so das er die S-Expression-Variante parsen kann(an dieser Stelle noch einmal einen Dank an sma). Den Rest habe ich nur leicht geändert.
Du musst dann noch die Doku auf der Seite ändern :-)
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Hyperion hat geschrieben:Du musst dann noch die Doku auf der Seite ändern :-)
Danke für den Hinweis, ich werde es dann mal ändern.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Nach langer Zeit melde ich mich nun wieder hier.

Natürlich habe ich in der Zwischenzeit an AML gearbeitet. Unter anderem habe ich angefangen einen Validator und eine Implementierung einer Untermenge von XPath zu schreiben. Es gibt jetzt auch Versionen für C# und Ruby. Auch ist AML mittlerweile unter Python 3.x lauffähig.

Des Weiteren ist das Projekt umgezogen. Es ist jetzt unter http://bitbucket.org/overnord/aml/ zu finden. Grund für den Umzug war eine gewisse Abneigung gegenüber Subversion, welches bei Google Code zum Einsatz kommt.

mfg. Nord
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Klingt doch gut :-)

Ich vermisse aber irgend wie die Beispiele bzw. Beschreibungen der Sprache auf der Page?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

OverNord hat geschrieben:Des Weiteren ist das Projekt umgezogen. Es ist jetzt unter http://bitbucket.org/overnord/aml/ zu finden. Grund für den Umzug war eine gewisse Abneigung gegenüber Subversion, welches bei Google Code zum Einsatz kommt.
Na, dann könntest du ja nun wieder zurückziehen, denn Google bietet doch inzwischen auch Mercurial-Support ;)

Stefan
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

sma hat geschrieben: Na, dann könntest du ja nun wieder zurückziehen, denn Google bietet doch inzwischen auch Mercurial-Support ;)
Ich war allgemein nicht sonderlich zufrieden mit Google Code.

@Hyperion: Die Beschreibung und die Beispiele werde ich so bald wie möglich wieder zugänglich machen.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

So, ich habe mal wieder ein bisschen gearbeitet. Im AML-Wiki sind ein paar Seiten zu finden, unter anderem eine Installationsanleitung(falls jemand eine brauchen sollte), an einem kleinen Tutorial arbeite ich momentan. Alle Interessierten sollten sich auf jeden Fall mal das Beispielverzeichnis ansehen. Dort werde ich bei Gelegenheit noch ein paar Beispiele hinzufügen. Und ich habe angefangen AML mit meinen bescheidenen C-Kenntnissen auch in dieser Sprache zu implementieren, vielleicht wird es ja was.

mfg. Björn
Antworten