SourceForge.net Logo

What is VeloGen?

VeloGen is source code generator based on Velocity and ANTLR.

How to use VeloGen?

VeloGen is intended to use from ANT script.

Example:

First write velocity vm file that generates source:

#set($clas=$FILE.findFirst("CLASS_DEF","IDENT"))

$clas.Text

#set($methods=$FILE.find("METHOD_DEF","IDENT"))

#foreach($method in $methods)

    $method.Text

#end

Then define ANT task:

<taskdef name="velogen" classname="org.velogen.ant.VeloGenAntTask"/>


<velogen destination="test/destination" destinationNamePattern="Gen<<FILE_NAME> >01.jaba"
 generator="OnePerFile"
 parserProvider="antlr"
 parserType="java"
 source="src/org/velogen/core"
 template="test.vm" />

destinationNamePattern allows to define rule to name generated file. <<FILE_NAME>> is replaced by source file name with no extension.

What syntax is recognized?

Currently Java syntax is recognized. The next ANTLR tokens can be used in vm template and is most important:

EXTENDS_CLAUSE=18
IMPLEMENTS_CLAUSE=19
CLASS_DEF=14
INTERFACE_DEF=15
PACKAGE_DEF=16
METHOD_DEF=9

Rest of syntax that can be used:

BLOCK=4
MODIFIERS=5
OBJBLOCK=6
SLIST=7
CTOR_DEF=8
VARIABLE_DEF=10
INSTANCE_INIT=11
STATIC_INIT=12
TYPE=13
ARRAY_DECLARATOR=17
PARAMETERS=20
PARAMETER_DEF=21
LABELED_STAT=22
TYPECAST=23
INDEX_OP=24
POST_INC=25
POST_DEC=26
METHOD_CALL=27
EXPR=28
ARRAY_INIT=29
IMPORT=30
UNARY_MINUS=31
UNARY_PLUS=32
CASE_GROUP=33
ELIST=34
FOR_INIT=35
FOR_CONDITION=36
FOR_ITERATOR=37
EMPTY_STAT=38
FINAL="final"=39
ABSTRACT="abstract"=40
STRICTFP="strictfp"=41
SUPER_CTOR_CALL=42
CTOR_CALL=43
ASSERT=44
TYPE_ARGS=45
TYPE_ARGS_END=46
TYPE_PARAMS=47
WILDCARD=48
ENUM=49
ENUM_DEF=50
ENUM_CONST=51
ENUM_CONST_INIT=52
ANNOTATION_DEF=53
ANNOTATION_MEMBER_DEF=54
ANNOTATION=55
ANNOTATIONS=56
ANNOTATION_INIT_EMPTY=57
ANNOTATION_INIT_VALUE=58
ANNOTATION_INIT_LIST=59
ANNOTATION_INIT_MEMBER=60
ANNOTATION_ARRAY_INIT=61
LITERAL_package="package"=62
SEMI=63
LITERAL_import="import"=64
LITERAL_static="static"=65
LBRACK=66
RBRACK=67
IDENT=68
DOT=69
LT=70
COMMA=71
QUESTION=72
LITERAL_extends="extends"=73
LITERAL_super="super"=74
GT=75
SR=76
BSR=77
LITERAL_void="void"=78
LITERAL_boolean="boolean"=79
LITERAL_byte="byte"=80
LITERAL_char="char"=81
LITERAL_short="short"=82
LITERAL_int="int"=83
LITERAL_float="float"=84
LITERAL_long="long"=85
LITERAL_double="double"=86
STAR=87
LITERAL_private="private"=88
LITERAL_public="public"=89
LITERAL_protected="protected"=90
LITERAL_transient="transient"=91
LITERAL_native="native"=92
LITERAL_threadsafe="threadsafe"=93
LITERAL_synchronized="synchronized"=94
LITERAL_volatile="volatile"=95
LCURLY=96
RCURLY=97
LPAREN=98
RPAREN=99
AT=100
LITERAL_interface="interface"=101
LITERAL_default="default"=102
ASSIGN=103
LITERAL_class="class"=104
BAND=105
LITERAL_implements="implements"=106
LITERAL_this="this"=107
LITERAL_throws="throws"=108
ELLIPSIS=109
COLON=110
LITERAL_if="if"=111
LITERAL_else="else"=112
LITERAL_for="for"=113
LITERAL_while="while"=114
LITERAL_do="do"=115
LITERAL_break="break"=116
LITERAL_continue="continue"=117
LITERAL_return="return"=118
LITERAL_switch="switch"=119
LITERAL_throw="throw"=120
LITERAL_case="case"=121
LITERAL_try="try"=122
LITERAL_finally="finally"=123
LITERAL_catch="catch"=124
PLUS_ASSIGN=125
MINUS_ASSIGN=126
STAR_ASSIGN=127
DIV_ASSIGN=128
MOD_ASSIGN=129
SR_ASSIGN=130
BSR_ASSIGN=131
SL_ASSIGN=132
BAND_ASSIGN=133
BXOR_ASSIGN=134
BOR_ASSIGN=135
LOR=136
LAND=137
BOR=138
BXOR=139
NOT_EQUAL=140
EQUAL=141
LE=142
GE=143
LITERAL_instanceof="instanceof"=144
SL=145
PLUS=146
MINUS=147
DIV=148
MOD=149
INC=150
DEC=151
BNOT=152
LNOT=153
LITERAL_true="true"=154
LITERAL_false="false"=155
LITERAL_null="null"=156
LITERAL_new="new"=157
NUM_INT=158
CHAR_LITERAL=159
STRING_LITERAL=160
NUM_FLOAT=161
NUM_LONG=162
NUM_DOUBLE=163
WS=164
SL_COMMENT=165
ML_COMMENT=166
ESC=167
HEX_DIGIT=168
EXPONENT=169
FLOAT_SUFFIX=170
LITERAL_const="const"=171