diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index e45d48eb56cd6a9b9e266194141cda7bed1728d4..bc576529b04eb89e700a4cf91204d20d017841b8 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -1,4 +1,7 @@ header { + //don't try to add all the headers inside our namespace + // ANTLR_END_NAMESPACE + #include <libwccl/parser/ParserException.h> #include <cstdio> @@ -48,6 +51,9 @@ header { // #include <libwccl/parser/ANTLRParserResult.h> + + // start our namespace again + // ANTLR_BEGIN_NAMESPACE(Wccl) } options { @@ -348,17 +354,11 @@ relpos [const Corpus2::Tagset& tagset, Wccl::Variables& vars] returns [boost::shared_ptr<Wccl::Function<Wccl::Position> > ret] { + int n = 0; boost::shared_ptr<Wccl::Function<Wccl::Position> > pos; } - : "relpos" - LPAREN - pos = op_position [tagset, vars] ("+" | "-") ofst: UNSIGNED_INT - RPAREN { - ret.reset(new Wccl::RelativePosition( - pos, - token_ref_to_int(ofst) - ) - ); + : "relpos" LPAREN pos = op_position [tagset, vars] COMMA n = number RPAREN { + ret.reset(new Wccl::RelativePosition(pos, n)); } ; @@ -598,7 +598,7 @@ op_position : op = position_variable [vars] | op = position_value | op = relpos [tagset, vars] -// | op = condit_position [tagset, vars] + | op = condit_position [tagset, vars] ; // ---------------------------------------------------------------------------- @@ -869,6 +869,7 @@ lpred_eq } : "equal" LPAREN ( + (position_operators [tagset, vars]) => ( p1 = position_operators [tagset, vars] COMMA p2 = position_operators [tagset, vars] { @@ -960,15 +961,12 @@ condit_bool // ---------------------------------------------------------------------------- // if (Bool, Position, Position) // ? Position ? Bool : 0 -/* Not implemented yet - */ -/* condit_position [const Corpus2::Tagset& tagset, Wccl::Variables& vars] returns [boost::shared_ptr<Wccl::Function<Wccl::Position> > op] { boost::shared_ptr<Wccl::Function<Wccl::Bool> > test; - boost::shared_ptr<Wccl::Function<Wccl::Bool> > p_true, p_false; + boost::shared_ptr<Wccl::Function<Wccl::Position> > p_true, p_false; } : "if" LPAREN test = logical_predicates [tagset, vars] COMMA p_true = position_operators [tagset, vars] @@ -988,7 +986,6 @@ condit_position op.reset(new Wccl::Conditional<Wccl::Position>(test, p_true)); } ; -*/ /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////