whole_func_string: function(abbr, options) {
  			options = options || {};
  			
  			var tree = parseAbbreviation(abbr);
  			
  			if (options.contextNode) {
  				// add info about context node –
  				// a parent XHTML node in editor inside which abbreviation is 
  				// expanded
  				tree._name = options.contextNode.name;
  				var attrLookup = {};
  				_.each(tree._attributes, function(attr) {
  					attrLookup[attr.name] = attr;
  				});
  				
  				_.each(options.contextNode.attributes, function(attr) {
  					if (attr.name in attrLookup) {
  						attrLookup[attr.name].value = attr.value;
  					} else {
  						attr = _.clone(attr);
  						tree._attributes.push(attr);
  						attrLookup[attr.name] = attr;
  					}
  				});
  			}
  			
  			
  			// apply preprocessors
  			_.each(preprocessors, function(fn) {
  				fn(tree, options);
  			});
  			
  			tree = squash(unroll(tree));
  			
  			// apply postprocessors
  			_.each(postprocessors, function(fn) {
  				fn(tree, options);
  			});
  			
  			return tree;
  		}
func_code_string: function(abbr, options) {
  			options = options || {};
  			
  			var tree = parseAbbreviation(abbr);
  			
  			if (options.contextNode) {
  				// add info about context node –
  				// a parent XHTML node in editor inside which abbreviation is 
  				// expanded
  				tree._name = options.contextNode.name;
  				var attrLookup = {};
  				_.each(tree._attributes, function(attr) {
  					attrLookup[attr.name] = attr;
  				});
  				
  				_.each(options.contextNode.attributes, function(attr) {
  					if (attr.name in attrLookup) {
  						attrLookup[attr.name].value = attr.value;
  					} else {
  						attr = _.clone(attr);
  						tree._attributes.push(attr);
  						attrLookup[attr.name] = attr;
  					}
  				});
  			}
  			
  			
  			// apply preprocessors
  			_.each(preprocessors, function(fn) {
  				fn(tree, options);
  			});
  			
  			tree = squash(unroll(tree));
  			
  			// apply postprocessors
  			_.each(postprocessors, function(fn) {
  				fn(tree, options);
  			});
  			
  			return tree;
  		}
func_documentation_string: Parses abbreviation into tree with respect of groups,
  text nodes and attributes. Each node of the tree is a single
  abbreviation. Tree represents actual structure of the outputted
  result
  @memberOf abbreviationParser
  @param {String} abbr Abbreviation to parse
  @param {Object} options Additional options for parser and processors
  
  @return {AbbreviationNode}