Это больше о вызове программы, чем любой язык или парсер (хотя я уверен, что выбор библиотеки парсера может зависеть от этого). Смотрите, я использовал много утилит командной строки Linux. И есть некоторые очевидные закономерности; "-" предшествует одной букве для коротких опций, можно комбинировать несколько параметров, которые не принимают аргументы, "-" предшествует длинным версиям опций и т.д.
Однако в некоторых случаях капитализация используется для инвертирования опциона. Таким образом, "-d" может означать запуск в качестве демона, но "-D" должен быть запущен как демон. (Почему бы просто не опустить вариант, если вы этого не хотите? Это никогда не было ясно, но на самом деле оно довольно распространенное, поэтому я считаю, что должна быть какая-то причина.) Но в некоторых программах капитал - это совершенно не связанный с ним вариант; если '-d' запускается как демон, '-D' может включать режим отладки. За этим стоит какой-то главный принцип, и что лучше выбрать? Или мы просто имеем дело с "чем работает"?
Есть также некоторые команды, которые помимо опций (или вместо) с аргументами просто принимают одиночные аргументы. cp - хороший пример этого; кроме пары редко используемых переключений, последний аргумент, который он получает, считается назначенным, и любые аргументы между списком опций и пунктом назначения считаются источниками. Есть ли правило, когда "нормально" полагаться на такой порядок, вместо использования явных флажков опций с аргументами?