Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Eclipse Projects
Eclipse Titan
titan.core
Commits
9a9fb39b
Commit
9a9fb39b
authored
Dec 12, 2016
by
Botond Baranyi
Committed by
Gerrit Code Review
Dec 12, 2016
Browse files
Merge "Config file exclusive range and infinity fix"
parents
a908f98f
cf6dd6e8
Changes
5
Hide whitespace changes
Inline
Side-by-side
core/config_process.l
View file @
9a9fb39b
...
...
@@ -96,7 +96,7 @@ LINECOMMENT ("//"|"#")[^\r\n]*{NEWLINE}
NUMBER 0|([1-9][0-9]*)
FLOAT [+-]?({NUMBER}\.[0-9]+)|((({NUMBER}(\.[0-9]+)?)|(\.[0-9]+))[Ee][+-]?{NUMBER})|
infinity|
not_a_number
FLOAT [+-]?({NUMBER}\.[0-9]+)|((({NUMBER}(\.[0-9]+)?)|(\.[0-9]+))[Ee][+-]?{NUMBER})|not_a_number
BIN 0|1
BITSTRING '{BIN}*'B
...
...
core/config_process.y
View file @
9a9fb39b
...
...
@@ -63,6 +63,12 @@
#include "config_process.lex.hh"
#ifndef INFINITY
#include <float.h>
static const double INFINITY = (DBL_MAX*DBL_MAX);
#endif
extern void reset_config_process_lex(const char* fname);
extern void config_process_close();
extern int config_process_get_current_line();
...
...
@@ -387,13 +393,16 @@ ParameterNameSegment
%left '*' '/'
%left UnarySign
%expect
1
%expect
2
/*
1 conflict:
When seeing a '*' token after a module parameter expression the parser cannot
decide whether the token is a multiplication operator (shift) or it refers to
all modules in the next module parameter (reduce).
1 conflict:
infinity can be a float value in LengthMatch's upper bound (SimpleParameterValue)
or an infinityKeyword.
*/
%%
...
...
@@ -596,6 +605,10 @@ SimpleParameterValue:
{
$$ = new Module_Param_Float($1);
}
| InfinityKeyword
{
$$ = new Module_Param_Float(INFINITY);
}
| BooleanValue
{
$$ = new Module_Param_Boolean($1);
...
...
mctr2/cli/config_read.l
View file @
9a9fb39b
...
...
@@ -95,7 +95,7 @@ LINECOMMENT ("//"|"#")[^\r\n]*{NEWLINE}
NUMBER 0|([1-9][0-9]*)
FLOAT [+-]?({NUMBER}\.[0-9]+)|((({NUMBER}(\.[0-9]+)?)|(\.[0-9]+))[Ee][+-]?{NUMBER})|
infinity|
not_a_number
FLOAT [+-]?({NUMBER}\.[0-9]+)|((({NUMBER}(\.[0-9]+)?)|(\.[0-9]+))[Ee][+-]?{NUMBER})|not_a_number
BIN 0|1
BITSTRING '{BIN}*'B
...
...
mctr2/cli/config_read.y
View file @
9a9fb39b
...
...
@@ -233,7 +233,7 @@ MPNumber
%left '*' '/'
%left UnarySign
%expect
1
%expect
2
/*
Source of conflicts (1 S/R):
...
...
@@ -245,6 +245,9 @@ all modules in the next module parameter (reduce).
The built-in Bison behavior always chooses the shift over the reduce
(the * is interpreted as multiplication).
1 conflict:
infinity can be a float value in LengthMatch's upper bound (SimpleParameterValue)
or an infinityKeyword.
*/
%%
...
...
@@ -331,6 +334,7 @@ ParameterReference:
SimpleParameterValue:
MPNumber { BN_free($1); }
| MPFloat
| InfinityKeyword
| BooleanValue
| ObjIdValue
| VerdictValue
...
...
@@ -364,18 +368,35 @@ PatternChunk:
IntegerRange:
'(' '-' InfinityKeyword DotDot MPNumber ')' { BN_free($5); }
| '(' '-' InfinityKeyword DotDot '!' MPNumber ')' { BN_free($6); }
| '(' MPNumber DotDot MPNumber ')' { BN_free($2); BN_free($4); }
| '(' '!' MPNumber DotDot MPNumber ')' { BN_free($3); BN_free($5); }
| '(' MPNumber DotDot '!' MPNumber ')' { BN_free($2); BN_free($5); }
| '(' '!' MPNumber DotDot '!' MPNumber ')' { BN_free($3); BN_free($6); }
| '(' MPNumber DotDot InfinityKeyword ')' { BN_free($2); }
| '(' '!' MPNumber DotDot InfinityKeyword ')' { BN_free($3); }
;
FloatRange:
'(' '-' InfinityKeyword DotDot MPFloat ')'
| '(' '!' '-' InfinityKeyword DotDot MPFloat ')'
| '(' '-' InfinityKeyword DotDot '!' MPFloat ')'
| '(' '!' '-' InfinityKeyword DotDot '!' MPFloat ')'
| '(' MPFloat DotDot MPFloat ')'
| '(' '!' MPFloat DotDot MPFloat ')'
| '(' MPFloat DotDot '!' MPFloat ')'
| '(' '!' MPFloat DotDot '!' MPFloat ')'
| '(' MPFloat DotDot InfinityKeyword ')'
| '(' '!' MPFloat DotDot InfinityKeyword ')'
| '(' MPFloat DotDot '!' InfinityKeyword ')'
| '(' '!' MPFloat DotDot '!' InfinityKeyword ')'
;
StringRange:
'(' UniversalCharstringFragment DotDot UniversalCharstringFragment ')'
| '(' '!' UniversalCharstringFragment DotDot UniversalCharstringFragment ')'
| '(' UniversalCharstringFragment DotDot '!' UniversalCharstringFragment ')'
| '(' '!' UniversalCharstringFragment DotDot '!' UniversalCharstringFragment ')'
IntegerValue:
Number { $$ = $1; }
...
...
regression_test/templateExclusiveRange/Makefile
View file @
9a9fb39b
...
...
@@ -9,48 +9,57 @@
# Szabo, Bence Janos
#
##############################################################################
TOPDIR
:=
..
include
$(TOPDIR)/Makefile.regression
TOPDIR
:=
..
/
include
$(TOPDIR)/Makefile.regression
.SUFFIXES
:
.ttcn .hh
.PHONY
:
all clean dep run
FILES
:=
ExclusiveRangeTemplate.ttcn ExclusiveRangeTemplateMP.ttcn config.cfg
RUNNABLE
:=
ExclusiveRangeTemplate
CFG
:=
config.cfg
DIR_SINGLE
:=
dir_single_mode
DIR_PARALLEL
:=
dir_parallel_mode
GENERATED_DIRS
:=
$(DIR_SINGLE)
$(DIR_PARALLEL)
TTCN3_LIB
=
ttcn3
$(RT2_SUFFIX)$(DYNAMIC_SUFFIX)
TTCN3_MODULES
=
ExclusiveRangeTemplate.ttcn ExclusiveRangeTemplateMP.ttcn
GENERATED_SOURCES
=
$(TTCN3_MODULES:.ttcn=.cc)
GENERATED_HEADERS
=
$(GENERATED_SOURCES:.cc=.hh)
ifdef
CODE_SPLIT
GENERATED_SOURCES
:=
$(
foreach
file,
$(GENERATED_SOURCES:.cc=)
,
$(
addprefix
$(file)
, .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc
))
else
ifdef
SPLIT_TO_SLICES
POSTFIXES
:=
$(
foreach
file,
$(SPLIT_TO_SLICES)
,
$(
addsuffix
$(file)
, _part_
))
POSTFIXES
:=
$(
foreach
file,
$(POSTFIXES)
,
$(
addprefix
$(file)
, .cc
))
GENERATED_SOURCES2
:=
$(
foreach
file,
$(GENERATED_SOURCES:.cc=)
,
$(
addprefix
$(file)
,
$(POSTFIXES)
))
GENERATED_SOURCES
+=
$(GENERATED_SOURCES2)
COVERAGE_FLAG
:=
ifeq
($(COVERAGE), yes)
COVERAGE_FLAG
+=
-C
endif
OBJECTS
=
$(GENERATED_SOURCES:.cc=.o)
TARGET
=
ExclusiveRangeTemplate
$(EXESUFFIX)
ifdef
DYN
ifeq
($(PLATFORM), WIN32)
export
PATH
+=
:
$(TTCN3_DIR)
/lib:
$(ABS_SRC)
/
$(DIR_SINGLE)
:
$(ABS_SRC)
/
$(DIR_PARALLEL)
:
else
export
LD_LIBRARY_PATH
+=
:
$(ABS_SRC)
/
$(DIR_SINGLE)
:
$(ABS_SRC)
/
$(DIR_PARALLEL)
:
endif
endif
all
:
$(TARGET
)
MAKE_PROG
:=
$(MAKE
)
$(TARGET)
:
$(GENERATED_SOURCES) $(USER_SOURCES)
$(CXX)
$(CPPFLAGS)
$(CXXFLAGS)
$(LDFLAGS)
-o
$@
$^
-L
$(TTCN3_DIR)
/lib
-l
$(TTCN3_LIB)
-L
$(OPENSSL_DIR)
/lib
-lcrypto
$
(
$(PLATFORM)
_LIBS
)
# List of fake targets:
.PHONY
:
all clean run run_single run_parallel runall
.ttcn.cc .ttcn.hh
:
$(TTCN3_COMPILER)
$<
all
:
$(GENERATED_DIRS)
clean distclean
:
-
rm
-f
$(TARGET)
$(OBJECTS)
$(GENERATED_HEADERS)
\
$(GENERATED_SOURCES)
*
.log Makefile.bak
dir_single_mode
:
mkdir
$@
cd
$@
&&
for
file
in
$(FILES)
;
do
ln
-s
../
$$
file
||
exit
;
done
cd
$@
&&
$(TTCN3_DIR)
/bin/ttcn3_makefilegen
$(COVERAGE_FLAG)
$(SPLIT_FLAG)
$(RT2_FLAG)
-s
./
*
&&
$(MAKE_PROG)
dir_parallel_mode
:
mkdir
$@
cd
$@
&&
for
file
in
$(FILES)
;
do
ln
-s
../
$$
file
||
exit
;
done
cd
$@
&&
$(TTCN3_DIR)
/bin/ttcn3_makefilegen
$(COVERAGE_FLAG)
$(SPLIT_FLAG)
$(RT2_FLAG)
./
*
&&
$(MAKE_PROG)
dep
:
$(GENERATED_SOURCES)
makedepend
$(CPPFLAGS)
$(GENERATED_SOURCES)
run
:
$(GENERATED_DIRS)
cd
$(DIR_SINGLE)
&&
./
$(RUNNABLE)
$(CFG)
cd
$(DIR_PARALLEL)
&&
$(TTCN3_DIR)
/bin/ttcn3_start
$(RUNNABLE)
$(CFG)
run
:
$(TARGET) config.cfg
./
$^
# To run all tests, possibly in parallel
run_single
:
$(DIR_SINGLE)
cd
$(DIR_SINGLE)
&&
./
$(RUNNABLE)
$(CFG)
run_parallel
:
$(DIR_PARALLEL)
cd
$(DIR_PARALLEL)
&&
$(TTCN3_DIR)
/bin/ttcn3_start
$(RUNNABLE)
$(CFG)
runall
:
run_single run_parallel
.NOTPARALLEL
:
clean distclean
:
rm
-rf
$(GENERATED_DIRS)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment