private Expression lang_tail(String id) {
		if (id.equals("true"))
		{
			return new Expression.BooleanConstant(true);
		}
		if (id.equals("false"))
		{
			return new Expression.BooleanConstant(false);
		}

		if (type == LEFT_BRACKET)
		{		
			Function result = null;
			if (funcHelper != null)
			{
				result = (Function)funcHelper.customize(id);
			}
			if (result != null)
			{
				match( LEFT_BRACKET );
				result.addArgument(expression_R_Logical_Or
				(
				expression_R_Logical_And
					(
					expression_R_Compare
						(
							expression_R(higher_expression())
						)
					)
				));
				for(;;)
				{
					if( type == RIGHT_BRACKET )
					{
						match( RIGHT_BRACKET );
						break;
					}
					match(PARAMETER_SEPERATOR);
					result.addArgument(expression_R_Logical_Or
				(
				expression_R_Logical_And
					(
					expression_R_Compare
						(
							expression_R(higher_expression())
						)
					)
				));	
				}
				return result;
			}

			return  expression_R_Logical_Or
				(
				expression_R_Logical_And
					(
					expression_R_Compare
						(
							expression_R(higher_expression())
						)
					)
				);
		}
		return new Expression.Variant(id);
	}