doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
grammar net.sf.etl.samples.Plans {
import accounting="accounting.g.etl";
namespace default p = "http://etl.sf.net/2008/samples/plans";
context default TopLevel {
statement Plan {
% plan;
@ name = identifier;
@ contents += block(PlanMembers);
};
};
context PlanMembers {
statement Value {
% value;
@ name = identifier;
% : ;
@ type = identifier;
@ value += block(TimedExpressions);
};
statement Event {
% event;
@ name = identifier;
@ value += block(TimedExpressions);
};
};
context TimedExpressions {
import expressions = Expressions from accounting;
def MappingPart {
% =>;
@ value = expression(expressions);
};
statement After {
% after;
@ date = ^ p:Date {
@ year = integer;
% -;
@ month = integer;
% -;
@ day = integer;
};
ref(MappingPart);
};
statement Past {
% past;
ref(MappingPart);
};
};
};