Учебники

Rexx — Разбор

Одна из самых мощных функций Rexx — это возможность разбирать текстовые значения. Вы, вероятно, не увидите этого на других языках программирования.

Общий формат оператора разбора следующий:

Синтаксис

PARSE {UPPER|LOWER|CASELESS} source {template} 

Куда,

  • UPPER — перед преобразованием источник преобразуется в верхний регистр.

  • LOWER — перед преобразованием источник преобразуется в нижний регистр.

  • CASELESS — при передаче этого параметра корпус игнорируется.

  • источник — это источник, который необходимо проанализировать. Для этого есть много вариантов, и может быть один из следующих:

    • ARG — Аргументы для программы или процедуры могут использоваться в качестве источника.

    • LINEIN — В качестве источника можно использовать ввод следующей строки.

    • ИСТОЧНИК — Исходная информация о программе может быть использована в качестве источника.

    • VAR name — в качестве источника можно использовать значение имени переменной.

  • template — этот параметр указывает, как анализировать источник. Есть много вариантов для этого. Некоторые из них упомянуты ниже.

    • имя переменной — это значение, присвоенное переменной.

    • буквальная строка — буквальная строка, которая может использоваться в качестве шаблона для разделения нити.

    • # — Абсолютная позиция символа в самом источнике. Поэтому, если вы укажете значение 5, будет использоваться 5- й символ.

    • + # — Относительная позиция символа в самом источнике. Поэтому, если вы укажете значение 5, 5- й символ будет использоваться относительно.

UPPER — перед преобразованием источник преобразуется в верхний регистр.

LOWER — перед преобразованием источник преобразуется в нижний регистр.

CASELESS — при передаче этого параметра корпус игнорируется.

источник — это источник, который необходимо проанализировать. Для этого есть много вариантов, и может быть один из следующих:

ARG — Аргументы для программы или процедуры могут использоваться в качестве источника.

LINEIN — В качестве источника можно использовать ввод следующей строки.

ИСТОЧНИК — Исходная информация о программе может быть использована в качестве источника.

VAR name — в качестве источника можно использовать значение имени переменной.

template — этот параметр указывает, как анализировать источник. Есть много вариантов для этого. Некоторые из них упомянуты ниже.

имя переменной — это значение, присвоенное переменной.

буквальная строка — буквальная строка, которая может использоваться в качестве шаблона для разделения нити.

# — Абсолютная позиция символа в самом источнике. Поэтому, если вы укажете значение 5, будет использоваться 5- й символ.

+ # — Относительная позиция символа в самом источнике. Поэтому, если вы укажете значение 5, 5- й символ будет использоваться относительно.

Давайте рассмотрим простой пример того, как можно выполнить синтаксический анализ в Rexx.

пример

Live Demo

/* Main program */ 
parse value 'This is a Tutorial' with word1 word2 word3 word4 
say "'"word1"'" 
say "'"word2"'" 
say "'"word3"'" 
say "'"word4"'" 

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

Функция синтаксического анализа используется в Rexx, чтобы получить строковое значение и затем разбить их на слова. В приведенном выше примере слова затем разделяются и затем сохраняются в слове переменных.

Результат вышеупомянутой программы будет следующим:

'This' 
'is' 
'a' 
'Tutorial' 

Другой пример синтаксического анализа показан в следующей программе. На этот раз мы используем предложение while для анализа.

пример

Live Demo

/* Main program */ 
phrase = 'This is a Tutorial' 

do while phrase <> '' 
   parse var phrase word phrase 
   say "'"word"'" 
   end 

Вышеуказанная программа даст следующий вывод —

'This' 
'is' 
'a' 
'Tutorial' 

Позиционный анализ

Rexx также позволяет работать с позиционным анализом. Давайте посмотрим пример того, как мы можем добиться позиционного анализа с помощью оператора parse.

пример

Live Demo

/* Main program */ 
testString = "Doe       John M.   03/03/78  Mumbai              India"; 
parse var testString name1 11 name2 21 birthday 31 town 51 country 
say name1 
say name2 
say birthday 
say town 
say country

Из приведенного выше примера вы можете заметить, что наряду с именем переменной мы также указываем, где должна заканчиваться строка. Таким образом, для name1 мы должны заканчиваться 11-м символом и затем начинать синтаксический анализ name2.

Вывод вышеуказанной программы будет следующим:

Doe 
John M. 
03/03/78 
Mumbai 
India

В этом случае вы также можете использовать относительный позиционный анализ .

пример

Live Demo

/* Main program */ 
testString = "Doe       John M.   03/03/78  Mumbai              India"; 
parse var testString name1 +10 name2 +10 birthday +10 town +20 country 
say name1 
say name2 
say birthday 
say town 
say country

Вывод вышеуказанной программы будет таким, как показано ниже.