static String HardwareLiteral (String toParse, String label, byte wordLength)
	{
		byte decimalValue = 0;
		byte labelLength;
		byte significance;
		String binary32;
		StringBuffer expression;
		
		labelLength = (byte)label.length();
		
		if (toParse.startsWith(label))
		{
			try
			{
				decimalValue = Byte.parseByte(toParse.substring(labelLength));
				
				if (decimalValue > -1) //Not checking for upper bound 2^wordLength
				{
					expression = new StringBuffer (6);
					binary32 = Integer.toBinaryString(decimalValue);
					significance = (byte)binary32.length();
					
					if (significance > wordLength)  //Too big to be represented.
					{
						throw new IllegalArgumentException ("Integer overflow; Value does not fit "+wordLength+" bits.");
					}
					else
					{
						//Append wordLength - significance '0's to expression.
						for (int i = wordLength - significance; i > 0; i--)
							expression.append('0');
						
						//Append binary32 to expression.
						expression.append(binary32);
					}
					
					//Append 6-wordLength 1's to expression.
					for (int i = wordLength; i < 6; i++)
						expression.append('1');
				}
				else  //Negative numbers cannot be handled.
				{
					ErrorLog.addError(toParse + ": Cannot parse a negative number");
					expression = new StringBuffer ("Error!");
				}
				
			}
			catch (NumberFormatException e)
			{
				ErrorLog.debug ("Parse error on " + toParse);
				ErrorLog.addError ("Parse error on " + toParse + e.toString());
				expression = new StringBuffer ("Error!");
			}
		}
		else
		{
			expression = new StringBuffer ("Error!");
			ErrorLog.debug ("Invalid term label; " + label);
			ErrorLog.addError(toParse + " is not labelled " + label);
		}
		
		return expression.toString();
	}