From 13ef1f7e8ed1c3d9dbd1e67edec732d8f42802bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <Pawel.Kedzia@pwr.wroc.pl>
Date: Tue, 19 Apr 2011 15:07:42 +0200
Subject: [PATCH] Added mark_action

---
 libwccl/parser/grammar.g | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index 53df790..ed4ad95 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -1944,7 +1944,23 @@ match_action
 match_mark_action
 	[const Corpus2::Tagset& tagset, Variables& vars]
 	returns [boost::shared_ptr<MarkMatch> m_act]
-	: "mark" LPAREN /* TODO */ RPAREN
+{
+	boost::shared_ptr<Function<Match> > match_to;
+	boost::shared_ptr<Function<Match> > match_from;
+}
+	: "mark" LPAREN 
+			match_from = match_fit[tagset, vars] COMMA
+			match_to   = match_fit[tagset, vars] COMMA
+			annotation_name : STRING
+		RPAREN {
+			m_act.reset(
+				new MarkMatch(
+					match_from, 
+					match_to, 
+					((antlr::Token*)annotation_name)->getText()
+				)
+			);
+		}
 ;
 
 // Match unmark action
@@ -1977,6 +1993,18 @@ match_action_comma_sep
 	)*
 ;
 
+// Function<Match> is wrapper for Constant<Match> and Function<Match>
+// Returns boost::shared_ptr<Function<Match> >
+match_fit
+  [const Corpus2::Tagset& tagset, Variables& vars]
+	returns [boost::shared_ptr<Function<Match> > ret]
+{
+	//
+}
+	: ret = match_vector_variable [vars]
+	| ret = match_value_const
+;
+
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
 // ANTLR LEXER
-- 
GitLab