92 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
| init initNixExprHelpers
 | |
| 
 | |
| Pos | string int int | Pos |
 | |
| NoPos | | Pos |
 | |
| 
 | |
| Function | ATermList Expr Pos | Expr |
 | |
| Function1 | string Expr Pos | Expr |
 | |
| Assert | Expr Expr Pos | Expr |
 | |
| With | Expr Expr Pos | Expr |
 | |
| If | Expr Expr Expr | Expr |
 | |
| OpNot | Expr | Expr |
 | |
| OpEq | Expr Expr | Expr |
 | |
| OpNEq | Expr Expr | Expr |
 | |
| OpAnd | Expr Expr | Expr |
 | |
| OpOr | Expr Expr | Expr |
 | |
| OpImpl | Expr Expr | Expr |
 | |
| OpUpdate | Expr Expr | Expr |
 | |
| SubPath | Expr Expr | Expr |
 | |
| OpHasAttr | Expr string | Expr |
 | |
| OpPlus | Expr Expr | Expr |
 | |
| OpConcat | Expr Expr | Expr |
 | |
| ConcatStrings | ATermList | Expr |
 | |
| Call | Expr Expr | Expr |
 | |
| Select | Expr string | Expr |
 | |
| Var | string | Expr |
 | |
| Int | int | Expr |
 | |
| 
 | |
| # Strings in the evaluator carry a so-called `context' (the ATermList)
 | |
| # which is a list of strings representing store paths.  This is to
 | |
| # allow users to write things like
 | |
| #
 | |
| #   "--with-freetype2-library=" + freetype + "/lib"
 | |
| #
 | |
| # where `freetype' is a derivation (or a source to be copied to the
 | |
| # store).  If we just concatenated the strings without keeping track
 | |
| # of the referenced store paths, then if the string is used as a
 | |
| # derivation attribute, the derivation will not have the correct
 | |
| # dependencies in its inputDrvs and inputSrcs.
 | |
| #
 | |
| # The semantics of the context is as follows: when a string with
 | |
| # context C is used as a derivation attribute, then the derivations in
 | |
| # C will be added to the inputDrvs of the derivation, and the other
 | |
| # store paths in C will be added to the inputSrcs of the derivations.
 | |
| #
 | |
| # For canonicity, the store paths should be in sorted order.
 | |
| Str | string ATermList | Expr |
 | |
| Str | string | Expr | ObsoleteStr
 | |
| 
 | |
| # A path is a reference to a file system object that is to be copied
 | |
| # to the Nix store when used as a derivation attribute.  When it is
 | |
| # concatenated to a string (i.e., `str + path'), it is also copied and
 | |
| # the resulting store path is concatenated to the string (with the
 | |
| # store path in the context).  If a string or path is concatenated to
 | |
| # a path (i.e., `path + str' or `path + path'), the result is a new
 | |
| # path (if the right-hand side is a string, the context must be
 | |
| # empty).
 | |
| Path | string | Expr |
 | |
| 
 | |
| List | ATermList | Expr |
 | |
| BlackHole | | Expr |
 | |
| Undefined | | Expr |
 | |
| Removed | | Expr |
 | |
| PrimOp | int ATermBlob ATermList | Expr |
 | |
| Attrs | ATermList | Expr |
 | |
| Closed | Expr | Expr |
 | |
| Rec | ATermList ATermList | Expr |
 | |
| Bool | ATerm | Expr |
 | |
| Null | | Expr |
 | |
| 
 | |
| Bind | string Expr Pos | ATerm |
 | |
| Bind | string Expr | ATerm | ObsoleteBind
 | |
| Inherit | Expr ATermList Pos | ATerm |
 | |
| 
 | |
| Scope | | Expr |
 | |
| 
 | |
| Formal | string ValidValues DefaultValue | ATerm |
 | |
| 
 | |
| ValidValues | ATermList | ValidValues |
 | |
| UnrestrictedValues | | ValidValues |
 | |
| 
 | |
| DefaultValue | Expr | DefaultValue |
 | |
| NoDefaultValue | | DefaultValue |
 | |
| 
 | |
| True | | ATerm |
 | |
| False | | ATerm |
 | |
| 
 | |
| PrimOpDef | int ATermBlob | ATerm |
 | |
| 
 | |
| AttrRHS | Expr Pos | ATerm |
 | |
| 
 | |
| eTrue = makeBool(makeTrue())
 | |
| eFalse = makeBool(makeFalse())
 |