From 49b506ce1366d6db300b8edb26a1ee4bbd975dbf Mon Sep 17 00:00:00 2001
From: Mike Collins <mdcolli@evoforge.org>
Date: Tue, 13 Jul 2021 16:05:30 -0400
Subject: [PATCH] deleted obsolete c files which are not used at all

---
 RIGAL/rigsc.446/src/ley2.c   |  300 --------
 RIGAL/rigsc.446/src/s_scan.c | 1279 ----------------------------------
 2 files changed, 1579 deletions(-)
 delete mode 100644 RIGAL/rigsc.446/src/ley2.c
 delete mode 100644 RIGAL/rigsc.446/src/s_scan.c

diff --git a/RIGAL/rigsc.446/src/ley2.c b/RIGAL/rigsc.446/src/ley2.c
deleted file mode 100644
index 764a7d0..0000000
--- a/RIGAL/rigsc.446/src/ley2.c
+++ /dev/null
@@ -1,300 +0,0 @@
-#include "globrig.h"
-#include "define.h"
-#include "defpage.h"
-#include "ley.h"
-#include "nef2.h"
-
-
-/* lexic analysis for rigal language
-   input : text file with name first_file
-           and if 'NOT_INCLUDE' is false
-             then all included files
-   output :s-object code and added a-objects
-
-   may be called from editor environment through checker
-   or from usepas for user's call
-   #call_pas(14 'A.RIG') or #call_pas(15 'A.RIG') .
-
-   token's COoRDinates returned as LINE_NUMBER*80+SYMBOL_NUMBER
-   included file names returned as tatom descriptors;
-     exception: first_file never returned as first lexem.
-   added letter to filename  i if %included file
-                             c if returned from %include
-*/
-
-#define filemax         4   /* ~islo wlovenij dlq include */
-#define bufmaxlen       10   /* dlina malogo bufera , kak minimum - 8 */
-#define two_char_sym_max  50   /* maks. massiwa */
-
-
-typedef union bufrectype {
-  Char lexbuf[bufmaxlen];
-  Char b1;
-  Char b2[2];
-  Char b3[3];
-  Char b4[4];
-  Char b5[5];
-  Char b6[6];
-  Char b7[7];
-  Char b8[8];
-  Char b9[9];
-  Char b10[10];
-} bufrectype;
-
-
-FILE *infile[filemax];   /* fajly ish. teksta */
-bufrectype bufrec;   /* sohranenie dlq leksera !!!! */
-c2 twochar_symbols[two_char_sym_max];
-char twochar_symbols_num;
-
-
-typedef Char a146[146];   /* source string type */
-
-typedef Char bigstr_type[146];
-
-
-
-typedef struct _REC_fistack {
-  long curline;   /* current line of this file */
-  filespecification f;   /* file name */
-} _REC_fistack;
-
-/* Local variables for ley: */
-struct LOC_ley {
-  error_rec_type *error_rec;
-  a satomadr;
-  long i;   /* current byte */
-  boolean errflag;
-  a146 s;
-
-  _REC_fistack fistack[filemax + 1];
-  long fistacklen;
-} ;
-
-Local Void newlist(pp, LINK)
-ptr_ *pp;
-struct LOC_ley *LINK;
-{
-  /* nowyj ukazatelx spiska */
-  /* sozdaet nowyj spisok */
-  mpd x;
-  a a1;
-
-  gets5(&a1, &x.sa);
-  points(a1, &x.sa);
-  x.smld->dtype = listmain;
-  x.smld->lastfragm = a1;
-  pp->ptrtype = ptrlist;
-  pp->cel = 0;
-  pp->nel = 0;
-  pp->UU.U1.curfragment = a1;
-  pp->UU.U1.mainadr = a1;
-}
-
-Local Void push(pp, adr, LINK)
-ptr_ *pp;
-long adr;
-struct LOC_ley *LINK;
-{
-  mpd x, x1;
-  a a1;
-
-  /* dobawlqet po pojnteru spiska nowyj |lement k spisku*/
-  /* i sdwigaet pojnter pp */
-  if (pp->ptrtype != ptrlist) {
-    printf("Rigal internal error Push-102\n");
-    return;
-  }  /* if/then */
-  points(pp->UU.U1.mainadr, &x.sa);
-  if (x.smld->dtype == listmain)
-    x.smld->totalelnum++;
-  else
-    printf("Rigal internal error Push-101\n");
-  points(pp->UU.U1.curfragment, &x.sa);
-  if (x.smld->dtype == listmain && pp->nel == mainlistelnum ||
-      x.sfld->dtype == listfragm && pp->nel == fragmlistelnum) {
-    /* w slu~ae dostiveniq konca fragmenta spiska */
-    gets5(&a1, &x1.sa);
-    if (x.smld->dtype == listmain)   /* podceplenie */
-      x.smld->next = a1;
-    else
-      x.sfld->next = a1;
-    /* obrazuem i zapolnqem nowyj  */
-    x1.sfld->dtype = listfragm;
-    x1.sfld->elnum = 1;
-    x1.sfld->elt[0] = adr;
-    points(pp->UU.U1.mainadr, &x.sa);
-    x.smld->lastfragm = a1;
-    /* sdwig pojntera */
-    pp->nel = 1;
-    pp->cel = adr;
-    pp->UU.U1.curfragment = a1;
-    return;
-  }  /* then */
-  /* ob{ij clu~aj dobawleniq |lementa wnutri fragmenta */
-  switch (x.smld->dtype) {
-
-  case listmain:
-    x.smld->elnum++;
-    x.smld->elt[pp->nel] = adr;
-    break;
-
-  case listfragm:
-    x.sfld->elnum++;
-    x.sfld->elt[pp->nel] = adr;
-    break;
-  }/* case */
-  pp->nel++;
-  pp->cel = adr;
-
-  /* else */
-}  /* push */
-
-Local Void mistake(mistake_num, LINK)
-long mistake_num;
-struct LOC_ley *LINK;
-{
-  string80 com;
-
-  printf("Error...%12ld M=%s\n", mistake_num, LINK->error_rec->message);
-  switch (mistake_num) {
-
-  case 1:
-    strcpy(com, "MAIN PROGRAM FILE  IS NOT FOUND ");
-    break;
-
-  case 2:
-    strcpy(com, "MORE THAN 2 NESTED %INCLUDE FILES");
-    break;
-
-  case 3:
-    strcpy(com, "THIS %INCLUDE FILE  IS NOT FOUND ");
-    break;
-
-  case 4:
-    strcpy(com, "TOO LONG (>80 BYTES) TOKEN");
-    break;
-
-  case 5:
-    strcpy(com, "WRONG CHARACTER AFTER NUMBER");
-    break;
-
-  case 6:
-    strcpy(com, "TOO BIG NUMBER (> 2.**31) ");
-    break;
-
-  case 8:
-    strcpy(com, "ENDING APOSTROPHE NOT FOUND IN THIS LINE");
-    break;
-
-  case 11:
-    strcpy(com, "THIS CHARACTER NOT ALLOWED ");
-    break;
-
-  case 12:
-    strcpy(com, "NUMBER AFTER \"A'\" NOT FOUND ");
-    break;
-
-  case 13:
-    strcpy(com, "ZERO LENGTH STRING NOT ALLOWED");
-    break;
-
-  case 14:
-    strcpy(com, "RULE NAME AFTER \"#\" NOT FOUND ");
-    break;
-
-  case 17:
-    strcpy(com, "NUMBER AFTER \"A'\" MUST BE N*512");
-    break;
-
-  case 18:
-    strcpy(com, "WRONG DIGIT (8 or 9) IN OCTAL NUMBER ");
-    break;
-
-
-  default:
-    strcpy(com, "UNKNOWN LEXICAL ERROR");
-    break;
-  }
-  printf("...\n");
-  LINK->errflag = true;
-  strcpy(LINK->error_rec->message, com);
-  LINK->error_rec->address =
-    LINK->fistack[LINK->fistacklen - 1].curline * 80 + LINK->i;
-  strcpy(LINK->error_rec->filename, LINK->fistack[LINK->fistacklen - 1].f);
-  printf(" LEXICAL ERROR : %s\n", com);
-  printf(" LINE=%12ld  SYMBOL=%12ld\n",
-	 LINK->fistack[LINK->fistacklen - 1].curline, LINK->i);
-}
-
-Local Void makeatom(ik, jk, desk, LINK)
-long ik, jk;
-char desk;
-struct LOC_ley *LINK;
-{
-  /* makes s-atom
-     from array s, starting ik, length jk
-   */
-  mpd x;
-  a a1m;
-  atomdescriptor *WITH;
-
-  putatm(&LINK->s[ik - 1], jk, &a1m);
-  gets1(&LINK->satomadr, &x.sa);
-  WITH = x.sad;
-  WITH->cord = LINK->fistack[LINK->fistacklen - 1].curline * 80 + LINK->i;
-      /*!!*/
-  WITH->dtype = desk;
-  WITH->name = a1m;
-}
-
-
-
-Void ley(first_file_, lesrez, not_include, error_rec_)
-Char *first_file_;
-long *lesrez;
-boolean not_include;
-error_rec_type *error_rec_;
-{
-  /* added lastfragm 12-jul-91 */
-
-  struct LOC_ley V;
-  string80 first_file;
-  char dt;
-  longint ilong;
-  a adr;
-  char jcase;
-  long j, nn, jj, ii;
-  mpd x;
-  long len;   /* current line length */
-  ptr_ p;
-  mpd y;
-  boolean is_ident, x_lists;
-  /*  srb,srl,slb,sll: string; */
-  Char table[254]; 
-  boolean maybe_octal;
-  bigstr_type a_long;   /*varying[145] of char;*/
-  a146 s1;
-  filespecification ff1;
-  string80 ssint;
-
-
-  /***  Char twochar_string[161]; **/
-  long rline;
-  Char c;
-  long FORLIM;
-  numberdescriptor *WITH;
-  ruledescriptor *WITH1;
-  vardescriptor *WITH2;
-  specdescriptor *WITH3;
-
-
-printf("L1");
-
-}
-
-
-
-
-/* End. */
-
diff --git a/RIGAL/rigsc.446/src/s_scan.c b/RIGAL/rigsc.446/src/s_scan.c
deleted file mode 100644
index 8b00e1e..0000000
--- a/RIGAL/rigsc.446/src/s_scan.c
+++ /dev/null
@@ -1,1279 +0,0 @@
-#include "globrig.h"
-#include "define.h"
-#include "defpage.h"
-#include "scan.h"
-#include "nef2.h"
-typedef Char bigstring[128];
-#define new_line_code   '\015'   /* chr(0 is allowed too */
-#define endfile_code    '\032'
-
-
-#define is_control      0
-#define is_letter       1
-#define is_digit        2
-#define is_underscore   3
-#define is_printable    4
-#define is_special      5
-#define is_space        6
-#define is_first_of_two  7
-
-
-typedef Char pair[2];
-
-
-a a1;   /* global variable for only local use */
-/*aa1 : aa ;*/
-/* --"-- */
-mpd x;   /* --"-- */
-bl80 bl801;
-/* -- " -- */
-/* array[1..80] of char*/
-long k, kk;   /* -"- */
-Char c1;
-
-word saved_coord;   /* where current token began */
-word coord_mark;   /* what was set by coordinate marker */
-word line_byte_number;
-/* number of totally read bytes till beginning
-                      of current line */
-word last_mark_byte_number;
-/* number of totally read bytes till
-                       last coordinate marker */
-/* length of the current line,
-                   used only for incrementation of "lyne_byte_number"*/
-word old_line_length;
-char dt;
-/* type of last read token or control character */
-a aadr;   /* a-space address of last read token */
-longint linenumber;   /* current line number */
-longint tokennumber;   /* current token number */
-a errlist;   /* list of numbers of errors */
-long read_mode;   /* 1,2,3 */
-ptr_ ptr1;   /* list pointer when read from list of atoms */
-
-FILE *inpfile;
-boolean c_lexics, pascal_lexics, row80_coord, byte_coord, mark_byte_coord,
-	mark_only_coord, string_coord, char_coord, token_coord,
-	collect_errors, screen_errors, to_uppercase, pascal_comment,
-	c_comment, ada_comment, pascal_string, modula_string;
-bigstring s, s_for_val;   /* added 17-feb-92 */
-long i;
-char as[256];
-char isa;
-Char upcase_tab[256];
-char set_of_second_of_two[9];
-long two_char_symbols_num;
-pair two_char_symbols[30];
-
-union {
-  Char b1;
-  Char b2[2];
-  Char b3[3];
-} b123;
-
-
-boolean in_comment, in_string, is_2quote;
-    /* if in_string then it is possible */
-longint str_constlen;
-string80 str_const;   /* array of char is allowed too */
-
-
-/*=====  sun version ===*/
-Static Void jnc(xxx)
-long *xxx;
-{
-  (*xxx)++;
-}
-
-
-Static Void jnc2(xxx, yyy)
-long *xxx, yyy;
-{
-  *xxx += yyy;
-}
-
-
-Static Void jncx(xxx)
-long *xxx;
-{
-  (*xxx)++;
-}
-
-
-Static Void jnc2x(xxx, yyy)
-long *xxx, yyy;
-{
-  *xxx += yyy;
-}
-
-
-/*=====*/
-
-Static char cont_char_to_dt PP((Char c));
-
-Static word getcoord PV();
-
-Static Void er_lex PP((long er_number));
-
-/*procedure initialize_scan_variables;forward;*/
-Static Void read_file PP((long *read_file_rez));
-
-Static long read_item PV();
-
-Static Void readline PV();
-
-Static Void putatom PP((long j));
-
-Static Void putit PP((Char dd, long j));
-
-Static Void putident PP((long j));
-
-Static Void putfloat PP((long j));
-
-Static Void putnumber PV();
-
-Static Void putstr PV();
-
-Static Void putstr2 PV();
-
-/*procedure scaner;forward;*/
-Static Void setlexics PV();
-
-Static Void stradd PP((Char c));
-
-Static Void strbegin PV();
-
-Static Void token PV();
-
-Static long take_digits PP((long *jj));
-
-Static long take_letters PV();
-
-
-
-/* uses global string, received from readline procedure,
-   produces global attributes of new one token read.
-   some variables also should be initialized if by initial_token
-   procedure at the start of the whole programm */
-
-/* this procedure is oriented to turbo pascal language */
-/* procedure call graph follows :
-                                  /self\
-  usepas -> scan -> readfile -> readitem  ->  addel.nef
-                             -> lconc.nef     er_lex
-                 -> setoptions                gets1.defpage
-                 -> first.nef                 token
-                 -> assign.system             pointr.defpage
-                 -> reset.system              lconc.nef
-                 -> readline
-
-
-  token    -> er
-                -> read_letters_or_digits
-                -> read_digits
-                -> strbegin
-                -> putnumber
-                -> stradd -> er
-                -> putstr -> putatm.defpage
-                -> putatom ->\
-                -> putfloat     -> putit -> putatm.defpage
-                -> putident     ->/
-*/
-
-
-
-Static char cont_char_to_dt(c)
-Char c;
-{
-  /************************************************/
-  return ((char)c);
-}
-
-
-Static word getcoord()
-{
-  /*************************/
-  if (row80_coord)
-    return (i + linenumber * 80);
-  else {
-    if (mark_only_coord)
-      return coord_mark;
-    else {
-      if (mark_byte_coord)
-	return (coord_mark + line_byte_number + i - last_mark_byte_number);
-      else {
-	if (byte_coord)
-	  return (line_byte_number + i);
-	else {
-	  if (string_coord)
-	    return linenumber;
-	  else {
-	    if (token_coord)
-	      return tokennumber;
-	    else
-	      return 0;
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-Static Void er_lex(er_number)
-long er_number;
-{
-  /*************************************/
-  a er_atom;
-  word co;
-  numberdescriptor *WITH;
-
-  co = getcoord();
-  if (collect_errors) {
-    gets1(&er_atom, &x.sa);
-    WITH = x.snd;   /*global*/
-    WITH->dtype = number;
-    WITH->cord = co;
-    WITH->val = er_number;
-    lconc(&errlist, er_atom);
-  }
-  if (screen_errors)
-    printf("Lexical error (%12ld) line=%12d column=%12d\n",
-	   er_number, co / 80, co % 80);
-}
-
-
-
-
-Void initialize_scan_variables()
-{
-  /*************************************/
-  Char c;
-  short TEMP;
-
-  for (TEMP = '\0'; TEMP <= 255; TEMP++) {
-    c = TEMP;
-    upcase_tab[c] = c;
-  }
-  for (c = 'a'; c <= 'z'; c++)   /*ascii*/
-    upcase_tab[c] = c - 32;
-  for (TEMP = 160; TEMP <= 175; TEMP++) {
-    c = TEMP;
-    upcase_tab[c] = c - 32;
-  }
-  /*russian*/
-  for (TEMP = 224; TEMP <= 239; TEMP++) {
-    c = TEMP;
-    upcase_tab[c] = c - 60;
-  }
-  /*russian*/
-  for (c = '\0'; c <= '\037'; c++)
-    as[c] = is_control;
-  for (TEMP = 128; TEMP <= 255; TEMP++) {
-    c = TEMP;
-    as[c] = is_letter;
-  }
-  /* russian and pseudographics */
-  for (TEMP = ' '; TEMP <= '\177'; TEMP++) {
-    c = TEMP;
-    /* not used actually */
-
-
-    as[c] = is_printable;
-  }
-  as[new_line_code] = is_control;
-
-  as[' '] = is_space;
-  as['\t'] = is_space;
-  /* these are allowed to be first letter of identifiers */
-  for (c = 'A'; c <= 'Z'; c++)
-    as[c] = is_letter;
-  for (c = 'a'; c <= 'z'; c++)
-    as[c] = is_letter;
-  for (c = '0'; c <= '9'; c++)
-    as[c] = is_digit;
-  /* allowed to be non-first letter of odentifier */
-  as['_'] = is_underscore;
-
-  /* all the rest settings - see procedure setlexics */
-
-}
-
-
-
-
-
-
-
-
-Static Void read_file(read_file_rez)
-long *read_file_rez;
-{
-  /********************************/
-  /* reads whole input, produces list of items */
-  *read_file_rez = null_;
-  do {
-    a1 = read_item();
-    if (dt == start_tree || dt == end_tree || dt == start_list ||
-	dt == end_list || dt == name_obj) {
-      er_lex(6L);
-      goto _L99;
-    }
-    if (dt != eof_desk)
-      lconc(read_file_rez, a1);
-  } while (dt != eof_desk);
-_L99: ;
-}
-
-
-
-Static long read_item()
-{
-  /**********************/
-  long Result;
-  a aadr1, result, temp_res;
-  atomdescriptor *WITH;
-  numberdescriptor *WITH1;
-
-  Result = null_;   /* default value for exits with errors */
-  result = null_;
-  token();
-
-  /*writeln('DT=',dt,ord(dt));*/
-
-  switch (dt) {
-
-  case atom:
-  case idatom:
-  case tatom:
-  case fatom:
-  case keyword:
-    gets1(&result, &x.sa);
-    WITH = x.sad;
-    WITH->dtype = dt;
-    WITH->cord = saved_coord;
-    WITH->name = aadr;
-    break;
-
-  case number:
-    gets1(&result, &x.sa);
-    WITH1 = x.snd;
-    WITH1->dtype = dt;
-    WITH1->cord = saved_coord;
-    WITH1->val = aadr;   /* is set in token .. is_digit */
-    break;
-
-  case start_tree:
-    result = null_;
-    do {
-      token();
-      aadr1 = aadr;   /* to save */
-      if (dt == idatom || dt == atom || dt == tatom || dt == keyword) {
-	/* what is allowed selector in scaner input ?
-	   normally - idatom only, but here
-	   atom is allowed too - for experiment purposes */
-	a1 = read_item();
-	if (dt == end_list) {
-	  er_lex(6L);
-	  goto _L99;
-	}
-	if (dt == eof_desk) {
-	  er_lex(1L);
-	  goto _L99;
-	}
-	addel3(&result, aadr1, a1);
-      } else if (dt != end_tree) {
-	er_lex(2L);
-	goto _L99;
-      }
-    } while (dt != end_tree && dt != eof_desk);
-    if (dt == eof_desk) {
-      er_lex(3L);
-      goto _L99;
-    }
-    dt = complex_desk;
-    /* to ignore analysis in upper level of
-                        recursion */
-    break;
-
-  case start_list:
-    result = null_;
-    do {
-      a1 = read_item();
-      if (dt == eof_desk) {
-	er_lex(4L);
-	goto _L99;
-      }
-      if (dt != end_list)
-	lconc(&result, a1);
-    } while (dt != end_list);
-    dt = complex_desk;
-    break;
-
-  case end_tree:
-    er_lex(5L);
-    goto _L99;
-    break;
-
-  case end_list:
-    break;
-    /*immodiately returns to the upper level*/
-
-  case name_obj:
-    temp_res = read_item();
-    if (dt == end_list) {
-      er_lex(6L);
-      goto _L99;
-    }
-    if (dt == eof_desk) {
-      er_lex(7L);
-      goto _L99;
-    }
-    result = read_item();
-    if (dt == end_list) {
-      er_lex(6L);
-      goto _L99;
-    }
-    if (dt == eof_desk) {
-      er_lex(8L);
-      goto _L99;
-    }
-    if (result != null_) {
-      points(result, &x.sa);
-      if (x.smld->dtype == listmain || x.smtd->dtype == treemain)
-	x.smtd->name = temp_res;
-    }
-    dt = complex_desk;
-    break;
-
-  case eof_desk:
-    break;
-    /* returns to the upper level */
-
-
-
-  default:
-    er_lex(9L);
-    goto _L99;   /* impossible value */
-    break;
-  }/* case */
-  Result = result;
-_L99:
-  return Result;
-}  /* read_item */
-
-
-
-
-Static Void readline()
-{
-  /*****************************/
-  /* sets new values for "s" and "i" global variables */
-  Char c;
-  long rline;
-  atomdescriptor *WITH;
-  long FORLIM;
-  int fff;
-  i = 1;
-  /* in any case, so; only here it is initialized.
-          it is column number.
-          variable "s" is string only for speed purposes;
-          it plays exactly as packed array of char,
-          never used as whole and the length byte is never used */
-  linenumber++;
-  line_byte_number += old_line_length;
-  if (read_mode == 1) {
-
-    if (feof(inpfile))
-      s[0] = endfile_code;
-    else {
-      /*readln(inpfile,s);*/
-
-    fgets(s,145,inpfile);
-    if (s[strlen(s)-1]=='\n')
-             { s[strlen(s)-1]=0;
-               fff=fgetc(inpfile);
-               if (fff!=10)
-                    { ungetc(fff,inpfile);}
-               else
-                   linenumber++;
-             }
-
-      s[strlen(s)] = new_line_code;
-      old_line_length = strlen(s);
-    }
-  } else {
-    if (read_mode == 2) {
-      if (ptr1.nel == 0) {
-	s[0] = endfile_code;
-	goto _L99;
-      }
-      if (ptr1.cel == 0) {
-	s[0] = new_line_code;
-	old_line_length = 0;
-      } else {
-	pointr(ptr1.cel, &x.sa);
-	WITH = x.sad;   /* with */
-	if (WITH->dtype == atom || WITH->dtype == idatom ||
-	    WITH->dtype == fatom || WITH->dtype == tatom ||
-	    WITH->dtype == keyword) {
-	  pointa(WITH->name, bl801, &k);
-	  FORLIM = k;
-	  for (kk = 1; kk <= FORLIM; kk++)
-	    s[kk - 1] = bl801[kk - 1];
-	  old_line_length = k;
-	  s[k] = new_line_code;
-	} else {
-	  s[0] = new_line_code;   /* other objects are ignored */
-	  old_line_length = 0;
-	}
-      }  /* <>0 */
-      next(&ptr1);
-
-    }  /*=2*/
-  }
-_L99: ;
-
-
-}
-
-
-
-
-
-Static Void putatom(j)
-long j;
-{
-  /*************************/
-  putit(atom, j);
-}
-
-
-Static Void putit(dd, j)
-Char dd;
-long j;
-{
-  /*************************/
-  putatm(&s[i - 1], j, &aadr);
-  dt = dd;
-  saved_coord = getcoord();
-  tokennumber++;
-}
-
-
-Static Void putident(j)
-long j;
-{
-  /*************************/
-  putit(idatom, j);
-}
-
-
-Static Void putfloat(j)
-long j;
-{   /*ignored*/
-  /*************************/
-  double rea_val;
-  long ii, kk;
-  real_char reac;
-  Char STR1[256];
-
-  sprintf(STR1, "%.*s", (int)j, s + i - 1);
-  val2(STR1, &rea_val, &ii);
-  ii = sizeof(double);
-
-  for (kk = 0; kk < ii; kk++)
-    reac[kk] = ((Char *)(&rea_val))[kk];
-
-
-  putatm(reac, ii, &aadr);
-  dt = fatom;
-  saved_coord = getcoord();
-  jnc(&tokennumber);
-}
-
-
-Static Void putnumber()
-{
-  /*************************/
-  dt = number;
-  saved_coord = getcoord();
-  jnc(&tokennumber);
-}
-
-
-Static Void putstr()
-{
-  /*************************/
-  putatm(str_const, str_constlen, &aadr);
-  dt = tatom;
-  in_string = false;
-  tokennumber++;
-}
-
-
-Static Void putstr2()
-{
-  /*************************/
-  putatm(str_const, str_constlen, &aadr);
-  dt = keyword;
-  in_string = false;
-  tokennumber++;
-}
-
-
-/* Local variables for scaner: */
-struct LOC_scaner {
-  string80 options_str;
-} ;
-
-/*inner function*/
-Local boolean setop(c, LINK)
-Char c;
-struct LOC_scaner *LINK;
-{
-  boolean Result;
-  char * tmp;
-  Result = false;
-
-  tmp=strchr(LINK->options_str,c);
-
-  if ( tmp ) {
-    if (tmp[1] != '-') /* Check next position */
-      return true;
-  }
-  return Result;
-}
-
-
-/* this procedure used only for modula2 or c-style string constants like 'x', -
-   to show difference between 'x' and "x".
-   access via #_keyword built_in rule is possible.
-   when input  use 'm+p-' !
-   when output such tokens you should write
-    if #_keyword($x) -> out <] @ '"' $x '"' elsif t-> out <] $x fi;
-  */
-
-
-
-
-Void scaner(mode_parm, filename_, options_str_, rez, erlist_parm, strlist,
-	    segm, ofs)
-long mode_parm;
-Char *filename_, *options_str_;
-long *rez, *erlist_parm, strlist, segm, ofs;
-{
-  /*******************************************/
-  /*1=from file,2=list of strings,3=absulute address*/
-  /* result; set to null if input is absent */
-  /* error number list; set to null if no error */
-  /* list of atoms */
-  /* parts of absolute address */
-  struct LOC_scaner V;
-  string80 filename;
-
-
-  strcpy(filename, filename_);
-  strcpy(V.options_str, options_str_);
-  read_mode = mode_parm;   /* save for global use */
-  *rez = null_;
-  *erlist_parm = null_;
-  errlist = null_;   /* global */
-
-  /* initializes  all  options */
-  /* defaults */
-  strcat(V.options_str, "D-C-P+p+m-U+S+O+s-t-L-A+R+Y-B-N-");
-  /* to every option su,me default value should be given,
-     otherwise the flag remains uninitialized */
-
-  /*errors*/
-  screen_errors = setop('S', &V);
-  collect_errors = setop('O', &V);
-
-  /*comments*/
-  ada_comment = setop('D', &V);
-  c_comment = setop('C', &V);
-  pascal_comment = setop('P', &V);
-
-  /*string constants*/
-  pascal_string = setop('p', &V);
-  modula_string = setop('m', &V);
-  to_uppercase = setop('U', &V);
-
-  /*coordinate*/
-  string_coord = setop('s', &V);
-  token_coord = setop('t', &V);
-  row80_coord = setop('R', &V);
-  byte_coord = setop('Y', &V);
-  mark_byte_coord = setop('B', &V);
-  mark_only_coord = setop('N', &V);
-
-  /*language_specific lexics*/
-  c_lexics = setop('L', &V);
-  pascal_lexics = setop('A', &V);
-
-
-  /* initializes language-specific settings */
-  setlexics();
-
-  /* initializes "session" flags (alf order)*/
-  coord_mark = 0;
-  in_comment = false;
-  in_string = false;
-  is_2quote = false;
-  last_mark_byte_number = 0;
-  line_byte_number = 0;
-  linenumber = 0;
-  old_line_length = 0;
-  str_constlen = 0;
-  tokennumber = 0;
-
-  /* initializes physical level reading */
-
-  if (read_mode == 1) {  /* read from file */
-    if (!existfile(filename)) {
-      *rez = 0;
-      goto _L1;
-    }
-
-
-    inpfile = fopen(filename, "r");
-    if (inpfile == NULL)
-      _EscIO(FileNotFound);
-
-
-    readline();   /* reads first line of file */
-  } else {
-    if (read_mode == 2) {  /* read from list */
-      if (strlist == null_) {
-	*rez = 0;
-	goto _L99;
-      }
-      first(strlist, &ptr1);   /* sets global list-pointer ptr1 */
-      if (ptr1.ptrtype != ptrlist || ptr1.nel == 0) {
-	*rez = 0;
-	goto _L99;
-      }
-      readline();   /* reads line from current list-pointer position */
-      /* read from ms-dos ram memory */
-
-    }
-  }
-
-
-
-  read_file(rez);   /* main call ... */
-
-  *erlist_parm = errlist;   /*global*/
-_L1:
-_L99: ;
-}  /* scaner */
-
-
-Static Void setlexics()
-{
-  /*************************/
-  long j, FORLIM;
-
-  if (pascal_lexics) {
-    /* changes in standard, necessary for pascal*/
-    as['{'] = is_special;
-    as['#'] = is_special;
-    as['$'] = is_special;
-    as['%'] = is_special;
-    as['\''] = is_special;
-    as['('] = is_special;
-    memcpy(two_char_symbols[0], ":=", sizeof(pair));
-    memcpy(two_char_symbols[1], "<=", sizeof(pair));
-    memcpy(two_char_symbols[2], ">=", sizeof(pair));
-    memcpy(two_char_symbols[3], "**", sizeof(pair));
-    memcpy(two_char_symbols[4], "..", sizeof(pair));
-    memcpy(two_char_symbols[5], "<>", sizeof(pair));
-    two_char_symbols_num = 6;
-    strcpy(set_of_second_of_two,"=*.>");
-    FORLIM = two_char_symbols_num;
-    for (j = 0; j < FORLIM; j++)
-      as[two_char_symbols[j][0]] = is_first_of_two;
-    if (modula_string) {
-      as['"'] = is_special;
-      as['{'] = is_printable;
-    }
-    return;
-  }
-  if (!c_lexics)
-    return;
-  as['_'] = is_letter;
-  as['$'] = is_letter;
-  memcpy(two_char_symbols[0], "->", sizeof(pair));
-  memcpy(two_char_symbols[1], "++", sizeof(pair));
-  memcpy(two_char_symbols[2], "--", sizeof(pair));
-  memcpy(two_char_symbols[3], ">>", sizeof(pair));
-  memcpy(two_char_symbols[4], "<<", sizeof(pair));
-  memcpy(two_char_symbols[5], "==", sizeof(pair));
-  memcpy(two_char_symbols[6], "+=", sizeof(pair));
-  memcpy(two_char_symbols[7], "*=", sizeof(pair));
-  memcpy(two_char_symbols[8], "-=", sizeof(pair));
-  memcpy(two_char_symbols[9], "/=", sizeof(pair));
-  memcpy(two_char_symbols[10], "%=", sizeof(pair));
-  memcpy(two_char_symbols[11], "&=", sizeof(pair));
-  memcpy(two_char_symbols[12], "^=", sizeof(pair));
-  memcpy(two_char_symbols[13], "|=", sizeof(pair));
-  memcpy(two_char_symbols[14], "!=", sizeof(pair));
-  two_char_symbols_num = 15;
-  strcpy(set_of_second_of_two,">+-<=");
-  FORLIM = two_char_symbols_num;
-  for (j = 0; j < FORLIM; j++)
-    as[two_char_symbols[j][0]] = is_first_of_two;
-  as['<'] = is_special;   /* used to process <<= */
-  as['>'] = is_special;   /* used to process >>= */
-  as['/'] = is_special;   /* used to process / *  */
-  /* otherwise isa:=is_first_of_two
-     is assigned ! */
-  as['\''] = is_special;
-  as['"'] = is_special;
-
-}
-
-
-
-
-Static Void stradd(c)
-Char c;
-{
-  /*************************/
-  if (str_constlen > 80)   /* string is truncated */
-    er_lex(10L);
-  else
-    jnc(&str_constlen);
-  str_const[str_constlen - 1] = c;
-}
-
-
-Static Void strbegin()
-{
-  /********************/
-  saved_coord = getcoord();
-  /* it will be used when putstr works and token exits - in read_item*/
-  in_string = true;
-  str_constlen = 0;
-}
-
-
-
-
-
-Static Void token()
-{   /* variant record ,b1=b2[1]=b3[1]; b2[2]=b3[2] */
-  /**********************/
-  long j, i_saved;   /* positions */
-  long FORLIM;
-
-  /* at beginning time
-     "i" - is already set to character in string "s";
-     array "as" is already initialized;
-     coordinate mode "coord_mode" is already known;
-  */
-
-_L1:   /* we return to this label if token is not ready still */
-
-  b123.b1 = s[i - 1];
-  isa = as[b123.b1];   /* type of this character */
-
-
-
-  if (isa == is_control) {  /*1*/
-    if (b123.b1 == new_line_code) {
-      readline();   /* skips to next line, sets new "s" and "i" */
-      if (in_string) {
-	er_lex(11L);
-	putstr();
-	goto _L99;
-      }
-      /* error= end of line appears in string constant */
-      goto _L1;
-    } else {
-      if (b123.b1 == endfile_code) {
-	if (in_comment)
-	  er_lex(12L);
-	/* error = end of file appears in comment */
-	dt = eof_desk;
-	goto _L99;
-      } else {  /*2*/
-	if (in_comment) {
-	  er_lex(13L);
-	  in_comment = false;
-	}
-	/* error = control char in comment */
-	if (in_string) {
-	  er_lex(14L);
-	  putstr();
-	  goto _L99;
-	  /* will take control character next time */
-	}
-	/* error = control char in string */
-	dt = cont_char_to_dt(b123.b1);
-	i++;
-	if (dt == set_coord && as[s[i - 1]] == is_digit) {
-	  /* this control character sets coordinate to value given in input */
-	  coord_mark = take_digits(&j);
-	  last_mark_byte_number = line_byte_number + i;
-	  i += j;
-	  goto _L1;   /* does not returns ! */
-
-	}
-	goto _L99;
-      }  /*2*/
-    }
-    /*never here*/
-  }  /*1*/
-
-
-
-
-  /* all the following executes after check of is_control */
-
-  /*b3[1]:=s[i];*/
-  /* this character */
-  b123.b3[1] = s[i];   /* next */
-  b123.b3[2] = s[i + 1];   /* next */
-
-  if (in_comment)   /* check for end of comment */
-  {  /*1*/
-    /* we are in comment;
-       here only comments that have some special end mark are processed */
-    if (pascal_comment) {  /*2*/
-      if (b123.b1 == '}') {
-	jncx(&i);
-	in_comment = false;
-	goto _L1;
-      }
-
-
-
-      if (!strncmp(b123.b2, "*)", 2)) {
-	jnc2x(&i, 2L);
-	in_comment = false;
-	goto _L1;
-      }
-
-
-    }  /*2*/
-    else {
-      if (c_comment) {  /*2*/
-	if (!strncmp(b123.b2, "*/", 2)) {
-	  jnc2x(&i, 2L);
-	  in_comment = false;
-	  goto _L1;
-	}
-      }  /*2*/
-    }
-    jncx(&i);
-    goto _L1;
-  }  /*1*/
-
-
-
-
-  if (in_string) {  /*1*/
-    if (pascal_string) {  /*2*/
-      if (b123.b1 == '\'') {  /*3*/
-	if (b123.b2[1] == '\'') {
-	  stradd('\'');
-	  jnc2x(&i, 2L);
-	  goto _L1;
-	} else {
-	  putstr();
-	  jncx(&i);
-	  goto _L99;
-	}
-	/* this allow to save '''' as '' */
-
-
-      }  /*3*/
-      else {  /*3*/
-	stradd(b123.b1);
-	jncx(&i);
-	goto _L1;
-      }  /*3*/
-
-    }  /*2*/
-    if (modula_string) {  /*2*/
-      if (is_2quote && b123.b1 == '"') {
-	putstr();
-	jncx(&i);
-	goto _L99;
-      }
-      if (!is_2quote && b123.b1 == '\'') {
-	putstr2();
-	jncx(&i);
-	goto _L99;
-      } else {  /*3*/
-	if (b123.b1 == '\\') {
-	  stradd(b123.b1);
-	  stradd(b123.b2[1]);
-	  /* this allows to save \? as ? even if \" appears" */
-	  jnc2x(&i, 2L);
-	  goto _L1;
-	}
-
-	stradd(b123.b1);
-	jncx(&i);
-	goto _L1;
-      }  /*3*/
-    }  /*2*/
-  }  /*1*/
-
-  /* check for end of string or something special in string */
-
-
-
-  /* all the following executes after check for in_string & in_comment */
-
-  if (isa == is_special) {  /*1*/
-    if (pascal_comment) {  /*2*/
-      if (!strncmp(b123.b2, "(*", 2)) {
-	in_comment = true;
-	jnc2x(&i, 2L);
-	goto _L1;
-      }
-      if (b123.b1 == '{' && b123.b2[1] != '$') {
-	in_comment = true;
-	jncx(&i);
-	goto _L1;
-      }
-    }  /*2*/
-    else {
-      if (c_comment) {  /*2*/
-	if (!strncmp(b123.b2, "/*", 2)) {
-	  in_comment = true;
-	  jnc2x(&i, 2L);
-	  goto _L1;
-	}
-      }  /*2*/
-      else {
-	if (ada_comment) {  /*2*/
-	  if (!strncmp(b123.b2, "--", 2)) {
-	    readline();
-	    goto _L1;
-	  }
-	}  /*2*/
-      }
-    }
-
-    if (pascal_string) {  /*2*/
-      if (b123.b1 == '\'') {
-	strbegin();
-	is_2quote = false;
-	jncx(&i);
-	goto _L1;
-      }
-    }  /*2*/
-    else {
-      if (modula_string) {  /*2*/
-	if (b123.b1 == '\'') {
-	  strbegin();
-	  is_2quote = false;
-	  jncx(&i);
-	  goto _L1;
-	}
-	if (b123.b1 == '"') {
-	  strbegin();
-	  is_2quote = true;
-	  jncx(&i);
-	  goto _L1;
-	}
-      }  /*2*/
-    }
-    if (pascal_lexics) {  /*2*/
-      /* specially takes turbo pascal directive-comments */
-      if (!strncmp(b123.b2, "{$", 2)) {  /*3*/
-	j = 0;
-	do {
-	  jncx(&j);
-	} while (s[i + j - 1] != '}' && as[s[i + j - 1]] != is_control);
-	if (s[i + j - 1] == '}')
-	  jncx(&j);
-	putatom(j);
-	jnc2x(&i, j);
-	goto _L99;
-      }  /*3*/
-
-      /* additional symbols */
-      if (b123.b1 == '#' || b123.b1 == '$' || b123.b1 == '%') {  /*3*/
-	jncx(&i);
-	j = take_letters();   /* starts from i-th position */
-	i--;
-	putatom(j + 1);   /* takes token from i-th position */
-	jnc2x(&i, j + 1);
-	goto _L99;
-      }  /*3*/
-
-    }  /*2*/
-    else {
-      if (c_lexics) {   /*2*/
-	if (!strncmp(b123.b3, "<<=", 3) || !strncmp(b123.b3, ">>=", 3)) {
-	  putatom(3L);
-	  jnc2x(&i, 3L);
-	  goto _L99;
-	}
-	isa = is_first_of_two;
-	/* !! in c case <<, >>, >=, <=  will be tested further
-	   in  two_char_symbols section, hence we go to there
-	   using assignment to "isa" */
-
-      }  /*2*/
-      /* symbols=  > < */
-      /* special cases for c language */
-
-    }
-
-  }  /*1*/
-
-
-  if (isa == is_space) {
-    jncx(&i);
-    goto _L1;
-  }
-
-  if (isa == is_letter) {
-    j = take_letters();
-    putident(j);
-    i += j;
-    goto _L99;
-  }
-
-
-  if (isa == is_digit) {  /*1*/
-    if (c_lexics) {  /*2*/
-      /* additional symbols; here hex and octal numbers are saved as
-         normal atoms */
-      if (b123.b1 == '0') {  /*3*/
-	jncx(&i);
-	j = take_letters();   /* starts from i-th position */
-	i--;
-	putatom(j + 1);   /* takes token from i-th position */
-	jnc2x(&i, j + 1);
-	goto _L99;
-      }  /*3*/
-    }  /*2*/
-
-
-    i_saved = i;   /* remember starting position */
-    aadr = take_digits(&j);
-
-    if (j < 10 &&
-	(s[i + j - 1] == '.' && s[i + j] == '.' ||
-	 s[i + j - 1] != '.' && s[i + j - 1] != 'E' && s[i + j - 1] != 'e')) {
-      putnumber();
-      jnc2x(&i, j);
-      goto _L99;
-    }
-    jnc2x(&i, j);
-    if (s[i - 1] == '.') {
-      jncx(&i);
-      aadr = take_digits(&j);
-      jnc2x(&i, j);
-    }
-    if (s[i - 1] == 'E' || s[i - 1] == 'e') {
-      jncx(&i);
-      if (s[i - 1] == '-' || s[i - 1] == '+')
-	jncx(&i);
-      aadr = take_digits(&j);
-      jnc2x(&i, j);
-    }
-    j = i - i_saved;
-    i = i_saved;   /* to set "i" to starting position */
-    putfloat(j);
-    jnc2x(&i, j);
-    goto _L99;
-  }  /*1*/
-
-  if (isa == is_first_of_two) {  /*1*/
-    if (strchr(set_of_second_of_two,(int)b123.b2[1])) {
-      FORLIM = two_char_symbols_num;
-      for (j = 0; j < FORLIM; j++) {
-	if (b123.b2[0] == two_char_symbols[j][0] &&
-	    b123.b2[1] == two_char_symbols[j][1]) {
-	  putatom(2L);
-	  i += 2;
-	  goto _L99;
-	}
-      }
-    }
-  }  /*1*/
-
-  putatom(1L);
-  jncx(&i);   /* with*/
-_L99: ;
-
-
-
-  /* others are control characters; */
-  /* they set "dt" field and then form rigal list/tree structure */
-
-}
-
-
-
-Static long take_letters()
-{
-  /****************************************/
-  long Result;
-  /* reads only letters, digits and underscores.
-     returns number of characters read */
-
-  long jj;
-  Char c;
-
-  jj = 0;
-  while (true) {
-    c = s[i + jj - 1];
-    isa = as[c];
-    if (isa != is_letter && isa != is_digit && isa != is_underscore) {
-      Result = jj;
-      goto _L99;
-    }
-    if (to_uppercase)
-      s[i + jj - 1] = upcase_tab[c];
-    jncx(&jj);
-  }
-_L99:
-  return Result;
-}
-
-
-
-
-Static long take_digits(jj)
-long *jj;
-{
-  /**************************************************/
-  long Result;
-  longint summator;
-  Char c;
-
-  *jj = 0;
-  summator = 0;
-  while (true) {
-    c = s[i + *jj - 1];
-    if (as[c] != is_digit) {
-      Result = summator;
-      goto _L99;
-    }
-    summator = summator * 10 + c - '0';
-    jncx(jj);
-  }
-_L99:
-  return Result;
-}
-
-
-
-/*begin*/
-/* press f8 when debugging ! */
-/*initialize_scan_variables;*/
-
-
-
-
-/* End. */
-- 
GitLab