|
302 | 302 |
|
303 | 303 | КонецЕсли; |
304 | 304 |
|
| 305 | + СтрокаИспользования = СокрЛП(Спек); |
| 306 | + |
| 307 | + Если ПустаяСтрока(СтрокаИспользования) Тогда |
| 308 | + СтрокаИспользования = СформироватьСтандартнуюСтрокуИспользования(); |
| 309 | + СтрокаИспользования = СтрЗаменить(СтрокаИспользования, "-- ", ""); |
| 310 | + КонецЕсли; |
| 311 | + |
305 | 312 | ШаблонСтрокиИспользования = "Строка запуска: %1 %2 %3"; |
306 | 313 | Сообщить(СтрШаблон(ШаблонСтрокиИспользования, |
307 | 314 | ПутьИспользования, |
308 | | - СокрЛП(Спек), |
| 315 | + СтрокаИспользования, |
309 | 316 | СуффиксВложенныхКоманды)); |
310 | 317 |
|
311 | 318 | Сообщить(""); |
|
486 | 493 |
|
487 | 494 | Лог.Отладка("Входящий спек: %1", Спек); |
488 | 495 |
|
489 | | - Если ПустаяСтрока(Спек) Тогда |
490 | | - |
491 | | - Лог.Отладка("Количество опций строки: %1", Опции.Количество()); |
492 | | - Если Опции.Количество() > 0 Тогда |
493 | | - Спек = "[ОПЦИИ] "; |
494 | | - КонецЕсли; |
495 | | - |
496 | | - Если Аргументы.Количество() > 0 Тогда |
497 | | - Спек = Спек + "-- "; |
498 | | - КонецЕсли; |
499 | | - |
500 | | - Лог.Отладка("Количество аргументы строки: %1", Аргументы.Количество()); |
501 | | - Для каждого арг Из Аргументы Цикл |
| 496 | + СтрокаИспользования = Спек; |
502 | 497 |
|
503 | | - ИмяАргумента = арг.Ключ.Имя; |
504 | | - КлассАргумента = арг.Ключ; |
505 | | - |
506 | | - ДополнитьИмяАргументаМассива(ИмяАргумента, КлассАргумента); |
507 | | - ДополнитьИмяАргументаНеобязательного(ИмяАргумента, КлассАргумента); |
508 | | - |
509 | | - Лог.Отладка("Добавляю аргумет <%1> в спек <%2>", ИмяАргумента, Спек); |
510 | | - Спек = Спек + ИмяАргумента + " "; |
511 | | - |
512 | | - КонецЦикла; |
| 498 | + Если ПустаяСтрока(СтрокаИспользования) Тогда |
513 | 499 |
|
| 500 | + СтрокаИспользования = СформироватьСтандартнуюСтрокуИспользования(); |
| 501 | + |
514 | 502 | КонецЕсли; |
515 | 503 |
|
516 | 504 | Лог.Отладка("Разбираю строку использования с помощью лексера"); |
517 | 505 |
|
518 | | - Лексер = Новый Лексер(Спек).Прочитать(); |
| 506 | + Лексер = Новый Лексер(СтрокаИспользования).Прочитать(); |
519 | 507 | Если Лексер.ЕстьОшибка() Тогда |
520 | 508 | Лексер.ВывестиИнформациюОбОшибке(); |
521 | 509 | ВызватьИсключение "Ошибка разбора строки использования"; |
|
524 | 512 | ТокеныПарсера = Лексер.ПолучитьТокены(); |
525 | 513 |
|
526 | 514 | ПараметрыПарсера = Новый Структура; |
527 | | - ПараметрыПарсера.Вставить("Спек", Спек); |
| 515 | + ПараметрыПарсера.Вставить("Спек", СтрокаИспользования); |
528 | 516 | ПараметрыПарсера.Вставить("Опции", Опции); |
529 | 517 | ПараметрыПарсера.Вставить("Аргументы", Аргументы); |
530 | 518 | ПараметрыПарсера.Вставить("ОпцииИндекс", ОпцииИндекс); |
|
1107 | 1095 |
|
1108 | 1096 | #Область Вспомогательные_процедуры_и_функции |
1109 | 1097 |
|
| 1098 | +Функция СформироватьСтандартнуюСтрокуИспользования() |
| 1099 | + |
| 1100 | + СтандартнаяСтрокаИспользования = ""; |
| 1101 | + |
| 1102 | + Лог.Отладка("Количество опций строки: %1", Опции.Количество()); |
| 1103 | + Если Опции.Количество() > 0 Тогда |
| 1104 | + СтандартнаяСтрокаИспользования = "[ОПЦИИ] "; |
| 1105 | + КонецЕсли; |
| 1106 | + |
| 1107 | + Если Аргументы.Количество() > 0 Тогда |
| 1108 | + СтандартнаяСтрокаИспользования = СтандартнаяСтрокаИспользования + "-- "; |
| 1109 | + КонецЕсли; |
| 1110 | + |
| 1111 | + Лог.Отладка("Количество аргументы строки: %1", Аргументы.Количество()); |
| 1112 | + Для каждого арг Из Аргументы Цикл |
| 1113 | + |
| 1114 | + ИмяАргумента = арг.Ключ.Имя; |
| 1115 | + КлассАргумента = арг.Ключ; |
| 1116 | + |
| 1117 | + ДополнитьИмяАргументаМассива(ИмяАргумента, КлассАргумента); |
| 1118 | + ДополнитьИмяАргументаНеобязательного(ИмяАргумента, КлассАргумента); |
| 1119 | + |
| 1120 | + Лог.Отладка("Добавляю аргумет <%1> в спек <%2>", ИмяАргумента, СтандартнаяСтрокаИспользования); |
| 1121 | + СтандартнаяСтрокаИспользования = СтандартнаяСтрокаИспользования + ИмяАргумента + " "; |
| 1122 | + |
| 1123 | + КонецЦикла; |
| 1124 | + |
| 1125 | + Возврат СтандартнаяСтрокаИспользования; |
| 1126 | + |
| 1127 | +КонецФункции |
| 1128 | + |
| 1129 | + |
1110 | 1130 | Процедура ВывестиПутьПарсераВОтладке() |
1111 | 1131 |
|
1112 | 1132 | Если Лог.Уровень() = УровниЛога.Отладка Тогда |
|
0 commit comments