From fa2ea2b1824ca3c5177befb4de912307606ad084 Mon Sep 17 00:00:00 2001
From: Adam Wardynski <award@.(win7-laptop)>
Date: Fri, 29 Apr 2011 21:44:45 +0200
Subject: [PATCH] Add imports section to parsing wccl files.

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

diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index 4af6cf5..685f9bc 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -99,6 +99,8 @@ header {
 	// Wccl whole file syntax
 	#include <libwccl/wcclfile.h>
 	
+	#include <libwccl/lexicon/lexiconparser.h>
+
 	// Unicode String
 	#include <unicode/uniset.h>
 	#include <unicode/unistr.h>
@@ -302,7 +304,8 @@ parse_wccl_file
 	wccl_file = boost::make_shared<WcclFile>(tagset);
 	boost::shared_ptr<TagRuleSequence> rule_seq;
 }
-	: (any_operator_section [*wccl_file] )*
+	: (imports_section [*wccl_file])?
+	  (any_operator_section [*wccl_file] )*
 	  (
 		rule_seq = parse_tag_rule_sequence [tagset] { wccl_file->set_tag_rules(rule_seq); }
 		(any_operator_section [*wccl_file] )*
@@ -1826,6 +1829,19 @@ match_operator
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
 
+imports_section [WcclFile& wccl_file]
+	: (import [wccl_file])+
+;
+
+import [WcclFile& wccl_file]
+	: "import" LPAREN file_path : STRING COMMA lexicon_name : STRING RPAREN {
+		wccl_file.import_lexicon(
+			LexiconParser::parse_lexicon(
+				token_ref_to_std_string(lexicon_name),
+				token_ref_to_std_string(file_path)));
+	}
+;
+
 any_operator_section
 	[WcclFile& wccl_file]
 {
-- 
GitLab