Nix Language Reference
  
    Grammar
    
      Expressions
      
      
        Expr
        
          
        
      
      
      
        ExprFunction
        
          '{'  '}' ':' 
          |
          
        
      
      
      
        ExprAssert
        
          'assert'  ';' 
          |
          
        
      
      
      
        ExprIf
        
          'if'  'then' 
          'else' 
          |
          
        
      
      
      
        ExprOp
        
          '!' 
          |
           '==' 
          |
           '!=' 
          |
           '&&' 
          |
           '||' 
          |
           '->' 
          |
           '//' 
          |
           '~' 
          |
           '?' 
          |
          
        
      
      
      
        ExprApp
        
           '.' 
          |
          
        
      
      
      
        ExprSelect
        
           
          |
          
        
      
      
      
        ExprSimple
        
           |
           |
           |
           |
          
          |
          'true' | 'false' | 'null'
          |
          '('  ')'
          |
          '{' * '}'
          |
          'let' '{' * '}'
          |
          'rec' '{' * '}'
          |
          '[' * ']'
        
      
      
        Bind
        
           '='  ';'
          |
          'inherit' ('('  ')')? * ';'
        
      
      
        Formals
        
           ',' 
          | 
        
      
          
      
        Formal
        
          
          |
           '?' 
        
      
          
    
    
      Terminals
      
        Id
        [a-zA-Z\_][a-zA-Z0-9\_\']*
      
    
      
        Int
        [0-9]+
      
    
      
        Str
        \"[^\n\"]*\"
      
      
        Path
        [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
      
    
      
        Uri
        [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+
      
      
        Whitespace
        
          [ \t\n]+
          |
          \#[^\n]*
          |
          \/\*(.|\n)*\*\/