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' ... }+ }+ + '"'
 |