diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2019-11-14 12:55:54 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2019-11-14 13:20:08 +0200 |
commit | 5ec57d68a5205173a02c34a24d7129347d43196c (patch) | |
tree | 303de46753bcde9f9ccff094d6591b6bb7583931 /libbuild2/parser.hxx | |
parent | 62a688e3fd7d1fdb8ce5590ebe9cb99e90cbe5d7 (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.hxx | 11 |
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) |