Process the command line arguments. The arguments are:
     * the table to generate random from;
     * -l (or --length) for the length of generated words (default: 10);
     * -p (or --prefix) for the maximum of prefixes to consider (default: 0);
     * -c (or --count) for the number of words to generate (default: 10);
     * -s (or --start) for generating only words starting in table;
     * -e (or --end) for generating only words ending in table;
     * -f (or --flatten) if the table must be flattened before generation.

def process_arguments():
    """
    Process the command line arguments. The arguments are:
     * the table to generate random from;
     * -l (or --length) for the length of generated words (default: 10);
     * -p (or --prefix) for the maximum of prefixes to consider (default: 0);
     * -c (or --count) for the number of words to generate (default: 10);
     * -s (or --start) for generating only words starting in table;
     * -e (or --end) for generating only words ending in table;
     * -f (or --flatten) if the table must be flattened before generation.
    """
    parser = argparse.ArgumentParser(description="Generate random words from "
                                                 "the given content",
                                     epilog="This script can generate random"
                                            "words from tables, trees or "
                                            "texts. If a tree is given, "
                                            "the length of the generated "
                                            "words depend on the tree. If a "
                                            "table is given, the table is "
                                            "used to generate words, except "
                                            "if --end option is given. If a "
                                            "text is given, "
                                            "the corresponding table is "
                                            "built, and also the tree if "
                                            "needed.")
    parser.add_argument("content", help="the content")
    parser.add_argument("--length", "-l", type=nonzero_natural, default=10,
                        dest="length", help="the length of generated words "
                                            "(default: 10)")
    parser.add_argument("--prefix", "-p", type=natural, default=0,
                        dest="prefix", help="if not 0, the maximum length of "
                                            "prefixes to consider when "
                                            "choosing the next character "
                                            "(default: 0)")
    parser.add_argument("--count", "-c", type=natural, default=10,
                        dest="count", help="the number of words to generate "
                                           "(default: 10)")
    parser.add_argument("--start", "-s", action="store_true", default=False,
                        dest="start", help="only starting words")
    parser.add_argument("--end", "-e", action="store_true", default=False,
                        dest="end", help="only ending words")
    parser.add_argument("--flatten", "-f", action="store_true", default=False,
                        dest="flatten", help="flatten the table")
    return parser.parse_args()