aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/parser.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2019-11-14 12:55:54 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2019-11-14 13:20:08 +0200
commit5ec57d68a5205173a02c34a24d7129347d43196c (patch)
tree303de46753bcde9f9ccff094d6591b6bb7583931 /libbuild2/parser.hxx
parent62a688e3fd7d1fdb8ce5590ebe9cb99e90cbe5d7 (diff)
Tighten up attribute recognition during parsing
Now it should be possible to use `[]` for wildcard patterns, for example: foo = foo.[hit]xx Note that a leading bracket expression will still be recognized as attributes and escaping or quoting it will inhibit pattern matching. To resolve this case we need to specify an empty attribute list: foo = [] [abc]-foo.cxx
Diffstat (limited to 'libbuild2/parser.hxx')
-rw-r--r--libbuild2/parser.hxx11
1 files changed, 9 insertions, 2 deletions
diff --git a/libbuild2/parser.hxx b/libbuild2/parser.hxx
index d82496d..b07936c 100644
--- a/libbuild2/parser.hxx
+++ b/libbuild2/parser.hxx
@@ -535,8 +535,8 @@ namespace build2
lexer_->mode (m, ps);
else
// As a sanity check, make sure the mode matches the next token. Note
- // that we don't check the pair separator since it can be overriden by
- // the lexer's mode() implementation.
+ // that we don't check the attributes flags or the pair separator
+ // since they can be overridden by the lexer's mode() implementation.
//
assert (replay_i_ != replay_data_.size () &&
replay_data_[replay_i_].mode == m);
@@ -555,6 +555,13 @@ namespace build2
}
void
+ enable_attributes ()
+ {
+ if (replay_ != replay::play)
+ lexer_->enable_attributes ();
+ }
+
+ void
expire_mode ()
{
if (replay_ != replay::play)