26.2.2. Синтаксический анализ командной строки

26.2.2. Синтаксический анализ командной строки

После того как приложение создаст poptContext, оно может приступить к синтаксическому анализу аргументов. Функция poptGetNextContext() выполняет синтаксический анализ аргумента.

#include <popt.h>

int poptGetNextOpt(poptContext con);

Принимая содержимое в качестве своего единственного аргумента, эта функция анализирует синтаксис следующего обнаруженного аргумента командной строки. После того как следующий аргумент будет обнаружен в таблице параметров, функция заполняет объект, на который указывает указатель arg элемента таблицы параметров, если только он не равен NULL. Если элемент val для параметра имеет ненулевое значение, функция возвращает это значение. В противном случае функция poptGetNextOpt() переходит к следующему аргументу.

Функция poptGetNextOpt() возвращает значение -1, если был проанализирован синтаксис последнего аргумента, и другие отрицательные значения в случае возникновения ошибки. Поэтому лучше всего присваивать элементам val в таблице параметров значения больше нуля.

Если все параметры командной строки обрабатываются через указатели arg, то синтаксический анализ командной строки сокращается до следующей строки кода:

rc = poptGetNextOpt(poptcon);

Тем не менее, для многих приложений требуется более сложный синтаксический анализ командной строки, нежели этот, и применяется показанная ниже структура.

while ((rc = poptGetNextOpt(poptcon)) > 0) {

 switch (rc) {

  /* здесь обрабатываются специфические аргументы */

 }

}

Во время обработки возвращенных параметров приложению необходимо знать значение каждого аргумента, который был определен после параметра. Это можно сделать двумя способами. Один из них заключается в том, чтобы popt присваивала переменной значение параметра из элементов arg таблицы параметров. Другой способ предусматривает применение функции poptGetOptArg().

#include <popt.h>

char * poptGetOptArg(poptContext con);

Эта функция возвращает аргумент, заданный для последнего параметра, возвращенного функцией poptGetNextOpt(), или возвращает значение NULL, если ни один из аргументов не был определен.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.1.6 Параметры командной строки

Из книги C++ автора Хилл Мюррей

3.1.6 Параметры командной строки После того, как программа была написана и оттестирована, я заметил, что часто набирать выражения на клавиатуре в стадартный ввод надоедает, поскольку обычно использование прораммы состоит в вычислении одного выражения. Если бы можно было


Синтаксический анализ выражений 

Из книги Давайте создадим компилятор! автора Креншоу Джек

Синтаксический анализ выражений  Начало Если вы прочитали введение, то вы уже в курсе дела. Вы также скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы готовы.Целью этой главы является обучение синтаксическому анализу и трансляции математических


Отладка с командной строки

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Отладка с командной строки Перед началом отладки приложения с помощью cordbg.exe следует сгенерировать отладочные символы для текущего приложения, указав для csc.exe флаг /debug. Например, чтобы сгенерировать данные отладки для приложения TestApp.exe, введите следующую команду.csc


Глава 26 Синтаксический анализ параметров командной строки

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

Глава 26 Синтаксический анализ параметров командной строки Многие Linux-программы позволяют задавать параметры командной строки. Эти параметры выполняют самые разнообразные функции, однако имеют практически одинаковую синтаксическую структуру. Короткие параметры


26.6. Синтаксический анализ строк аргументов

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

26.6. Синтаксический анализ строк аргументов Хотя библиотека popt обычно используется для синтаксического анализа аргументов, уже разделенных на массив вида argv, в некоторых программах необходимо анализировать синтаксис строк, формат которых идентичен командным строкам.


14.1. Синтаксический анализ простого документа XML

Из книги Реестр Windows 7 автора Климов Александр Петрович

14.1. Синтаксический анализ простого документа XML ПроблемаИмеется некоторая совокупность данных, хранимых в документе XML. Требуется выполнить синтаксический анализ документа и превратить эти данные в объекты C++. Документ XML имеет достаточно небольшой размер и может


Ключи командной строки

Из книги UNIX — универсальная среда программирования автора Пайк Роб

Ключи командной строки Большинству пользователей не нужно работать с интерфейсом командной строки, ключи предназначены для использования системными администраторами. С их помощью можно вручную установить или удалить Radmin, изменить номер порта, а также производить


Утилита командной строки REG.EXE

Из книги автора

Утилита командной строки REG.EXE Кроме редактора реестра, имеющего графический интерфейс, в составе Windows 7 имеется также утилита командной строки REG.EXE, предназначенная для опытных пользователей. С ее помощью можно создавать различные сценарии для выполнения различных


Переключатели командной строки

Из книги автора

Переключатели командной строки Требуются только начальные символы переключателей. Вы также можете набрать любую часть текста в квадратных скобках, показанного в табл. 37.1, включая полное название режима. Например, задание -n, -no, -noauto имеет одинаковый эффект.Таблица 37.1.