diff --git a/.gitignore b/.gitignore
index ba077a4031add5b3a04384f8b9cfc414efbf47dd..f48ba68465439953e72ab61c2346fd7feae167ca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-bin
+#bin
diff --git a/Semantic_Analizer_Tests/bin/config.cfg b/Semantic_Analizer_Tests/bin/config.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..960cd353b1292ff1715e1205c4c5f4d690747de8
--- /dev/null
+++ b/Semantic_Analizer_Tests/bin/config.cfg
@@ -0,0 +1,599 @@
+###############################################################################
+# Copyright (c) 2000-2015 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+[DEFINE]
+# In this section you can create macro definitions,
+# that can be used in other configuration file sections except [INCLUDE].
+d_bool_true1 := "true"
+d_bool_true2 := true
+d_bool_false1 := "false"
+d_bool_false2 := false
+d_integer1 := 5
+d_integer2 := -5
+d_float1 := 1.0
+d_float2 := -1.0
+d_float3 := 1.0e2
+d_objid := "objid {0 0 0 0 }"
+d_verdict_none := none
+d_verdict_pass := pass
+d_verdict_inconc := inconc
+d_verdict_fail := fail
+d_verdict_error := error
+d_bitstring_empty := ""
+d_bitstring_zeroes := "0000"
+d_bitstring_ones := "1111"
+d_hexstring_empty := ""
+d_hexstring_all := "1234567890ABCDEFabcdef"
+d_octetstring_empty := ""
+d_octetstring_all := "01234567"
+d_charstring_empty := ""
+d_charstring_charstring := "charstring"
+d_omit := omit
+d_enum := "enum"
+d_null1:= null
+d_null2 := NULL
+d_mtc := mtc
+d_system := system
+
+#strange names testing the usability of words that are keywords in other sections
+true := true
+false := false
+boolean := boolean
+integer := integer
+objid := objid
+char := char
+return := return
+identifier := identifier
+null := null
+pass := pass
+system := system
+LogFile := LogFile
+LOG_ALL := LOG_ALL
+FileMask := FileMask
+ConsoleMask := ConsoleMask
+DiskFullAction := DiskFullAction
+Stop := Stop
+Error := Error
+Retry := Retry
+Delete := Delete
+LogFileNumber := LogFileNumber
+LogFileSize := LogFileSize
+TimeStampFormat := TimeStampFormat
+Yes := Yes
+No := No
+Time := Time
+DateTime := DateTime
+Seconds := Seconds
+LogSourceInfo := LogSourceInfo
+SourceInfoFormat := SourceInfoFormat
+Stack := Stack
+Single := Single
+AppendFile := AppendFile
+LogEventTypes := LogEventTypes
+Detailed := Detailed
+SubCategories := SubCategories
+LogEntityName := LogEntityName
+MatchingHints := MatchingHints
+Compact := Compact
+Detailed := Detailed
+BeginTestCase := BeginTestCase
+EndTestCase := EndTestCase
+BeginControlPart := BeginControlPart
+EndControlPart := EndControlPart
+TCPPort := TCPPort
+KillTimer := KillTimer
+NumHCs := NumHCs
+UnixSocketsEnabled := UnixSocketsEnabled
+LocalAddress := LocalAddress
+
+
+[MODULE_PARAMETERS]
+# This section shall contain the values of all parameters that are defined in your TTCN-3 modules.
+m_bool_true := true
+m_bool_false := false
+m_bool_macro_true := ${d_bool_true1, boolean}
+m_bool_macro_false := ${d_bool_false1, boolean}
+*.m_bool_true := true
+*.m_bool_false := false
+*.m_bool_macro_true := ${d_bool_true2, boolean}
+*.m_bool_macro_false := ${d_bool_false2, boolean}
+module_name.m_bool_true := true
+module_name.m_bool_false := false
+module_name.m_bool_macro_true := ${d_bool_true1, boolean}
+module_name.m_bool_macro_false := ${d_bool_false1, boolean}
+m_integer := 5;
+m_integer := +5;
+m_integer := -5;
+m_integer := 1+1;
+m_integer := 1-1;
+m_integer := 1*1;
+m_integer := 1/1;
+m_integer := (1+(1-(1*(1/(+(-(1)))))))*(1+(1-(1*(1/(-(+(1)))))));
+m_integer := ${d_integer1, integer} + ${d_integer2, integer};
+m_float := 5.0
+m_float := +5.0
+m_float := -5.0
+m_float := 1.0e2
+m_float := 1.0e+2
+m_float := 1.0e-2
+m_float := 1.0+1.0
+m_float := 0.1-0.1
+m_float := .1*.1
+m_float := 0.1/0.1
+m_float := (1.0+(1.0-(1.0*(1.0/(+(-(1.0)))))))*(1.0+(1.0-(1.0*(1.0/(-(+(1.0)))))))
+m_float := ${d_float3, float}
+m_float := ${d_float1, float} + ${d_float2, float}
+m_objid := objid { 0 zero(0) 1 one(1)}
+m_verdict := none
+m_verdict := pass
+m_verdict := inconc
+m_verdict := fail
+m_verdict := error
+m_bitstring := ''B
+m_bitstring := '0000'B
+m_bitstring := '1111'B
+m_bitstring := $d_bitstring_zeroes
+m_bitstring := '0000'B & '1111'B & ${d_bitstring_zeroes, bitstring} & ${d_bitstring_ones, bitstring}
+m_hexstring := ''H
+m_hexstring := '01234567890ABCDEFabcdef'H
+m_hexstring := ${d_hexstring_all, hexstring}
+m_octetstring := ''O
+m_octetstring := '01234567'O
+m_octetstring := ${d_octetstring_all, octetstring}
+m_octetstring := ${d_bitstring_ones, binaryoctet}
+m_charstring := ""
+m_charstring := "charstring"
+m_charstring := char (0, 0, 0, 10)
+m_charstring := $d_charstring_empty
+m_charstring := $d_charstring_charstring
+m_charstring := ${d_charstring_charstring, charstring}
+m_charstring := "charstring" & char (1-1, 0*1, -1+1, 10/1) & $d_charstring_empty & ${d_charstring_empty, charstring}
+m_omitted := omit
+m_enum := enum_identifier
+m_enum := {d_enum, identifier}
+m_null := null
+m_null := NULL
+m_mtc := mtc
+m_system := system
+m_complex1 := {-, true, ${d_bool_true1, boolean}, 5, ${d_integer1, integer}, 1.0, ${d_float1, float},
+    objid { 0 zero(0) 1 one(1)}, none, pass, fail, inconc, error,
+    '0011'B, $d_bitstring_zeroes, ${d_bitstring_zeroes, bitstring},
+    '0011'H, ${d_hexstring_all, hexstring},
+    ''O, ${d_octetstring_all, octetstring}, ${d_bitstring_ones, binaryoctet},
+    "charstring", char (0, 0, 0, 10), $d_charstring_empty, ${d_charstring_empty, charstring},
+    omit, enum_identifier, null, NULL, mtc, system,
+    {1, - , 5} , {field1 := 1, field2 := 2}, {[0] := 0, [1] := 1}
+}
+m_complex2 := {[0] := true, [0] := ${d_bool_true1, boolean}, [0] := 5, [0] := ${d_integer1, integer}, [0] := 1.0, [0] := ${d_float1, float},
+    [0] := objid { 0 zero(0) 1 one(1)}, [0] := none, [0] := pass, [0] := fail, [0] := inconc, [0] := error,
+    [0] := '0011'B, [0] := $d_bitstring_zeroes, [0] := ${d_bitstring_zeroes, bitstring},
+    [0] := '0011'H, [0] := ${d_hexstring_all, hexstring},
+    [0] := ''O, [0] := ${d_octetstring_all, octetstring}, [0] := ${d_bitstring_ones, binaryoctet},
+    [0] := "charstring", [0] := char (0, 0, 0, 10), [0] := $d_charstring_empty, [0] := ${d_charstring_empty, charstring},
+    [0] := omit, [0] := enum_identifier, [0] := null, [0] := NULL, [0] := mtc, [0] := system,
+    [0] := {1, - , 5} , [0] := {field1 := 1, field2 := 2}, [0] := {[0] := 0, [1] := 1}
+}
+m_complex3 := {field := true, field := ${d_bool_true1, boolean}, field := 5, field := ${d_integer1, integer},
+    field := 1.0, field := ${d_float1, float},
+    field := objid { 0 zero(0) 1 one(1)}, field := none, field := pass, field := fail, field := inconc, field := error,
+    field := '0011'B, field := $d_bitstring_zeroes, field := ${d_bitstring_zeroes, bitstring},
+    field := '0011'H, field := ${d_hexstring_all, hexstring},
+    field := ''O, field := ${d_octetstring_all, octetstring}, field := ${d_bitstring_ones, binaryoctet},
+    field := "charstring", field := char (0, 0, 0, 10), field := $d_charstring_empty, field := ${d_charstring_empty, charstring},
+    field := omit, field := enum_identifier, field := null, field := NULL, field := mtc, field := system,
+    field := {1, - , 5} , field := {field1 := 1, field2 := 2}, field := {[0] := 0, [1] := 1}
+}
+
+m_complex1 &= {1,2,3}
+
+#strange names testing the usability of words that are keywords in other sections
+m_strangepar := true
+m_strangepar := false
+boolean := boolean
+integer := integer
+return := return
+identifier := identifier
+m_strangepar := null
+m_strangepar := pass
+m_strangepar := system
+LogFile := LogFile
+LOG_ALL := LOG_ALL
+FileMask := FileMask
+ConsoleMask := ConsoleMask
+DiskFullAction := DiskFullAction
+Stop := Stop
+Error := Error
+Retry := Retry
+Delete := Delete
+LogFileNumber := LogFileNumber
+LogFileSize := LogFileSize
+TimeStampFormat := TimeStampFormat
+Yes := Yes
+No := No
+Time := Time
+DateTime := DateTime
+Seconds := Seconds
+LogSourceInfo := LogSourceInfo
+SourceInfoFormat := SourceInfoFormat
+Stack := Stack
+Single := Single
+AppendFile := AppendFile
+LogEventTypes := LogEventTypes
+Detailed := Detailed
+SubCategories := SubCategories
+LogEntityName := LogEntityName
+MatchingHints := MatchingHints
+Compact := Compact
+Detailed := Detailed
+BeginTestCase := BeginTestCase
+EndTestCase := EndTestCase
+BeginControlPart := BeginControlPart
+EndControlPart := EndControlPart
+TCPPort := TCPPort
+KillTimer := KillTimer
+NumHCs := NumHCs
+UnixSocketsEnabled := UnixSocketsEnabled
+LocalAddress := LocalAddress
+
+[LOGGING]
+#testing the loggerplugins with different component and loggerplugin writing forms
+LoggerPlugins := {first, second := "location"}
+*.LoggerPlugins := {first, second := "location"}
+5.LoggerPlugins := {first, second := "location"}
+mtc.LoggerPlugins := {first, second := "location"}
+component.LoggerPlugins := {first, second := "location"}
+Loggerplugins := {first, second := "location"}
+loggerPlugins := {first, second := "location"}
+loggerplugins := {first, second := "location"}
+
+#testing the logfile with different component and loggerplugin writing forms
+LogFile := "logs/%e.%h-%r.%s"
+*.LogFile := "logs/%e.%h-%r.%s"
+5.LogFile := "logs/%e.%h-%r.%s"
+mtc.LogFile := "logs/%e.%h-%r.%s"
+component.LogFile := "logs/%e.%h-%r.%s"
+*.*.LogFile := "logs/%e.%h-%r.%s"
+5.*.LogFile := "logs/%e.%h-%r.%s"
+mtc.*.LogFile := "logs/%e.%h-%r.%s"
+component.*.LogFile := "logs/%e.%h-%r.%s"
+*.plugin.LogFile := "logs/%e.%h-%r.%s"
+5.plugin.LogFile := "logs/%e.%h-%r.%s"
+mtc.plugin.LogFile := "logs/%e.%h-%r.%s"
+component.plugin.LogFile := "logs/%e.%h-%r.%s"
+*.${d_enum, identifier}.LogFile := "logs/%e.%h-%r.%s"
+5.${d_enum, identifier}.LogFile := "logs/%e.%h-%r.%s"
+mtc.${d_enum, identifier}.LogFile := "logs/%e.%h-%r.%s"
+component.${d_enum, identifier}.LogFile := "logs/%e.%h-%r.%s"
+
+#testing all of the possible values
+filemask := LOG_ALL | ACTION | WARNING|VERDICTOP|USER|TIMEROP|TESTCASE|STATISTICS|PORTEVENT|PARALLEL|FUNCTION|EXECUTOR|ERROR|DEFAULTOP| DEBUG | MATCHING |
+ LOG_NOTHING | TTCN_ACTION | TTCN_WARNING|TTCN_VERDICTOP|TTCN_USER|TTCN_TIMEROP|TTCN_TESTCASE|TTCN_STATISTICS|TTCN_PORTEVENT|TTCN_PARALLEL|TTCN_FUNCTION|TTCN_EXECUTOR|TTCN_ERROR|TTCN_DEFAULTOP| TTCN_DEBUG | TTCN_MATCHING|
+ ACTION_UNQUALIFIED | DEBUG_ENCDEC | DEBUG_TESTPORT | DEBUG_UNQUALIFIED | DEFAULTOP_ACTIVATE | DEFAULTOP_DEACTIVATE | DEFAULTOP_EXIT | DEFAULTOP_UNQUALIFIED |
+ ERROR_UNQUALIFIED | EXECUTOR_COMPONENT | EXECUTOR_CONFIGDATA | EXECUTOR_EXTCOMMAND | EXECUTOR_LOGOPTIONS | EXECUTOR_RUNTIME | EXECUTOR_UNQUALIFIED |
+ FUNCTION_RND | FUNCTION_UNQUALIFIED |
+ MATCHING_DONE | MATCHING_MCSUCCESS | MATCHING_MCUNSUCC | MATCHING_MMSUCCESS | MATCHING_MMUNSUCC | MATCHING_PCSUCCESS | MATCHING_PCUNSUCC | MATCHING_PMSUCCESS | MATCHING_PMUNSUCC | MATCHING_PROBLEM | MATCHING_TIMEOUT | MATCHING_UNQUALIFIED |
+ PARALLEL_PORTCONN | PARALLEL_PORTMAP | PARALLEL_PTC | PARALLEL_UNQUALIFIED | PORTEVENT_DUALRECV | PORTEVENT_DUALSEND | PORTEVENT_MCRECV | PORTEVENT_MCSEND | PORTEVENT_MMRECV | PORTEVENT_MMSEND | PORTEVENT_MQUEUE | PORTEVENT_PCIN | PORTEVENT_PCOUT | PORTEVENT_PMIN | PORTEVENT_PMOUT | PORTEVENT_PQUEUE | PORTEVENT_STATE | PORTEVENT_UNQUALIFIED | STATISTICS_UNQUALIFIED |
+ STATISTICS_VERDICT | TESTCASE_FINISH | TESTCASE_START | TESTCASE_UNQUALIFIED |
+ TIMEROP_GUARD | TIMEROP_READ | TIMEROP_START | TIMEROP_STOP | TIMEROP_TIMEOUT | TIMEROP_UNQUALIFIED |
+ USER_UNQUALIFIED | VERDICTOP_FINAL | VERDICTOP_GETVERDICT | VERDICTOP_SETVERDICT | VERDICTOP_UNQUALIFIED | WARNING_UNQUALIFIED
+Filemask := LOG_ALL
+fileMask := LOG_ALL
+FileMask := LOG_ALL
+
+consolemask := LOG_ALL | ACTION | WARNING|VERDICTOP|USER|TIMEROP|TESTCASE|STATISTICS|PORTEVENT|PARALLEL|FUNCTION|EXECUTOR|ERROR|DEFAULTOP| DEBUG | MATCHING |
+ LOG_NOTHING | TTCN_ACTION | TTCN_WARNING|TTCN_VERDICTOP|TTCN_USER|TTCN_TIMEROP|TTCN_TESTCASE|TTCN_STATISTICS|TTCN_PORTEVENT|TTCN_PARALLEL|TTCN_FUNCTION|TTCN_EXECUTOR|TTCN_ERROR|TTCN_DEFAULTOP| TTCN_DEBUG | TTCN_MATCHING|
+ ACTION_UNQUALIFIED | DEBUG_ENCDEC | DEBUG_TESTPORT | DEBUG_UNQUALIFIED | DEFAULTOP_ACTIVATE | DEFAULTOP_DEACTIVATE | DEFAULTOP_EXIT | DEFAULTOP_UNQUALIFIED |
+ ERROR_UNQUALIFIED | EXECUTOR_COMPONENT | EXECUTOR_CONFIGDATA | EXECUTOR_EXTCOMMAND | EXECUTOR_LOGOPTIONS | EXECUTOR_RUNTIME | EXECUTOR_UNQUALIFIED |
+ FUNCTION_RND | FUNCTION_UNQUALIFIED |
+ MATCHING_DONE | MATCHING_MCSUCCESS | MATCHING_MCUNSUCC | MATCHING_MMSUCCESS | MATCHING_MMUNSUCC | MATCHING_PCSUCCESS | MATCHING_PCUNSUCC | MATCHING_PMSUCCESS | MATCHING_PMUNSUCC | MATCHING_PROBLEM | MATCHING_TIMEOUT | MATCHING_UNQUALIFIED |
+ PARALLEL_PORTCONN | PARALLEL_PORTMAP | PARALLEL_PTC | PARALLEL_UNQUALIFIED | PORTEVENT_DUALRECV | PORTEVENT_DUALSEND | PORTEVENT_MCRECV | PORTEVENT_MCSEND | PORTEVENT_MMRECV | PORTEVENT_MMSEND | PORTEVENT_MQUEUE | PORTEVENT_PCIN | PORTEVENT_PCOUT | PORTEVENT_PMIN | PORTEVENT_PMOUT | PORTEVENT_PQUEUE | PORTEVENT_STATE | PORTEVENT_UNQUALIFIED | STATISTICS_UNQUALIFIED |
+ STATISTICS_VERDICT | TESTCASE_FINISH | TESTCASE_START | TESTCASE_UNQUALIFIED |
+ TIMEROP_GUARD | TIMEROP_READ | TIMEROP_START | TIMEROP_STOP | TIMEROP_TIMEOUT | TIMEROP_UNQUALIFIED |
+ USER_UNQUALIFIED | VERDICTOP_FINAL | VERDICTOP_GETVERDICT | VERDICTOP_SETVERDICT | VERDICTOP_UNQUALIFIED | WARNING_UNQUALIFIED
+Consolemask := LOG_ALL
+consoleMask := LOG_ALL
+ConsoleMask := LOG_ALL
+
+*.*.diskfullaction := stop
+*.*.diskfullAction := stop
+*.*.diskFullaction := stop
+*.*.diskFullAction := stop
+*.*.Diskfullaction := stop
+*.*.DiskfullAction := stop
+*.*.DiskFullaction := stop
+*.*.DiskFullAction := stop
+*.*.DiskFullAction := Stop
+*.*.DiskFullAction := Error
+*.*.DiskFullAction := error
+*.*.DiskFullAction := Retry
+*.*.DiskFullAction := retry
+*.*.DiskFullAction := Delete
+*.*.DiskFullAction := delete
+
+logfilenumber := 5
+logfileNumber := 5
+logFilenumber := 5
+logFileNumber := 5
+Logfilenumber := 5
+LogfileNumber := 5
+LogFilenumber := 5
+LogFileNumber := 5
+LogFileNumber := ${d_integer, integer}
+
+logfilesize := 5
+logfileSize := 5
+logFilesize := 5
+logFileSize := 5
+Logfilesize := 5
+LogfileSize := 5
+LogFilesize := 5
+LogFileSize := 5
+LogFileSize := ${d_integer, integer}
+
+logfile := "logs/%e.%h-%r.%s"
+logFile := "logs/%e.%h-%r.%s"
+Logfile := "logs/%e.%h-%r.%s"
+filename := "logs/%e.%h-%r.%s"
+fileName := "logs/%e.%h-%r.%s"
+Filename := "logs/%e.%h-%r.%s"
+FileName := "logs/%e.%h-%r.%s"
+
+timestampformat := time
+timestampFormat := Time
+timeStampformat := TIME
+timeStampFormat := datetime
+Timestampformat := Datetime
+TimestampFormat := DateTime
+TimeStampformat := DATETIME
+TimeStampFormat := seconds
+TimeStampFormat := Seconds
+TimeStampFormat := SECONDS
+
+logsourceinfo := yes
+logsourceInfo := Yes
+logSourceinfo := YES
+logSourceInfo := no
+Logsourceinfo := No
+LogsourceInfo := NO
+LogSourceinfo := ${d_boolean, boolean}
+LogSourceInfo := none
+sourceinfoformat := none
+sourceinfoFormat := None
+sourceInfoformat := NONE
+sourceInfoFormat := single
+Sourceinfoformat := Single
+SourceinfoFormat := SINGLE
+SourceInfoformat := stack
+SourceInfoFormat := Stack
+SourceInfoFormat := STACK
+
+
+appendfile := yes
+appendFile := Yes
+Appendfile := YES
+AppendFile := no
+AppendFile := No
+AppendFile := NO
+AppendFile := ${d_boolean, boolean}
+
+
+logeventtypes := yes
+logeventTypes := Yes
+logEventtypes := YES
+logEventTypes := no
+Logeventtypes := No
+LogeventTypes := NO
+LogEventtypes := detailed
+LogEventTypes := Detailed
+LogEventTypes := subcategories
+LogEventTypes := subCategories
+LogEventTypes := Subcategories
+LogEventTypes := SubCategories
+
+
+logentityname := yes
+logentityName := Yes
+logEntityname := YES
+logEntityName := no
+Logentityname := No
+LogentityName := NO
+LogEntityname := Yes
+LogEntityName := Yes
+
+matchinghints := compact
+matchingHints := Compact
+MatchingHints := detailed
+MatchingHints := Detailed
+
+pluginSpecific := "something" & "something"
+
+
+[TESTPORT_PARAMETERS]
+# In this section you can specify parameters that are passed to Test Ports.
+component.testport.id := "value";
+${enum_identifier, identifier}.testport.id := "value";
+5.testport.id := "value"
+${d_integer, integer}.testport.id := "value"
+mtc.testport.id := "value"
+system.testport.id := "value"
+*.testport.id := "value"
+component.testport[5+5].id := "value"
+component.*.id := "value"
+component.testport.${enum_identifier, identifier} := "value" & "value"
+
+[INCLUDE]
+# To use configuration settings given in other configuration files,
+# the configuration files just need to be listed in this section, with their full or relative pathnames.
+"included.cfg"
+
+[EXTERNAL_COMMANDS]
+# This section can define external commands (shell scripts) to be executed by the ETS
+# whenever a control part or test case is started or terminated.
+BeginTestCase := "BeginTestCase"
+EndTestCase := "EndTestCase"
+BeginControlPart := "BeginControlPart"
+EndControlPart := "EndControlPart"
+
+[EXECUTE]
+# In this section you can specify what parts of your test suite you want to execute.
+executeable.control
+executeable.testcase1;
+executeable.*
+
+[GROUPS]
+# In this section you can specify groups of hosts. These groups can be used inside the
+# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts.
+first := *
+second := 1, 1.0, 1.0.0.0.0.0.0, a.b.c.d.e.f, identifier, ${enum_identifier, identifier}
+
+#strange names testing the usability of words that are keywords in other sections
+true := true
+false := false
+boolean := boolean
+integer := integer
+objid := objid
+char := char
+return := return
+identifier := identifier
+null := null
+pass := pass
+system := system
+LogFile := LogFile
+LOG_ALL := LOG_ALL
+FileMask := FileMask
+ConsoleMask := ConsoleMask
+DiskFullAction := DiskFullAction
+Stop := Stop
+Error := Error
+Retry := Retry
+Delete := Delete
+LogFileNumber := LogFileNumber
+LogFileSize := LogFileSize
+TimeStampFormat := TimeStampFormat
+Yes := Yes
+No := No
+Time := Time
+DateTime := DateTime
+Seconds := Seconds
+LogSourceInfo := LogSourceInfo
+SourceInfoFormat := SourceInfoFormat
+Stack := Stack
+Single := Single
+AppendFile := AppendFile
+LogEventTypes := LogEventTypes
+Detailed := Detailed
+SubCategories := SubCategories
+LogEntityName := LogEntityName
+MatchingHints := MatchingHints
+Compact := Compact
+Detailed := Detailed
+BeginTestCase := BeginTestCase
+EndTestCase := EndTestCase
+BeginControlPart := BeginControlPart
+EndControlPart := EndControlPart
+TCPPort := TCPPort
+KillTimer := KillTimer
+NumHCs := NumHCs
+UnixSocketsEnabled := UnixSocketsEnabled
+LocalAddress := LocalAddress
+
+[COMPONENTS]
+# This section consists of rules restricting the location of created PTCs.
+component := host1;
+${enum_identifier, identifier} := host1;
+* := host1;
+component := 1
+component := 1.0
+component := 1.0.0.0
+component := 1.0.0.0.0.0.0.0
+component := a.b.c.d.e.f
+component := ${enum_identifier, hostname}
+
+#strange names testing the usability of words that are keywords in other sections
+true := true
+false := false
+boolean := boolean
+integer := integer
+objid := objid
+char := char
+return := return
+identifier := identifier
+null := null
+pass := pass
+system := system
+LogFile := LogFile
+LOG_ALL := LOG_ALL
+FileMask := FileMask
+ConsoleMask := ConsoleMask
+DiskFullAction := DiskFullAction
+Stop := Stop
+Error := Error
+Retry := Retry
+Delete := Delete
+LogFileNumber := LogFileNumber
+LogFileSize := LogFileSize
+TimeStampFormat := TimeStampFormat
+Yes := Yes
+No := No
+Time := Time
+DateTime := DateTime
+Seconds := Seconds
+LogSourceInfo := LogSourceInfo
+SourceInfoFormat := SourceInfoFormat
+Stack := Stack
+Single := Single
+AppendFile := AppendFile
+LogEventTypes := LogEventTypes
+Detailed := Detailed
+SubCategories := SubCategories
+LogEntityName := LogEntityName
+MatchingHints := MatchingHints
+Compact := Compact
+Detailed := Detailed
+BeginTestCase := BeginTestCase
+EndTestCase := EndTestCase
+BeginControlPart := BeginControlPart
+EndControlPart := EndControlPart
+TCPPort := TCPPort
+KillTimer := KillTimer
+NumHCs := NumHCs
+UnixSocketsEnabled := UnixSocketsEnabled
+LocalAddress := LocalAddress
+
+[MAIN_CONTROLLER]
+# The options herein control the behavior of MC.
+
+tcpport := 0
+tcpPort := 0
+TCPport := 0
+TCPPort := 0
+
+killtimer := 10.0
+killTimer := 10.0
+Killtimer := 10.0
+KillTimer := 10.0
+
+numhcs := 0
+numHCs := 0
+Numhcs := 0
+NumHCs := 0
+
+unixsocketsenabled := yes
+unixsocketsEnabled := Yes
+unixSocketsenabled := YES
+unixSocketsEnabled := no
+Unixsocketsenabled := No
+UnixsocketsEnabled := NO
+UnixSocketsenabled := yes
+UnixSocketsEnabled := yes
+
+localaddress := name
+localAddress := 5
+Localaddress := 5.0
+LocalAddress := 127.0.0.1
+LocalAddress := id-0_i-0.1
+LocalAddress := ${d_hostname, hostname}
\ No newline at end of file
diff --git a/Semantic_Analizer_Tests/bin/included.cfg b/Semantic_Analizer_Tests/bin/included.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1c0112daed7afcffe48e68de6a6a1b954e423dbd
--- /dev/null
+++ b/Semantic_Analizer_Tests/bin/included.cfg
@@ -0,0 +1,11 @@
+###############################################################################
+# Copyright (c) 2000-2015 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+# This file is intentionally empty
+[INCLUDE]
+"config.cfg"
+"ipv6addresses.cfg"
\ No newline at end of file
diff --git a/Semantic_Analizer_Tests/bin/ipv6addresses.cfg b/Semantic_Analizer_Tests/bin/ipv6addresses.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1eb1c14c1f22edd508c2dd66349c82bb14167632
--- /dev/null
+++ b/Semantic_Analizer_Tests/bin/ipv6addresses.cfg
@@ -0,0 +1,229 @@
+###############################################################################
+# Copyright (c) 2000-2015 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+[GROUPS]
+first := *
+second := 1, 1.0, 1.0.0.0.0.0.0, a.b.c.d.e.f, identifier, ${enum_identifier, identifier}
+
+myGroup := ::1  #fe80::c002:37ff:fe6c:0%fastethernet0/0
+
+#based on http://tools.ietf.org/html/rfc3513
+
+myGroup := FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
+myGroup := 1080:0:0:0:8:800:200C:417A
+myGroup := 1080:0:0:0:8:800:200C:417
+myGroup := FF01:0:0:0:0:0:0:101
+
+myGroup := 1080:0:0:0:8:800:200C:417A  #a unicast address
+myGroup :=  1080::8:800:200C:417A       #a unicast address
+
+myGroup := FF01:0:0:0:0:0:0:101        #a multicast address
+myGroup :=FF01::101                   #a multicast address
+
+myGroup := 0:0:0:0:0:0:0:1             #the loopback address
+myGroup := ::1                         #the loopback address
+
+myGroup := 0:0:0:0:0:0:0:0             #the unspecified addresses
+myGroup := ::                          #the unspecified addresses
+
+myGroup := 0:0:0:0:0:0:13.1.68.3
+myGroup := ::13.1.68.3
+
+myGroup := 0:0:0:0:0:FFFF:129.144.52.38
+myGroup := ::FFFF:129.144.52.38
+
+myGroup := 12AB:0000:0000:CD30:0000:0000:0000:0000/60  #should run legal!
+myGroup :=12AB:0:0:CD30::/60
+myGroup := 12AB:0:0:CD30::/60
+
+#The following are NOT legal representations of the above prefix: BUT they are eaten >(
+myGroup := 12AB:0:0:CD3/60   #may drop leading zeros, but not trailing zeros,within any 16-bit chunk of the address
+
+myGroup := 12AB::CD30/60     #address to left of "/" expands to 2AB:0000:0000:0000:0000:000:0000:CD30
+
+myGroup := 12AB::CD3/60      #address to left of "/" expands to 12AB:0000:0000:0000:0000:000:0000:0CD3
+
+myGroup := 12AB:0:0:CD30:123:4567:89AB:CDEF/60
+
+myGroup :=  FF01:0:0:0:0:0:0:101
+
+myGroup := FF02:0:0:0:0:0:0:101 #means all NTP servers on the same link as the sender.
+
+myGroup := FF05:0:0:0:0:0:0:101 #means all NTP servers in the same site as the  sender.
+
+myGroup := FF0E:0:0:0:0:0:0:101 #means all NTP servers in the internet.
+
+myGroup := FF00:0:0:0:0:0:0:0 #FF0Reserved Multicast Addresses:
+
+myGroup := FF01:0:0:0:0:0:0:1 #All Nodes Addresses:
+myGroup := FF02:0:0:0:0:0:0:1 #All Nodes Addresses:
+
+myGroup := FF01:0:0:0:0:0:0:2 #All Routers Addresses:
+myGroup := FF02:0:0:0:0:0:0:2 #All Routers Addresses:
+myGroup := FF05:0:0:0:0:0:0:2 #All Routers Addresses:
+
+myGroup := FF02:0:0:0:0:1:FF00:0000
+myGroup := FF02:0:0:0:0:1:FFFF:FFFF
+
+myGroup := 2001::/16
+myGroup := FF00::/8
+
+
+myGroup := b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.ARPA.
+
+[COMPONENTS]
+# This section consists of rules restricting the location of created PTCs.
+component := host1;
+${enum_identifier, identifier} := host1;
+* := host1;
+component := 1
+component := 1.0
+component := 1.0.0.0
+component := 1.0.0.0.0.0.0.0
+component := a.b.c.d.e.f
+component := ${enum_identifier, hostname}
+
+myComponent := FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
+myComponent := 1080:0:0:0:8:800:200C:417A
+myComponent := 1080:0:0:0:8:800:200C:417
+myComponent := FF01:0:0:0:0:0:0:101
+
+myComponent := 1080:0:0:0:8:800:200C:417A  #a unicast address
+myComponent :=  1080::8:800:200C:417A       #a unicast address
+
+myComponent := FF01:0:0:0:0:0:0:101        #a multicast address
+myComponent :=FF01::101                   #a multicast address
+
+myComponent := 0:0:0:0:0:0:0:1             #the loopback address
+myComponent := ::1                         #the loopback address
+
+myComponent := 0:0:0:0:0:0:0:0             #the unspecified addresses
+myComponent := ::                          #the unspecified addresses
+
+myComponent := 0:0:0:0:0:0:13.1.68.3
+myComponent := ::13.1.68.3
+
+myComponent := 0:0:0:0:0:FFFF:129.144.52.38
+myComponent := ::FFFF:129.144.52.38
+
+myComponent := 12AB:0000:0000:CD30:0000:0000:0000:0000/60  #should run legal!
+myComponent :=12AB:0:0:CD30::/60
+myComponent := 12AB:0:0:CD30::/60
+
+#The following are NOT legal representations of the above prefix: BUT they are eaten >(
+myComponent := 12AB:0:0:CD3/60   #may drop leading zeros, but not trailing zeros,within any 16-bit chunk of the address
+
+myComponent := 12AB::CD30/60     #address to left of "/" expands to 2AB:0000:0000:0000:0000:000:0000:CD30
+
+myComponent := 12AB::CD3/60      #address to left of "/" expands to 12AB:0000:0000:0000:0000:000:0000:0CD3
+
+myComponent := 12AB:0:0:CD30:123:4567:89AB:CDEF/60
+
+myComponent :=  FF01:0:0:0:0:0:0:101
+
+myComponent := FF02:0:0:0:0:0:0:101 #means all NTP servers on the same link as the sender.
+
+myComponent := FF05:0:0:0:0:0:0:101 #means all NTP servers in the same site as the  sender.
+
+myComponent := FF0E:0:0:0:0:0:0:101 #means all NTP servers in the internet.
+
+myComponent := FF00:0:0:0:0:0:0:0 #FF0Reserved Multicast Addresses:
+
+myComponent := FF01:0:0:0:0:0:0:1 #All Nodes Addresses:
+myComponent := FF02:0:0:0:0:0:0:1 #All Nodes Addresses:
+
+myComponent := FF01:0:0:0:0:0:0:2 #All Routers Addresses:
+myComponent := FF02:0:0:0:0:0:0:2 #All Routers Addresses:
+myComponent := FF05:0:0:0:0:0:0:2 #All Routers Addresses:
+
+myComponent := FF02:0:0:0:0:1:FF00:0000
+myComponent := FF02:0:0:0:0:1:FFFF:FFFF
+
+myComponent := 2001::/16
+myComponent := FF00::/8
+
+
+myComponent := b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.ARPA.
+
+[MAIN_CONTROLLER]
+TCPPort := 5555
+# It's not necessary to give a full pattern for IPv6 addresses, the pattern
+# was not full for even IPv4.  E.g. `LocalAddress := 1.1.localhost.1' is
+# possible, but invalid.  It's not checked by the parser.
+
+LocalAddress := ::1  #fe80::c002:37ff:fe6c:0%fastethernet0/0
+
+#based on http://tools.ietf.org/html/rfc3513
+
+LocalAddress := FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
+LocalAddress := 1080:0:0:0:8:800:200C:417A
+LocalAddress := 1080:0:0:0:8:800:200C:417
+LocalAddress := FF01:0:0:0:0:0:0:101
+
+LocalAddress := 1080:0:0:0:8:800:200C:417A  #a unicast address
+LocalAddress :=  1080::8:800:200C:417A       #a unicast address
+
+LocalAddress := FF01:0:0:0:0:0:0:101        #a multicast address
+LocalAddress :=FF01::101                   #a multicast address
+
+LocalAddress := 0:0:0:0:0:0:0:1             #the loopback address
+LocalAddress := ::1                         #the loopback address
+
+LocalAddress := 0:0:0:0:0:0:0:0             #the unspecified addresses
+LocalAddress := ::                          #the unspecified addresses
+
+LocalAddress := 0:0:0:0:0:0:13.1.68.3
+LocalAddress := ::13.1.68.3
+
+LocalAddress := 0:0:0:0:0:FFFF:129.144.52.38
+LocalAddress := ::FFFF:129.144.52.38
+
+LocalAddress := 12AB:0000:0000:CD30:0000:0000:0000:0000/60  #should run legal!
+LocalAddress :=12AB:0:0:CD30::/60
+LocalAddress := 12AB:0:0:CD30::/60
+
+#The following are NOT legal representations of the above prefix: BUT they are eaten >(
+LocalAddress := 12AB:0:0:CD3/60   #may drop leading zeros, but not trailing zeros,within any 16-bit chunk of the address
+
+LocalAddress := 12AB::CD30/60     #address to left of "/" expands to 2AB:0000:0000:0000:0000:000:0000:CD30
+
+LocalAddress := 12AB::CD3/60      #address to left of "/" expands to 12AB:0000:0000:0000:0000:000:0000:0CD3
+
+LocalAddress := 12AB:0:0:CD30:123:4567:89AB:CDEF/60
+
+LocalAddress :=  FF01:0:0:0:0:0:0:101
+
+LocalAddress := FF02:0:0:0:0:0:0:101 #means all NTP servers on the same link as the sender.
+
+LocalAddress := FF05:0:0:0:0:0:0:101 #means all NTP servers in the same site as the  sender.
+
+LocalAddress := FF0E:0:0:0:0:0:0:101 #means all NTP servers in the internet.
+
+LocalAddress := FF00:0:0:0:0:0:0:0 #FF0Reserved Multicast Addresses:
+
+LocalAddress := FF01:0:0:0:0:0:0:1 #All Nodes Addresses:
+LocalAddress := FF02:0:0:0:0:0:0:1 #All Nodes Addresses:
+
+LocalAddress := FF01:0:0:0:0:0:0:2 #All Routers Addresses:
+LocalAddress := FF02:0:0:0:0:0:0:2 #All Routers Addresses:
+LocalAddress := FF05:0:0:0:0:0:0:2 #All Routers Addresses:
+
+LocalAddress := FF02:0:0:0:0:1:FF00:0000
+LocalAddress := FF02:0:0:0:0:1:FFFF:FFFF
+
+LocalAddress := 2001::/16
+LocalAddress := FF00::/8
+
+
+LocalAddress := b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.ARPA.
+
+
+[TESTPORT_PARAMETERS]
+mycomp1.myport.a := "1"
+
+[EXECUTE]
+ipv6.control