src/sap.ui.core/src/sap/ui/core/mvc/EventHandlerResolver.js
function parse(sValue) {
				sValue = sValue.trim();
				var oTokenizer = new JSTokenizer();
				var aResult = [];
				var sBuffer = "";
				var iParenthesesCounter = 0;

				oTokenizer.init(sValue, 0);
				for (;;) {
					var sSymbol = oTokenizer.next();
					if ( sSymbol === '"' || sSymbol === "'" ) {
						var pos = oTokenizer.getIndex();
						oTokenizer.string();
						sBuffer += sValue.slice(pos, oTokenizer.getIndex());
						sSymbol = oTokenizer.getCh();
					}
					if ( !sSymbol ) {
						break;
					}
					switch (sSymbol) {
						case "(":
							iParenthesesCounter++;
							break;
						case ")":
							iParenthesesCounter--;
							break;
					}

					if (sSymbol === ";" && iParenthesesCounter === 0) {
						aResult.push(sBuffer.trim());
						sBuffer = "";
					} else {
						sBuffer += sSymbol;
					}
				}

				if (sBuffer) {
					aResult.push(sBuffer.trim());
				}

				return aResult;
			}
function parse(sValue) {
				sValue = sValue.trim();
				var oTokenizer = new JSTokenizer();
				var aResult = [];
				var sBuffer = "";
				var iParenthesesCounter = 0;

				oTokenizer.init(sValue, 0);
				for (;;) {
					var sSymbol = oTokenizer.next();
					if ( sSymbol === '"' || sSymbol === "'" ) {
						var pos = oTokenizer.getIndex();
						oTokenizer.string();
						sBuffer += sValue.slice(pos, oTokenizer.getIndex());
						sSymbol = oTokenizer.getCh();
					}
					if ( !sSymbol ) {
						break;
					}
					switch (sSymbol) {
						case "(":
							iParenthesesCounter++;
							break;
						case ")":
							iParenthesesCounter--;
							break;
					}

					if (sSymbol === ";" && iParenthesesCounter === 0) {
						aResult.push(sBuffer.trim());
						sBuffer = "";
					} else {
						sBuffer += sSymbol;
					}
				}

				if (sBuffer) {
					aResult.push(sBuffer.trim());
				}

				return aResult;
			}
function parse ( sValue ) { sValue = sValue . trim ( ) ; var oTokenizer = new JSTokenizer ( ) ; var aResult = [ ] ; var sBuffer = "" ; var iParenthesesCounter = 0 ; oTokenizer . init ( sValue , 0 ) ; for ( ; ; ) { var sSymbol = oTokenizer . next ( ) ; if ( sSymbol === '"' || sSymbol === "'" ) { var pos = oTokenizer . getIndex ( ) ; oTokenizer . string ( ) ; sBuffer += sValue . slice ( pos , oTokenizer . getIndex ( ) ) ; sSymbol = oTokenizer . getCh ( ) ; } if ( ! sSymbol ) { break ; } switch ( sSymbol ) { case "(" : iParenthesesCounter ++ ; break ; case ")" : iParenthesesCounter -- ; break ; } if ( sSymbol === ";" && iParenthesesCounter === 0 ) { aResult . push ( sBuffer . trim ( ) ) ; sBuffer = "" ; } else { sBuffer += sSymbol ; } } if ( sBuffer ) { aResult . push ( sBuffer . trim ( ) ) ; } return aResult ; }
Parses and splits the incoming string into meaningful event handler definitions

Examples:

parse(".fnControllerMethod")
=> [".fnControllerMethod"]

parse(".doSomething('Hello World'); .doSomething2('string'); globalFunction")
=> [".doSomething('Hello World')", ".doSomething2('string')", "globalFunction"]

parse(".fnControllerMethod; .fnControllerMethod(${  path:'/someModelProperty', formatter: '.myFormatter', type: 'sap.ui.model.type.String'}    ); globalFunction")
=> [".fnControllerMethod", ".fnControllerMethod(${  path:'/someModelProperty', formatter: '.myFormatter', type: 'sap.ui.model.type.String'}    )", "globalFunction"]

@param [string] sValue - Incoming string
@return {string[]} - Array of event handler definitions
Parses and splits the incoming string into meaningful event handler definitions