Anchor regex meta-rules.
This commit is contained in:
parent
75d67f9fdb
commit
ccd90668b9
2 changed files with 3 additions and 1 deletions
|
|
@ -58,6 +58,8 @@ improvements.
|
||||||
`-p=1` if this is the case.
|
`-p=1` if this is the case.
|
||||||
1. Use Go regular expressions, which are perl-like. The original mk used plan9
|
1. Use Go regular expressions, which are perl-like. The original mk used plan9
|
||||||
regex, which few people know or care to learn.
|
regex, which few people know or care to learn.
|
||||||
|
1. Regex matches are substituted into rule prerequisites with `$stem1`,
|
||||||
|
`$stem2`, etc, rather than `\1`, `\2`, etc.
|
||||||
1. Allow blank lines in recipes. A recipe is any indented block of text, and
|
1. Allow blank lines in recipes. A recipe is any indented block of text, and
|
||||||
continues until a non-indented character or the end of the file. (Similar
|
continues until a non-indented character or the end of the file. (Similar
|
||||||
to blocks in Python.)
|
to blocks in Python.)
|
||||||
|
|
|
||||||
2
parse.go
2
parse.go
|
|
@ -308,7 +308,7 @@ func parseRecipe(p *parser, t token) parserStateFun {
|
||||||
r.targets = append(r.targets, pattern{spat: targetstr})
|
r.targets = append(r.targets, pattern{spat: targetstr})
|
||||||
|
|
||||||
if r.attributes.regex {
|
if r.attributes.regex {
|
||||||
rpat, err := regexp.Compile(targetstr)
|
rpat, err := regexp.Compile("^" + targetstr + "$")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := fmt.Sprintf("invalid regular expression: %q", err)
|
msg := fmt.Sprintf("invalid regular expression: %q", err)
|
||||||
p.basicErrorAtToken(msg, p.tokenbuf[k])
|
p.basicErrorAtToken(msg, p.tokenbuf[k])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue