aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/lexer.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-10-22 11:59:20 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:34 +0200
commit31e16a7413813293e3cccb6799eaa08b7af5af4e (patch)
tree45f06abbcf44652b58c3a2ad7485f64108994abd /build2/test/script/lexer.cxx
parent8e3a8ffa6579a51f5a9351e1b99c07d3e1fbd234 (diff)
Implement support for compound tests
Diffstat (limited to 'build2/test/script/lexer.cxx')
-rw-r--r--build2/test/script/lexer.cxx26
1 files changed, 19 insertions, 7 deletions
diff --git a/build2/test/script/lexer.cxx b/build2/test/script/lexer.cxx
index 5061a1d..2192f35 100644
--- a/build2/test/script/lexer.cxx
+++ b/build2/test/script/lexer.cxx
@@ -26,24 +26,24 @@ namespace build2
{
case lexer_mode::script_line:
{
- s1 = "=!|&<> $(#\t\n";
- s2 = "== ";
+ s1 = ";=!|&<> $(#\t\n";
+ s2 = " == ";
break;
}
case lexer_mode::assign_line:
{
// As script_line but with variable assignments.
//
- s1 = "=+!|&<> $(#\t\n";
- s2 = " == ";
+ s1 = ";=+!|&<> $(#\t\n";
+ s2 = " == ";
break;
}
case lexer_mode::variable_line:
{
- // Like value except we don't recognize {.
+ // Like value except we recognize ';' and don't recognize '{'.
//
- s1 = " $([]#\t\n";
- s2 = " ";
+ s1 = "; $([]#\t\n";
+ s2 = " ";
break;
}
@@ -159,6 +159,18 @@ namespace build2
}
}
+ // Line separators.
+ //
+ if (m == lexer_mode::script_line ||
+ m == lexer_mode::assign_line ||
+ m == lexer_mode::variable_line)
+ {
+ switch (c)
+ {
+ case ';': return make_token (type::semi);
+ }
+ }
+
// Command line operator/separators.
//
if (m == lexer_mode::script_line || m == lexer_mode::assign_line)