EXM: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Dodane 59 bajtów ,  8 cze 2018
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
Linia 301: Linia 301:
Składnia: <code>EXM [ <tytuł_zbioru> [ , <tytuł_zbioru_zleceń> ]]</code>
Składnia: <code>EXM [ <tytuł_zbioru> [ , <tytuł_zbioru_zleceń> ]]</code>


'''<tytuł_zbioru>''' - tytuł poprawianego zbioru.
<code><tytuł_zbioru></code> - tytuł poprawianego zbioru.


Jeżeli wskazany zbiór istnieje, jest wczytywany do bufora roboczego. Bufor otrzymuje numer 0 i nazwę zgodną z tytułem wczytanego zbioru. Na monitor jest wyprowadzany komunikat:
Jeżeli wskazany zbiór istnieje, jest wczytywany do bufora roboczego. Bufor otrzymuje numer 0 i nazwę zgodną z tytułem wczytanego zbioru. Na monitor jest wyprowadzany komunikat:
Linia 313: Linia 313:
  *** NEW FILE ***
  *** NEW FILE ***


i edytor przechodzi do wczytywania wierszy z końcówki - wykonywane jest niejawne zlecenie A (II.5.2). Po wpisaniu wiersza zawierającego dc4 edytor kończy wprowadzanie i rozpoczyna edycję bufora. Wprowadzenie pustego zbioru (dc4 w pierwszym wierszu) powoduje usunięcie edytora z komunikatem:
i edytor przechodzi do wczytywania wierszy z końcówki - wykonywane jest niejawne zlecenie <code>A</code>. Po wpisaniu wiersza zawierającego '''dc4''' edytor kończy wprowadzanie i rozpoczyna edycję bufora. Wprowadzenie pustego zbioru ('''dc4''' w pierwszym wierszu) powoduje usunięcie edytora z komunikatem:


  EMPTY FILE
  EMPTY FILE
Linia 323: Linia 323:
Jeżeli nie jest podany tytuł zbioru, a istnieją zbiory EXMLIN i EXMOPI zawierające bufory robocze poprawiane w poprzedniej sesji edytora, EXM odtwarza ostatni zapamiętany stan edycji i wznawia poprawianie. Poprawiany bufor roboczy, wskaźnik dostępu, znaczniki wierszy, definicje zmiennych generacyjnych i opcje edycji są takie same jakie zostały zapamiętane w ostatniej edycji.
Jeżeli nie jest podany tytuł zbioru, a istnieją zbiory EXMLIN i EXMOPI zawierające bufory robocze poprawiane w poprzedniej sesji edytora, EXM odtwarza ostatni zapamiętany stan edycji i wznawia poprawianie. Poprawiany bufor roboczy, wskaźnik dostępu, znaczniki wierszy, definicje zmiennych generacyjnych i opcje edycji są takie same jakie zostały zapamiętane w ostatniej edycji.


'''<tytuł_zbioru_zleceń>'''
<code><tytuł_zbioru_zleceń></code>


Jeżeli tytuł zbioru zleceń jest podany, to po wczytaniu poprawianego zbioru do bufora roboczego będą wykonane zlecenia zapisane we wskazanym zbiorze. Po wykonaniu wszystkich zleceń ze zbioru zleceń lub po wykryciu błędnego zlecenia edytor przechodzi do pracy w trybie konwersacyjnym. Jeżeli wykonywanie zleceń zostało przerwane po wykryciu błędnego zlecenia, wykonanie pozostałych zleceń ze zbioru można wznowić zleceniem INT.
Jeżeli tytuł zbioru zleceń jest podany, to po wczytaniu poprawianego zbioru do bufora roboczego będą wykonane zlecenia zapisane we wskazanym zbiorze. Po wykonaniu wszystkich zleceń ze zbioru zleceń lub po wykryciu błędnego zlecenia edytor przechodzi do pracy w trybie konwersacyjnym. Jeżeli wykonywanie zleceń zostało przerwane po wykryciu błędnego zlecenia, wykonanie pozostałych zleceń ze zbioru można wznowić zleceniem INT.
Linia 335: Linia 335:
  NO WRITE AFTER LAST CHANGE : <zlecenie> ( ! OR CR) ?
  NO WRITE AFTER LAST CHANGE : <zlecenie> ( ! OR CR) ?


Po znaku zapytania należy wprowadzić znak ! - zlecenie zostanie wykonane, lub '''cr''' (return) - zlecenie nie będzie wykonane. Przed usunięciem stan edycji jest zapamiętywany w zbiorach roboczych EXMLIN i EXMOPI. Zachowywane są następujące elementy:
Po znaku zapytania należy wprowadzić znak '''!''' - zlecenie zostanie wykonane, lub '''cr''' (return) - zlecenie nie będzie wykonane. Przed usunięciem stan edycji jest zapamiętywany w zbiorach roboczych EXMLIN i EXMOPI. Zachowywane są następujące elementy:


* bufory robocze
* bufory robocze
Linia 361: Linia 361:
Składnia: <code>=<litera><łańcuch></code>
Składnia: <code>=<litera><łańcuch></code>


Działanie: zmiennej generacyjnej nazwanej pojedyncza literą (są 52 zmienne o nazwach A..Z i a..z) jest nadawana wartość: podany łańcuch. Pusty łańcuch usuwa dotychczasową definicję. Zmienne generacyjne mogą być użyte w dowolnym miejscu tekstu wprowadzanego z klawiatury. Znaki: ''\<litera>'' występujące w tekście i oznaczające zmienną generacyjną są zamieniane na łańcuch zdefiniowany zleceniem <code>=</code> (wstawiany tekst nie podlega makrorozwinięciu). Jeżeli wskazana zmienna generacyjna nie jest zdefiniowana, jej oznaczenie pozostaje w tekście bez zmian. Wartości zmiennych generacyjnych są listowane zleceniem <code>\</code>. Poza wymienionymi wyżej zmiennymi mogą być używane zmienne <code>-</code> i <code>=</code> określające znaczniki końca strony. Wiersz zawierający wyłącznie łańcuch zdefiniowany przez jedną z tych zmiennych kończy stronę. Z tym, że jeżeli łańcuch ten jest zdefiniowany zmienną <code>=</code> i kończona strona ma numer nieparzysty, to następna strona ma numer będący kolejną liczbą nieparzystą. Po wywołaniu edytora zmienna <code>-</code> ma wartość: '''ff''' (znacznik końca strony przyjmowany przez programy listujące DLIST i LIST), natomiast zmienna <code>=</code> jest niezdefiniowana. Zmienne <code>-</code> i <code>=</code> mogą być przedefiniowane tak jak inne zmienne, ale definicje te muszą być zawarte w zbiorze EXMINI. W tekstach wprowadzanych z klawiatury znaki \- i \= są rozwijane tak jak inne zmienne generacyjne, ale tylko wtedy, gdy opcja 'number' ma wartość PNU.
Działanie: zmiennej generacyjnej nazwanej pojedyncza literą (są 52 zmienne o nazwach A..Z i a..z) jest nadawana wartość: podany łańcuch. Pusty łańcuch usuwa dotychczasową definicję. Zmienne generacyjne mogą być użyte w dowolnym miejscu tekstu wprowadzanego z klawiatury. Znaki: '''\<litera>''' występujące w tekście i oznaczające zmienną generacyjną są zamieniane na łańcuch zdefiniowany zleceniem <code>=</code> (wstawiany tekst nie podlega makrorozwinięciu). Jeżeli wskazana zmienna generacyjna nie jest zdefiniowana, jej oznaczenie pozostaje w tekście bez zmian. Wartości zmiennych generacyjnych są listowane zleceniem <code>\</code>. Poza wymienionymi wyżej zmiennymi mogą być używane zmienne <code>-</code> i <code>=</code> określające znaczniki końca strony. Wiersz zawierający wyłącznie łańcuch zdefiniowany przez jedną z tych zmiennych kończy stronę. Z tym, że jeżeli łańcuch ten jest zdefiniowany zmienną <code>=</code> i kończona strona ma numer nieparzysty, to następna strona ma numer będący kolejną liczbą nieparzystą. Po wywołaniu edytora zmienna <code>-</code> ma wartość: '''ff''' (znacznik końca strony przyjmowany przez programy listujące DLIST i LIST), natomiast zmienna <code>=</code> jest niezdefiniowana. Zmienne <code>-</code> i <code>=</code> mogą być przedefiniowane tak jak inne zmienne, ale definicje te muszą być zawarte w zbiorze EXMINI. W tekstach wprowadzanych z klawiatury znaki '''-''' i '''=''' są rozwijane tak jak inne zmienne generacyjne, ale tylko wtedy, gdy opcja 'number' ma wartość PNU.


=== Opcje edycji ===
=== Opcje edycji ===
Linia 396: Linia 396:
Treść tekstów (zleceń, wierszy) wprowadzanych z klawiatury jest modyfikowana w sposób zależny od ustawienia opcji 'octalcod', 'clear' i 'lowtoupper'. Ustawienie opcji 'octalcod' umożliwia wprowadzenie do zlecenia lub wiersza znaku o dowolnym kodzie 0-0177:
Treść tekstów (zleceń, wierszy) wprowadzanych z klawiatury jest modyfikowana w sposób zależny od ustawienia opcji 'octalcod', 'clear' i 'lowtoupper'. Ustawienie opcji 'octalcod' umożliwia wprowadzenie do zlecenia lub wiersza znaku o dowolnym kodzie 0-0177:


* OC - ciąg znaków: ''\0<liczba>'' występujący w tekście wprowadzanym z klawiatury jest zamieniany na bajt o kodzie oktalnym wskazanym przez liczbę.
* OC - ciąg znaków: '''\0<liczba>''' występujący w tekście wprowadzanym z klawiatury jest zamieniany na bajt o kodzie oktalnym wskazanym przez liczbę.
* NOC - kody oktalne nie są przyjmowane - oznaczają ciąg znaków.
* NOC - kody oktalne nie są przyjmowane - oznaczają ciąg znaków.


Linia 438: Linia 438:
Wprowadzenie zlecenia pustego - tylko znaku '''cr''' (RETURN) przesuwa wskaźnik dostępu na następny wiersz w buforze. Wiersz ten jest wyprowadzany w zależności od ustawienia opcji 'step':
Wprowadzenie zlecenia pustego - tylko znaku '''cr''' (RETURN) przesuwa wskaźnik dostępu na następny wiersz w buforze. Wiersz ten jest wyprowadzany w zależności od ustawienia opcji 'step':


ST - w następnej linii monitora (zalecane dla monitorów, w których znak '''cr''' nie powoduje przesunięcia kursora na początek linii ekranu)
* ST - w następnej linii monitora (zalecane dla monitorów, w których znak '''cr''' nie powoduje przesunięcia kursora na początek linii ekranu)
NST - w tej samej linii, w której zostało wprowadzone zlecenie (zalecane dla monitorów, w których '''cr''' przesuwa kursor na początek linii ekranu)
* NST - w tej samej linii, w której zostało wprowadzone zlecenie (zalecane dla monitorów, w których '''cr''' przesuwa kursor na początek linii ekranu)


Po wywołaniu edytora opcja 'step' jest zgaszona (NST).
Po wywołaniu edytora opcja 'step' jest zgaszona (NST).
Linia 479: Linia 479:
  <fragment> ::= { <ciąg> _ <ogranicznik> _ <symbol_łańcucha> }
  <fragment> ::= { <ciąg> _ <ogranicznik> _ <symbol_łańcucha> }
  <ciąg> ::= <element> [<krotność>]
  <ciąg> ::= <element> [<krotność>]
<element> - wskazuje znak w szukanym łańcuchu :
* <element> - wskazuje znak w szukanym łańcuchu:
<znak> - wskazany znak
** <znak> - wskazany znak:
 
** <code>.</code> - dowolny znak
* <code>.</code> - dowolny znak
** <code>[<zbiór_znaków>]</code> - znak należący do podanego zbioru znaków
* <code>[<zbiór_znaków>]</code> - znak należący do podanego zbioru znaków
** <code>[^<zbiór_znaków>]</code> - znak nie należący do podanego zbioru znaków
* <code>[^<zbiór_znaków>]</code> - znak nie należący do podanego zbioru znaków


  <zbiór_znaków> ::= {<znak>-<znak> _ <znak> }
  <zbiór_znaków> ::= {<znak>-<znak> _ <znak> }
Linia 495: Linia 494:
Przykładowo opis: <code>[^-a-d-Z-]]</code> oznacza dopełnienie (<code>^</code> na pierwszej pozycji) zbioru składającego się z podzbiorów: -, a-d, -, Z-] (pierwszy i trzeci znak '''-''' nie separujące pary znaków - analiza przebiega od lewej strony - oznaczają siebie; podobnie pierwszy znak ''']''' będący drugim znakiem w parze znaków, nie oznacza końca opisu zbioru). Przy zgaszonej opcji 'magic' znak '''\''' musi poprzedzać tylko nawias otwierający opis zbioru: <code>\[^-a-d-Z-]]</code>
Przykładowo opis: <code>[^-a-d-Z-]]</code> oznacza dopełnienie (<code>^</code> na pierwszej pozycji) zbioru składającego się z podzbiorów: -, a-d, -, Z-] (pierwszy i trzeci znak '''-''' nie separujące pary znaków - analiza przebiega od lewej strony - oznaczają siebie; podobnie pierwszy znak ''']''' będący drugim znakiem w parze znaków, nie oznacza końca opisu zbioru). Przy zgaszonej opcji 'magic' znak '''\''' musi poprzedzać tylko nawias otwierający opis zbioru: <code>\[^-a-d-Z-]]</code>


<krotność> : - określa liczbę elementów ciągu
* <krotność> : - określa liczbę elementów ciągu
{<liczba>} - wskazana liczba
* {<liczba>} - wskazana liczba


<code>{[<liczba>],[<liczba>]}</code> - liczba zawarta w podanym zakresie. Pominięcie pierwszego parametru oznacza 0 - ciąg pusty; pominięcie drugiego - ciąg dowolnie długi: do 255 znaków. Jeżeli pierwszy parametr ma mniejszą wartość niż drugi, to znajdowany jest najkrótszy łańcuch zgodny z tym wzorcem. Gdy drugi parametr jest mniejszy od pierwszego, szukany jest najdłuższy łańcuch  zgodny z tym wzorcem.
<code>{[<liczba>],[<liczba>]}</code> - liczba zawarta w podanym zakresie. Pominięcie pierwszego parametru oznacza 0 - ciąg pusty; pominięcie drugiego - ciąg dowolnie długi: do 255 znaków. Jeżeli pierwszy parametr ma mniejszą wartość niż drugi, to znajdowany jest najkrótszy łańcuch zgodny z tym wzorcem. Gdy drugi parametr jest mniejszy od pierwszego, szukany jest najdłuższy łańcuch  zgodny z tym wzorcem.
Linia 510: Linia 509:
<ogranicznik> - opisuje znaki leżące obok:
<ogranicznik> - opisuje znaki leżące obok:


* \( - znak następny ma rozpoczynać nazwę
* ( - znak następny ma rozpoczynać nazwę
* \) - znak poprzedni ma kończyć nazwę
* ) - znak poprzedni ma kończyć nazwę
* < - znak następny ma rozpoczynać słowo
* < - znak następny ma rozpoczynać słowo
* > - znak poprzedni ma kończyć słowo
* > - znak poprzedni ma kończyć słowo

Menu nawigacyjne