4 DEBUG_TOKEN_MANAGER=false;
8 PARSER_BEGIN(ESFParser)
12 import org.apache.commons.logging.Log;
13 import org.apache.commons.logging.LogFactory;
15 public class ESFParser
18 private static transient Log log = LogFactory.getLog(ESFParser.class);
20 private String currentEvent;
21 private EventTemplateDB eventTemplateDB;
23 public void setEventTemplateDB(EventTemplateDB DB)
24 { eventTemplateDB = DB; }
26 public EventTemplateDB getEventTemplateDB()
27 { return eventTemplateDB; }
29 public void setCurrentEvent(String evt)
30 { currentEvent = evt; }
32 public String getCurrentEvent()
33 { return currentEvent; }
35 public String removeQuotes(String str) {
36 return str.replace("\"","");
48 | "#" : IN_LINE_COMMENT
51 <IN_LINE_COMMENT> SKIP:
58 <IN_LINE_COMMENT> MORE:
72 | < INTEGER_LITERAL: ["1"-"9"] (["0"-"9"])* >
73 | < STRING_LITERAL: "\""(<ID>)"\"" >
74 | < DOUBLE_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* >
75 | < ID: ["a"-"z","A"-"Z","_",":","0"-"9","."] (["a"-"z","A"-"Z","_",":","0"-"9","."])* >
86 event() ( event() )* <EOF>
96 eventName() "{" [ attributeList() ] "}"
100 * The name of an event, should be max 256 chars ([a-zA-Z0-9_]*)
109 if ( getEventTemplateDB().addEvent(t.image))
111 setCurrentEvent(t.image);
115 throw new ParseException("Problem adding event "+t.image);
120 void attributeList() :
123 attribute() ( attribute() )*
126 String stringLiteral() :
133 return removeQuotes(t.image);
137 boolean booleanLiteral() :
151 int integerLiteral() :
156 t = <INTEGER_LITERAL>
159 return Integer.parseInt(t.image);
160 } catch (NumberFormatException e) {
166 double doubleLiteral() :
174 return Double.parseDouble(t.image);
175 } catch (NumberFormatException e) {
181 Object defaultValue() :
186 obj = integerLiteral()
190 | obj = doubleLiteral()
194 | obj = booleanLiteral()
198 | obj = stringLiteral()
223 boolean required = false;
224 Object aDefaultValue = null;
227 (((required = required()) (aType=type() anAttribute=attributeName() [ "[" anArraySize = integerLiteral() "]" ] [ "=" aDefaultValue = defaultValue() ] ";"))
229 (aType=type() anAttribute=attributeName() [ "[" anArraySize = integerLiteral() "]" ] [ "=" aDefaultValue = defaultValue() ] ";") ) {
230 if ( !( aType.equals("uint16") ||
231 aType.equals("int16") ||
232 aType.equals("uint32") ||
233 aType.equals("int32") ||
234 aType.equals("string") ||
235 aType.equals("ip_addr") ||
236 aType.equals("int64") ||
237 aType.equals("uint64") ||
238 aType.equals("byte") ||
239 aType.equals("double") ||
240 aType.equals("float") ||
241 aType.equals("ipv4") ||
242 aType.equals("boolean")
246 throw new ParseException("No such type '"+aType+"'");
249 String evt = getCurrentEvent();
250 if ( evt == null ) throw new ParseException("Bad Event");
252 if (log.isTraceEnabled()) {
253 log.trace("Type: "+aType+" attr: "+anAttribute+" size: "+anArraySize);
254 log.trace("Required: "+required);
255 log.trace("default value: "+aDefaultValue);
258 if (anArraySize > 0) {
262 if ( !getEventTemplateDB().addEventAttribute(evt,
269 throw new ParseException("Problem adding attribute "+evt+"("
270 +aType+","+anAttribute+")");
286 String attributeName() :