﻿#!/usr/bin/python
# -*- coding=utf-8 -*-
#-------------------------------------------------------------------------------
# Name:        syn_const
# Purpose:     Arabic syntaxic analyser constants.
#
# Author:      Taha Zerrouki (taha.zerrouki[at]gmail.com)
#
# Created:     31-10-2011
# Copyright:   (c) Taha Zerrouki 2011
# Licence:     GPL
#------------------------------------------------------------------------------
#constants of syntaxic relations
VerbSubjectRelation = 1; #علاقة فعل وفاعل
VerbObjectRelation  = 2; # علاقة فعل ومفعول به
PrimateRelation = 10; # علاقة مبتدأ، ببداية الجملة
PrimatePredicateRelation  = 3; # علاقة مبتدأ وخبر
DescribedAdjectiveRelation = 4; # علاقة منعوت ونعت
AdditionRelation =5; #علاقة مضاف مضاف إليه
InnaNasebMansoubRelation =6; # علاقة ناصب ومنصوب
NasebMansoubRelation =13; # علاقة ناصب ومنصوب
JarMajrourRelation = 7; # علاقة جار ومجرور
JazemMajzoumRelation = 8; # علاقة جازم ومجزوم
Rafe3Marfou3Relation = 9; # علاقة رافع  ومرفوع
KanaRafe3Marfou3Relation = 12; # علاقة رافع  ومرفوع
TanwinRelation =11; #علاقة تنوين، للكلمة النكرة بفاصل بعدها

#-------------------
KanaSisters_LIST=set([
# yahia alhadj
u'كان',
u'يكون',
u'كانت',
u'صار',
u'صارت',
u'يصير',
u'أمسى',
u'يمسي',
u'أمست',
u'تمسي',
u'ليس',
u'ليست',
u'ظلّ',
u'ظلّت',
u'أضحى',
u'أضحت',
u'يضحي',
u'تضحي',
u'أصبح',
u'أصبحت',
u'يصبح',
u'تصبح',
u'بات',
u'باتت',
u'يبيت',
u'تبيت',

u'مازال',
u'لازال',
u'لايزال',
u'لازالت',
u'مايزال',
u'مازالت',
u'ماتزال',
u'مابرح',
u'مايبرح',
u'مابرحت',
u'ماانفك',
u'ماانفكّت',
u'ماينفك',
u'لاينفك',
u'مادام',
u'مادامت',

]);
#-------------------
RAFE3_LIST=set([
u'أنه',
u'أنك',
u'أنها',
u'بأنها',
u'بأنه',
u'وأنها',
u'فأنها',
u'فأنه',
u'كأنه',
u'كأنها',

# yahia alhadj
u'كان',
u'يكون',
u'كانت',
u'صار',
u'صارت',
u'يصير',
u'أمسى',
u'ليس',
u'ليست',
u'ظلّ',
u'ظلّت',
u'أضحى',
u'أضحت',
u'يضحي',
u'أصبح',
u'أصبحت',
u'يصبح',
u'بات',
u'باتت',
u'يبيت',
u'مازال',
u'لازال',
u'لايزال',
u'لازالت',
u'مايزال',
u'مازالت',
u'ماتزال',
u'مابرح',
u'مايبرح',
u'مابرحت',
u'ماانفك',
u'ماانفكّت',
u'ماينفك',
u'لاينفك',
u'مادام',
u'مادامت',
u'نعم',
u'بئس',
u'حبذا',

#إضافي
u'هل',
#u'من',
u'ما',
u'متى',
u'أين',
u'ماذا',
u'كيف',
u'أيان',
#اسماء الإشارة بعد فاء الإستئناف
u'فهذا',
u'فذلك',
u'فتلك',
u'فهؤلاء',
u'فأولئك',
u'فذلكم',
u'فهذه',
#ضمائر الرفع المنفصلة
u'هو',
u'هما',
u'هم',
u'هي',
u'هما',
u'هن',
u'أنت',
u'أنتما',
u'أنتم',
u'أنت',
u'أنتما',
u'أنتن',
u'أنا',
u'نحن',
u'إذ', 

#--------------
u'ثنا',
]);

JAR_LIST=set([
u'من', 
u'عن', 
u'إلى',
u'على',
u'في',
u'رب',
u'منذ',
u'مذ',
u'عدا',
u'خلا',
u'حاشا',

u'عند',
u'أمام',
u'وراء',
u'خلف',
u'مع',
u'قبل',
u'بعد',
u'تحت',
u'أي',
u'كلّ',
u'بعض',
u'غير',
u'سوى',
u'ليل',
u'شمال',
u'جنوب',
u'يمين',
u'شرق',
u'غرب',
u'شطر',
u'أسفل',
u'أعلى',
u'جنب',
u'جانب',
u'تلقاء',
u'قدام',

u'أعلى',
u'شهر',
u'سنة',
u'غروب',
u'شروق',
u'دون',
u'شهور',

u'يوم',
u'حين',
u'ساعة',
u'زمان',
u'أزمان',
u'أيام',
u'أوقات',
u'وقت',
u'لحظة',

u'خلال',
u"بدون",

u"أثناء",
u"ذات",
u"ذو",
u"ذوو",
u"ذوات",
u"ذوي",
u"بن",
u"ابن",
u"بنت",
u'بين',
# صيغ واضحة الإضافة

u'أبو',
u'أخو',
u'بواسطة',

u'فَوْقَ',
u'مِنْ',

u'إِلَى',
u'رُبَّ',
u'عَلَى',
u'عَنْ',
u'فِي',
u'مِنْ',
u'عَمَّا',
u'حَتَّى',
u'مُنْذُ',
u'مُذْ',
u'فَإِلَى',
u'فَرُبَّ',
u'فَعَلَى',
u'فَعَنْ',
u'فَفِي',
u'فَمِنْ',
u'فَعَمَّا',
u'فَحَتَّى',
u'فَمُنْذُ',
u'فَمُذْ',
u'وَإِلَى',
u'وَرُبَّ',
u'وَعَلَى',
u'وَعَنْ',
u'وَفِي',
u'وَمِنْ',
u'وَعَمَّا',
u'وَحَتَّى',
u'وَمُنْذُ',
u'وَمُذْ',

]);

JAZEM_LIST=set([
u'لم',
u'لما',
u'مهما',
u'حيثما',
u'أينما',
u'كيفما',
u'لا',
u'إن', 
]);

VERB_NASEB_LIST=set([
u'أن',
u'كي',
u'لن',
u'حتى',
u'إذن',
#vocalized factor
u'أَنْ',
u'كَيْ',
u'لَنْ',
u'حَتَّى',
u'إِذَنْ',
]);

VERB_RAFE3_LIST=set([

u'هل',
u'من',
u'ما',
u'متى',
u'أين',
u'ماذا',
u'كيف',
u'أيان',
u'يوم',
u'حين',
u'ساعة',
u'زمان',
u'أزمان',
u'أيام',
u'أوقات',
u'وقت',
u'لحظة',
]);

NOUN_NASEB_LIST=set([
u'أن',
u'إن',
u'فإن',
u'لأن',
u'كأن',
u'لكن',
u'ليت',
u'لعل',
#vocalized factor
u'أَنَّ',
u'فَإَنَّ',
]);

VERBAL_FACTOR_LIST=set([
		u"قد",
		u"فقد",
		u"وقد",
		u"لن",
		u"لم",
		#vovalized factor
		u'أَنْ',
		u'إِنْ',
		
]);

NOMINAl_FACTOR_LIST=set([
		u"في",
		u"بأن",
		u"بين",
		u"ففي",
		u"وفي",
		u"عن",
		u"إلى",
		u"على",
		u"بعض",
		u"تجاه",
		u"تلقاء",
		u"جميع",
		u"حسب",
		u"سبحان",
		u"سوى",
		u"شبه",
		u"غير",
		u"كل",
		u"لعمر",
		u"مثل",
		u"مع",
		u"معاذ",
		u"نحو",
		u"خلف",
		u"أمام",
		u"فوق",
		u"تحت",
		u"يمين",
		u"شمال",
		u"دون",
		u"من",
		u"بدون",
		u"خلال",
		u"أثناء",
		#vovalized factor
		u'أَنِّ',
		u'إِنَّ',		
]);



DIRECT_RAFE3_LIST=set([
u'أنه',
u'أنك',
u'أنها',
u'بأنها',
u'بأنه',
u'وأنها',
u'فأنها',
u'فأنه',
u'كأنه',
u'كأنها',

# yahia alhadj
u'كان',
u'يكون',
u'كانت',
u'صار',
u'صارت',
u'يصير',
u'أمسى',
u'ليس',
u'ليست',
u'ظلّ',
u'ظلّت',
u'أضحى',
u'أضحت',
u'يضحي',
u'أصبح',
u'أصبحت',
u'يصبح',
u'بات',
u'باتت',
u'يبيت',
u'مازال',
u'لازال',
u'لايزال',
u'لازالت',
u'مايزال',
u'مازالت',
u'ماتزال',
u'مابرح',
u'مايبرح',
u'مابرحت',
u'ماانفك',
u'ماانفكّت',
u'ماينفك',
u'لاينفك',
u'مادام',
u'مادامت',
u'نعم',
u'بئس',
u'حبذا',

#إضافي
u'هل',
#u'من',
u'ما',
u'متى',
u'أين',
u'ماذا',
u'كيف',
u'أيان',
#اسماء الإشارة بعد فاء الإستئناف
u'فهذا',
u'فذلك',
u'فتلك',
u'فهؤلاء',
u'فأولئك',
u'فذلكم',
u'فهذه',
#ضمائر الرفع المنفصلة
u'هو',
u'هما',
u'هم',
u'هي',
u'هما',
u'هن',
u'أنت',
u'أنتما',
u'أنتم',
u'أنت',
u'أنتما',
u'أنتن',
u'أنا',
u'نحن',
u'إذ', 
]);
DIRECT_JAR_LIST=set([
u'من', 
u'عن', 
u'إلى',
u'على',
u'في',
u'رب',
u'منذ',
u'مذ',
u'عدا',
u'خلا',
u'حاشا',

u'عند',
u'أمام',
u'وراء',
u'خلف',
u'مع',
u'قبل',
u'بعد',
u'تحت',
u'أي',
u'كلّ',
u'بعض',
u'غير',
u'سوى',
u'ليل',
u'شمال',
u'جنوب',
u'يمين',
u'شرق',
u'غرب',
u'شطر',
u'أسفل',
u'أعلى',
u'جنب',
u'جانب',
u'تلقاء',
u'قدام',

u'أعلى',
u'شهر',
u'سنة',
u'غروب',
u'شروق',
u'دون',
u'شهور',

u'يوم',
u'حين',
u'ساعة',
u'زمان',
u'أزمان',
u'أيام',
u'أوقات',
u'وقت',
u'لحظة',

u'خلال',
u"بدون",

u"أثناء",
u"ذات",
u"ذو",
u"ذوو",
u"ذوات",
u"ذوي",
u"بن",
u"ابن",
u"بنت",
u'بين',
# صيغ واضحة الإضافة

u'أبو',
u'أخو',
u'بواسطة',

u'فَوْقَ',
u'مِنْ',

]);
DIRECT_JAZEM_LIST=set([
u'لم',
u'لما',
u'مهما',
u'حيثما',
u'أينما',
u'كيفما',
]);
DIRECT_VERB_NASEB_LIST=set([
u'أن',
u'كي',
u'لن',
u'حتى',
u'إذن',
#vocalized factor
u'أَنْ',
]);
DIRECT_VERB_RAFE3_LIST=set([

u'هل',
u'من',
u'ما',
u'متى',
u'أين',
u'ماذا',
u'كيف',
u'أيان',
u'يوم',
u'حين',
u'ساعة',
u'زمان',
u'أزمان',
u'أيام',
u'أوقات',
u'وقت',
u'لحظة',

]);

DIRECT_NOUN_NASEB_LIST=set([
u'أن',
u'إن',
u'فإن',
u'لأن',
u'كأن',
u'لكن',
u'ليت',
u'لعل',
#vocalized factor
u'أَنَّ',
u'فَإَنَّ',
]);

DIRECT_VERBAL_FACTOR_LIST=set([
		u"قد",
		u"فقد",
		u"وقد",
		u"لن",
		u"لم",
		#vovalized factor
		u'أَنْ',
		u'إِنْ',
]);

DIRECT_NOMINAl_FACTOR_LIST=set([
		u"في",
		u"بأن",
		u"بين",
		u"ففي",
		u"وفي",
		u"عن",
		u"إلى",
		u"على",
		u"بعض",
		u"تجاه",
		u"تلقاء",
		u"جميع",
		u"حسب",
		u"سبحان",
		u"سوى",
		u"شبه",
		u"غير",
		u"كل",
		u"لعمر",
		u"مثل",
		u"مع",
		u"معاذ",
		u"نحو",
		u"خلف",
		u"أمام",
		u"فوق",
		u"تحت",
		u"يمين",
		u"شمال",
		u"دون",
		u"من",
		u"بدون",
		u"خلال",
		u"أثناء",
		#vovalized factor
		u'أَنِّ',
		u'إِنَّ',		
]);

NominalPhrase=[
	"NN.",
	"NNN.",
	"NNNN.",
	"NSN.",
	"NNSN.",
	"NSNN.",
	"NSNNN.",
	"NSNSN.",
	"NSSN.",
	"NSSNN.",
	"NV.",
	"NVN.",
	"NVNN.",
	"NNV.",
	"NNVV.",
	"NVV.",
	"NVNV.",
	"NVSN.",
	"NVSNV.",
	"NVSNVN.",
	"SNV.",
	"SNVN.",
	"SNSV.",
	"SNN.",
	"SNNN.",
	"SNNNN.",
	"SSNN.",
	"SNSSN.",
	"SNSN.",
	"SNSNV.",
	"SSNNN.",
	"SSNSNSN.",
	"SSNSSN.",
	"SSSNN.",
	"SSSNSN.",
	"SSNV.",
	"SSNSV.",
];


VerbalPhrase=[
	"V.",
	"VN.",
	"VSN.",
	"VSSV.",
	"VNSSV.",
	"VSNN.",
	"VSNV.",
	"VNV.",
	"VNVN.",
	"VNVNN.",
	"VNVSN.",
	"VNVNNN.",
	"VNVNNNN.",
	"VNVNNNNN.",
	"VNN.",
	"VNNV.",
	"VNNVV.",
	"VNNN.",
	"VNNNV.",
	"VNNNSN.",
	"VNNNN.",
	"VNNNNN.",
	"VNNNNNN.",
	"VNNNNNV.",
	"VV.",
	"VVN.",
	"VVNN.",
	"VVNNN.",
	"VVNNNN.",
	"SV.",
	"SVNSVNN.",
	"SVSN.",
	"SVNSN.",
	"SVV.",
	"SVNV.",
	"SVNVN.",
	"SVSNV.",
	"SSSVV.",
	"SSVNV.",
	"SSVNVN.",
	"SSVSNV.",
	#added 
	"SVN.",
	"VNSN.", #added	
	
	]
GrammarPhrase= VerbalPhrase+NominalPhrase;