60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
|
MAKEFILE:
|
||
|
=========
|
||
|
|
||
|
<makefile> ::= '(' + "makefile" + <makerule-clause>* + ')'
|
||
|
|
||
|
<makerule-clause> ::= <rule-clause>
|
||
|
| <md5-clause>
|
||
|
| <always-clause>
|
||
|
| <once-clause>
|
||
|
|
||
|
<rule-clause> ::= '(' + <rule-clause-identifier>
|
||
|
+ <target-spec>
|
||
|
+ <prereq-spec>
|
||
|
+ <action-spec> + ')'
|
||
|
|
||
|
<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> + ')'
|
||
|
|
||
|
<rule-clause-identifier> ::= "rule"
|
||
|
| "makefile-rule"
|
||
|
| "is-out-of-date?"
|
||
|
|
||
|
<md5-clause-identifier> ::= "md5"
|
||
|
| "rule-md5"
|
||
|
| "fp-changed?"
|
||
|
|
||
|
<always-clause-identifier> ::= "always"
|
||
|
| "rule-always"
|
||
|
| "phony"
|
||
|
| "is-out-of-date!"
|
||
|
|
||
|
<once-clause-identifier> ::= "once"
|
||
|
| "rule-once"
|
||
|
|
||
|
<target-spec> ::= <target> | <target-list>
|
||
|
<target> ::= <filename>
|
||
|
<target-list> ::= '(' + <filename>+ + ')'
|
||
|
|
||
|
<prereq-spec> ::= <prereq> | <prereq-list>
|
||
|
<prereq> ::= <filename>
|
||
|
<prereq-list> ::= '(' + <filename>* + ')'
|
||
|
|
||
|
<action-spec> ::= <action> | <action-list>
|
||
|
<action> ::= '(' + <thunk>* + ')'
|
||
|
<action-list> ::= '(' + <action>+ + ')'
|
||
|
|
||
|
<filename> ::= '"' + {<dir-separator> + { 'a'-'z''A'-'Z''0'-'9' ... }+ }+ + '"'
|