home | toc | install | usage | language | examples | ref | api |
These three examples are supposed to be an introduction to classgen. You can load a vcg-generated diagram representation and download the examples.
A typical example for an abstract syntax tree representing an expression.
download | view
package sample1; attribute "int" evalResult with Expression; attribute "boolean" calculated with Expression; Expression ::= {IntegerConstant} "int":value | {BinaryExpression} Expression:lhs "int":op Expression:rhs Operator ::= enum PLUS, MINUS, MULT
An example taken from the compiler design course at TUM.
download | view
package sample2; attr "boolean" istvarParam, istformParam with Dekl; attr DeklInfo deklinfo with Id_Seq, Var; Prog ::= "String":ident Proc_Dekl_Seq Block Proc_Dekl_Seq ::= Proc_Dekl Proc_Dekl_Seq | /* leere Sequenz */ Proc_Dekl ::= "String":ident Form_Par_Seq Block Form_Par_Seq ::= Form_Par Form_Par_Seq | /* leere Sequenz */ Form_Par ::= { Param } Var_Dekl | { Var_Param } Var_Dekl Var_Dekl ::= { Variable } Typ Id_Seq:id_Seq | { Array_Variable } "int":laenge Typ Id_Seq:id_Seq Typ ::= "int":typ Block ::= Dekl_Seq Anw_Seq Dekl_Seq ::= Dekl Dekl_Seq | /* leere Sequenz */ Dekl ::= { Var_Dekl } Id_Seq ::= "String":ident Id_Seq | "String":ident Anw_Seq ::= Anw Anw_Seq | Anw Anw ::= Ausdr Ausdr ::= {BinAusdr} Ausdr "int":op Ausdr | {IntAusdr} "int":value | {VarAusdr} Var Var ::= {IdentAusdr} "String":ident | {ArrayAusdr} "String":ident Ausdr:index
This example describe classes that are commonly uses in box-glue layout algorithms.
download | view
package sample3; /* Aus dem PP WS 99 WS 99 */ attr "int" boxWidth, boxHeight, boxDepth with Box, ItemList; attr "int" actual with Item; attr "boolean" inHBox with ItemList; attr "int" requSize with ItemList; Page ::= Box:content Box ::= {HBox} "int" :requestedWidth ItemList :content | {VBox} "int" :requestedHeight HAlignment:halign ItemList :content | {EmptyBox} "int" :width "int" :height "int" :depth | {Rule} "int":width "int" :height "int" :depth | {TextBox} String:text "java.awt.Font" :font ItemList ::= Item* Item ::= {Glue} "int" :natural "int" :plus "int" :minus | {BoxItem} Box :box HAlignment ::= {Left} | {HCenter} | {Right}
© copyright 2000, 2001, 2002 Sebastian Winter (winterse@in.tum.de) and Florian Deissenboeck (flo@deissenboeck.de)
© copyright 2000, 2001, 2002 Technical University of Munich, Germany