View on GitHub

Concert

Concert is an imperative, concurrent, strongly typed scripting language

Download this project as a .zip file Download this project as a tar.gz file

Home

Code examples

function reverseString : string as input;
	string reversed = "";
	string strTmp;
	int len;

	call length : input -> len;
	len -= 1;

	while len >= 0;
		call char_at : input, len -> strTmp;
		reversed += strTmp;
		len -= 1;
	end;
return reversed;

function startsWith : string as input, string as startStr;
	string firstChars;
	int len;
	string strTmp;
	int index = 0;
	
	call length : startStr -> len;
	
	while len > 0;
		call char_at : input, index -> strTmp;
		firstChars += strTmp;
		len -= 1;
		index += 1;
	end;
	
	int toReturn;
	
	if firstChars == startStr;
		toReturn = 1;
	else;
		toReturn = 0;
	end;
return toReturn;

function endsWith : string as input, string as startStr;
	string firstChars;
	int lenStr;
	int lenInput;
	int start;
	string strTmp;
	
	call length : startStr -> lenStr;
	call length : input -> lenInput;
	
	lenInput -= lenStr;
	
	start = lenInput;
	call length : input -> lenInput;
	
	while start < lenInput;
		call char_at : input, start -> strTmp;
		firstChars += strTmp;
		start += 1;
	end;
	
	int toReturn;
	
	if firstChars == startStr;
		toReturn = 1;
	else;
		toReturn = 0;
	end;
return toReturn;

function substring : string as input, int as start, int as endIndex;
	string substr = "";
	string strTmp;

	while start < endIndex;
		call char_at : input, start -> strTmp;
		substr += strTmp;
		start += 1;
	end;
return substr;

function indexOf : string as input, string as substr;
	int index = -1;
	int len;
	int inputLen;
	string tmp;
	
	call length : substr -> len;
	call length : input -> inputLen;
	
	int startIndex = 0;
	int endIndex = len;

	inputLen -= len;

	while endIndex <= inputLen;
		call substring : input, startIndex, endIndex -> tmp;

		if tmp == substr;
			index = startIndex;
			index -= 1;
			
			break 2;
		end;
		
		startIndex += 1;
		endIndex += 1;
	end;
return index;

function lastIndexOf : string as input, string as substr;
	int index = -1;
	int len;
	int inputLen;
	string tmp;
	
	call length : substr -> len;
	call length : input -> inputLen;
	
	int startIndex = 0;
	int endIndex = len;

	inputLen -= len;

	while endIndex <= inputLen;
		call substring : input, startIndex, endIndex -> tmp;

		if tmp == substr;
			index = startIndex;
			index -= 1;
		end;
		
		startIndex += 1;
		endIndex += 1;
	end;
return index;

function replaceAll : string as input, string as substr, string as toReplace;
	int lenSubstr;
	int len;
	
	call length : substr -> lenSubstr;
	call length : input -> len;
	
	int start = 0;
	int endIndex = lenSubstr;
	
	string replaced = "";
	string tmp;

	int replacedLast = 0;
	int lastIndex = 0;
	int replacedLastIndex = len;
	replacedLastIndex -= lenSubstr;
	
	while endIndex <= len;
		call substring : input, start, endIndex -> tmp;
		lastIndex = start;
		
		if tmp == substr;
			start += lenSubstr;
			endIndex += lenSubstr;
			
			replaced += toReplace;
			
			if lastIndex == replacedLastIndex;
				replacedLast = 1;
			end;
		else;
			call char_at : input, start -> tmp;
			replaced += tmp;
			
			start += 1;
			endIndex += 1;
		end;
	end;
	
	if replacedLast == 0;
		start = lastIndex;
	end;
	
	while start < len;
		call char_at : input, start -> tmp;
		replaced += tmp;
			
		start += 1;
	end;
return replaced;

function replaceFirst : string as input, string as substr, string as toReplace;
	int lenSubstr;
	int len;
	
	call length : substr -> lenSubstr;
	call length : input -> len;
	
	int start = 0;
	int endIndex = lenSubstr;
	
	string replaced = "";
	string tmp;

	int replacedFirst = 0;
	
	int replacedLast = 0;
	int lastIndex = 0;
	int replacedLastIndex = len;
	replacedLastIndex -= lenSubstr;
	
	while endIndex <= len;
		call substring : input, start, endIndex -> tmp;
		lastIndex = start;
		
		if tmp == substr;
			start += lenSubstr;
			endIndex += lenSubstr;
			
			if replacedFirst == 0;
				replaced += toReplace;
				replacedFirst = 1;
				
				break 3;
			end;
		else;
			call char_at : input, start -> tmp;
			replaced += tmp;
			
			start += 1;
			endIndex += 1;
		end;
	end;
	
	if replacedLast == 0;
		start = lastIndex;
	end;
	
	while start < len;
		call char_at : input, start -> tmp;
		replaced += tmp;
			
		start += 1;
	end;
return replaced;

function convertIntToBase : int as input, int as newBase;
	string strValue = "";
	string strTmp;
	
	int inputCopy = input;
	
	while input > 0;
		inputCopy = input % newBase;
		input /= newBase;
		
		call int_to_string : inputCopy -> strTmp;
		strValue += strTmp;
		
		inputCopy = input;
	end;
	
	string reversed;
	call reverseString : strValue -> reversed;
return reversed;

function convertIntToHex : int as input, int as newBase;
	string strValue = "";
	string strTmp;
	
	int inputCopy = input;
	
	while input > 0;
		inputCopy = input % newBase;
		input /= newBase;
		
		call int_to_string : inputCopy -> strTmp;
			
		int tmpInt;
		call to_int : strTmp -> tmpInt;
								
		if tmpInt < 10;
			strValue += strTmp;
		else;						
			if strTmp == "10";
				strValue += "a";
			else;
				if strTmp == "11";
					strValue += "b";
				else;
					if strTmp == "12";
						strValue += "c";
					else;
						if strTmp == "13";
							strValue += "d";
						else;
							if strTmp == "14";
								strValue += "e";
							else;
								if strTmp == "15";
									strValue += "f";
								else;								
									
								end;
							end;
						end;
					end;
				end;
			end;
		end;
		
		inputCopy = input;
	end;
	
	string reversed;
	call reverseString : strValue -> reversed;
return reversed;