128 lines
4.1 KiB
Plaintext
128 lines
4.1 KiB
Plaintext
MAKEFILE:
|
|
=========
|
|
|
|
<makefile> ::= '(' + "makefile" + <makerule-clause>* + ')'
|
|
|
|
<makerule-clause> ::= <file-clause>
|
|
| <all-clause>
|
|
| <md5-clause>
|
|
| <always-clause>
|
|
| <once-clause>
|
|
| <common-file-clause>
|
|
| <common-all-clause>
|
|
| <common-md5-clause>
|
|
| <common-always-clause>
|
|
| <common-once-clause>
|
|
|
|
<file-clause> ::= '(' + <fille-clause-identifier>
|
|
+ <target-spec>
|
|
+ <prereq-spec>
|
|
+ <action>+ + ')'
|
|
|
|
<all-clause> ::= '(' + <all-clause-identifier>
|
|
+ <target-spec>
|
|
+ <prereq-spec>
|
|
+ <action>+ + ')'
|
|
|
|
<md5-clause> ::= '(' + <md5-clause-identifier>
|
|
+ <target-spec>
|
|
+ <prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<always-clause> ::= '(' + <always-clause-identifier>
|
|
+ <target-spec>
|
|
+ <prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<once-clause> ::= '(' + <once-clause-identifier>
|
|
+ <target-spec>
|
|
+ <prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<file-clause-identifier> ::= "file"
|
|
| "makefile-rule"
|
|
| "is-out-of-date?"
|
|
|
|
<all-clause-identifier> ::= "all"
|
|
| "file-all"
|
|
| "all-out-of-date?"
|
|
|
|
<md5-clause-identifier> ::= "md5"
|
|
| "file-md5"
|
|
| "fp-changed?"
|
|
|
|
<always-clause-identifier> ::= "always"
|
|
| "file-always"
|
|
| "phony"
|
|
| "is-out-of-date!"
|
|
|
|
<once-clause-identifier> ::= "once"
|
|
| "file-once"
|
|
|
|
<common-file-clause> ::= '(' + <common-file-clause-identifier>
|
|
+ <common-target-spec>
|
|
+ <common-prereq-spec>
|
|
+ <action>+ + ')'
|
|
|
|
<common-all-clause> ::= '(' + <common-all-clause-identifier>
|
|
+ <common-target-spec>
|
|
+ <common-prereq-spec>
|
|
+ <action>+ + ')'
|
|
|
|
<common-md5-clause> ::= '(' + <common-md5-clause-identifier>
|
|
+ <common-target-spec>
|
|
+ <common-prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<common-always-clause> ::= '(' + <common-always-clause-identifier>
|
|
+ <common-target-spec>
|
|
+ <common-prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<common-once-clause> ::= '(' + <common-once-clause-identifier>
|
|
+ <common-target-spec>
|
|
+ <common-prereq-spec>
|
|
+ <action-spec> + ')'
|
|
|
|
<common-file-clause-identifier> ::= "common-file"
|
|
| "common-makefile-rule"
|
|
| "common-is-out-of-date?"
|
|
|
|
<common-all-clause-identifier> ::= "common-all"
|
|
| "common-file-all"
|
|
| "common-all-out-of-date?"
|
|
|
|
<common-md5-clause-identifier> ::= "common-md5"
|
|
| "common-file-md5"
|
|
| "common-fp-changed?"
|
|
|
|
<common-always-clause-identifier> ::= "common-always"
|
|
| "common-file-always"
|
|
|
|
<common-once-clause-identifier> ::= "common-once"
|
|
| "common-file-once"
|
|
|
|
<common-target-spec> ::= <target-descr> | <target> | <target-list>
|
|
<target-descr> ::= <target-pattern> | <target-rx>
|
|
<target-pattern> ::= '"' + <prefix> + '%' + <suffix> + '"'
|
|
<prefix> ::= <letter-or-digit>*
|
|
<suffix> ::= <letter-or-digit>*
|
|
<target-rx> ::= '(' + "rx" + '(' + <submatch-connector>
|
|
+ <submatch-clause>{3} + ')' + ')'
|
|
|
|
<common-prereq-spec> ::= <prereq-descr>
|
|
<prereq-pattern> ::= '"' + <prefix> + '%' + <suffix> + '"'
|
|
<prereq-descr> ::= '(' + { <prereq-pattern> | <prereq> }* + ')'
|
|
|
|
<target-spec> ::= <target> | <target-list>
|
|
<target> ::= <filename>
|
|
<target-list> ::= '(' + <filename>+ + ')'
|
|
|
|
<prereq-spec> ::= <prereq-list>
|
|
<prereq> ::= <filename>
|
|
<prereq-list> ::= '(' + <prereq>* + ')'
|
|
|
|
<action> ::= <function-call> | <value>
|
|
|
|
<filename> ::= '"' + {<dir-separator> + { 'a'-'z''A'-'Z''0'-'9' ... }+ }+ + '"'
|