aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/script
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-10-19 15:08:30 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:30 +0200
commit996136ec9b8d002b7f1cbd2d7eeac850a561143d (patch)
tree87bc68bfdf086191725fe211444f71ca4904f6fb /build2/test/script/script
parent56eb8c36b5b408e08760fa18cf893e5e8a613b7a (diff)
Implement two-stage testscript parsing
Diffstat (limited to 'build2/test/script/script')
-rw-r--r--build2/test/script/script19
1 files changed, 19 insertions, 0 deletions
diff --git a/build2/test/script/script b/build2/test/script/script
index 590013a..e3afbca 100644
--- a/build2/test/script/script
+++ b/build2/test/script/script
@@ -12,6 +12,8 @@
#include <build2/test/target>
+#include <build2/test/script/token> // replay_tokens
+
namespace build2
{
class target;
@@ -20,6 +22,18 @@ namespace build2
{
namespace script
{
+ // Pre-parse representation.
+ //
+ enum class line_type {variable, test};
+
+ struct line
+ {
+ line_type type;
+ replay_tokens tokens;
+ };
+
+ // Parse object model.
+ //
enum class redirect_type
{
none,
@@ -118,6 +132,11 @@ namespace build2
//
value&
append (const variable&);
+
+ // Pre-parse.
+ //
+ public:
+ vector<line> lines;
};
class script: public scope