diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index 4af6cf5234ac228eff1036a90bdba6d3e030c973..685f9bc6f927a3758508c54515acb1dc0387b52d 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]
 {