Codega

231 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
231
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Codega

  1. 1. A codega kódgenerátor keretrendszer # Hercinger Viktor   
  2. 2. KódgenerálásÁltalánosabb megoldás problémákraSpecifikusabb bemeneti nyelv Kevesebb lehetőség hibára Kevésbé fárasztó Több idő marad a fun dolgokraEgyes esetekben bizonyított Protokol elemzés Nyelvi bindingek    
  3. 3. DSLDomain Specific LanguageNyelv szűk feladatkör megoldásáraRuby ♥ DSL cucumber, sinatra, etc.LISP ♥ DSLCodega AST reprezentáció megadására használja    
  4. 4. Miért kellett nekünk ilyen?Sok komplex, bináris protokolt elemzünk RDP X11 VNCNem szeretünk sokat gépelniSzeretünk tempósan haladni    
  5. 5. codegaKeretrendszer, nem megoldásEszközöket ad Minnél több, annál jobb :­)Saját build rendszer ...de opcionálisMako template­rendszer    
  6. 6. FelépítésKonfigurációBuilderGenerátorokEgyéb segédeszközökParancssori szkript    
  7. 7. Generátorokfrom codega.generator.declarative import *from codega import matchermeta = create_declarative_metaclass()class MyGenerator(Generator): __matcher__ = matcher.tag(root) def generate(self, source, context): # . . .main_generator = MainGenerator(meta)    
  8. 8. codega.alpAbstract Language ParserNyelveket definiálunk veleÉs AST struktúrákatEnnek a nyelve is DSL amit saját magával adunk megNyelvi értelmezőt generáljukply – Python Lex & Yacc    
  9. 9. DSL definiálásaignore SPACES s+;keyword if;keyword else;# . . .list Statements{ rule head=AstBody; rule head=AstBody -SEMICOLON body=Statements;};# . . .node AstBody{ required name; required value; rule name=AstKey -EQ value=AstValue;};    
  10. 10. Mire nem jóÁltalános programnyelvek írására Meg lehet próbálni, de nem ajánlottReportok készítésére ...valószínűleg...Rengeteg bemenet kezelésére Kicsit lassú De kódot nem kell másodpercenként ezerszer generálni    
  11. 11. Hova tovább?Sokféle filozófia egységesítésePython3 / Jython portolásJó tutorial készítéseReferencia kiegészítéseSikeres diplomaszerzés :­)    
  12. 12. És ki használhatja?Aki akarja BSD liszences Githubon fenn vanMódosítd nyugodtan, ha akarod De a kódot légy szíves, osztd vissza    
  13. 13. Köszönöm a figyelmet https://github.com/herczy/codega   

×