aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/parser
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-11-03 17:54:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:37 +0200
commit554475390b6d2912614778fe50788a09f99ac6a4 (patch)
tree2cc756aa363f0697291b4cbf8e7a9365bf65629b /build2/test/script/parser
parent7ebe4aa8d07e8845f1669e2d43fbe6071d3ee463 (diff)
Implement testscript inclusion support
Diffstat (limited to 'build2/test/script/parser')
-rw-r--r--build2/test/script/parser14
1 files changed, 12 insertions, 2 deletions
diff --git a/build2/test/script/parser b/build2/test/script/parser
index 6e29c9a..b711676 100644
--- a/build2/test/script/parser
+++ b/build2/test/script/parser
@@ -65,6 +65,12 @@ namespace build2
optional<description>&&,
lines* = nullptr);
+ void
+ parse_directive_line (token&, token_type&);
+
+ void
+ perform_include (names, location);
+
bool
parse_variable_line (token&, token_type&);
@@ -104,19 +110,23 @@ namespace build2
protected:
using base_parser = build2::parser;
- lexer* lexer_;
script* script_;
- runner* runner_;
// Pre-parse state.
//
using id_map = std::unordered_map<string, location>;
+ using include_set = std::set<path>;
group* group_;
id_map* id_map_;
+ include_set* include_set_; // Testscripts already included in this
+ // scope. Must be absolute and normalized.
+ lexer* lexer_;
+ string id_prefix_; // Auto-derived id prefix.
// Parse state.
//
+ runner* runner_;
scope* scope_;
};
}