whole_func_string: function () {
  			var leftNode = this.parseConditionExpression();
  
  			while (this.currentToken.type == 'logic') {
  				var logic = this.currentToken.value;
  				this.readNextToken();
  
  				var rightNode = this.parseConditionExpression();
  
  				// If we are chaining the same logical operator, add nodes to existing object instead of creating another one
  				if (typeof leftNode.logic != 'undefined' && leftNode.logic == logic && typeof leftNode.terms != 'undefined') leftNode.terms.push(rightNode);
  				else {
  					var terms = [leftNode, rightNode];
  					leftNode = {'logic': logic, 'terms': terms.slice(0)};
  				}
  			}
  
  			return leftNode;
  		}
func_code_string: function () {
  			var leftNode = this.parseConditionExpression();
  
  			while (this.currentToken.type == 'logic') {
  				var logic = this.currentToken.value;
  				this.readNextToken();
  
  				var rightNode = this.parseConditionExpression();
  
  				// If we are chaining the same logical operator, add nodes to existing object instead of creating another one
  				if (typeof leftNode.logic != 'undefined' && leftNode.logic == logic && typeof leftNode.terms != 'undefined') leftNode.terms.push(rightNode);
  				else {
  					var terms = [leftNode, rightNode];
  					leftNode = {'logic': logic, 'terms': terms.slice(0)};
  				}
  			}
  
  			return leftNode;
  		}
func_documentation_string: Parse logical expressions (AND/OR)