SHARE
TWEET

step 2

vikt144 Oct 1st, 2019 6 in 81 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //https://pastebin.com/NEpEBG6v
  2.  
  3. //  lesson 1
  4. // file    forth/fas.java
  5. package forth;
  6.  
  7. import java.util.*;
  8. import java.lang.*;
  9.  
  10. public class fas {
  11.  
  12.  
  13.  
  14. public   static int here;  // адрес переменной HERE в массиве memory
  15. public   static int latest; // адрес переменной LATEST в массиве memory
  16. public   static int state;
  17. // static
  18.  public short[] memory = new short[1000];  //выделяем память из 16 битных целых размером в 1000
  19.  
  20.  public int exit_addr;  //адрес процедуры выхода
  21.  
  22. public  Vector StringVector;
  23.  
  24. public Vector initVirtualMem(int i) {
  25.  Vector v = new Vector();
  26.  Integer I = new Integer(i);  // тип Integer, это объектное представление типа int
  27.  v.addElement(I);  
  28.  return v;
  29. }
  30.  
  31.  
  32. public int appendData(Vector v,Object obj) {
  33.  
  34.     Integer  Ind = (Integer)v.elementAt(0);   // получить значение начального элемента вектора как Integer
  35.     int ind = Ind.intValue();                      // преобразовать в нормальный int
  36.    
  37.     if ( ind == 0) {                                  // если равен 0, то свободных элементов нет
  38.       v.addElement(obj);//                    // тогда добавляем объект  к вектору
  39.       ind=v.size()-1;
  40.       }
  41.         else {
  42.           Integer I =( Integer)v.elementAt(ind);  // иначе ind указывает на свободный элемент (СЭ)
  43.           int i = I.intValue();                                //там хранится предыдущий  (СЭ) который получаем
  44.     v.setElementAt(obj, ind);                  // Замещаем элемент вектора с номером ind объектом obj
  45.     v.setElementAt(I, 0);                    // в начальный элемент вектора пишем предыдущий  СЭ
  46.           }
  47.  
  48.   return ind;          // возвращаем индекс объекта в векторе
  49. }
  50.  
  51.   public int removeData (Vector v, int ind){
  52.     int ret = 0;
  53.     if ( ind>v.size()-1) return  -1 ;
  54.     if (getTypeData( v, ind).compareTo("java.lang.Integer")==0 )  return  -2 ;
  55.      
  56.     if ( ind==v.size()-1) v.removeElementAt(ind) ;
  57.       else {
  58.            v.setElementAt(null, ind);
  59.            Integer IndOld=(Integer)v.elementAt(0); // получить предыдущее знач 0 элемента
  60.            int ind_=IndOld.intValue();  
  61.            v.setElementAt(IndOld, ind);     // записать его в элемент который на удаление
  62.            Integer IndNew = new Integer(ind);
  63.            v.setElementAt(IndNew, 0);   // 0 элемент указывает на новый        
  64.     }        
  65.   return ret;
  66.   }
  67.  
  68.  
  69. public String getTypeData( Vector v, int ind){
  70. return  v.elementAt(ind) . getClass().getName() ;
  71. }
  72.  
  73. // link strsize nomberVector
  74.  
  75.  public  void cre0 (String s) { // , boolean immediate) { // временная вспомогательная ф-ция. создающая упрощенную запись в словаре
  76.   short tmp = memory[here]; //получить here
  77.   memory[tmp]=memory[latest];
  78.   memory[latest]=tmp;
  79.   tmp++;
  80.   int i = s.length();    // получаем длинну строки
  81. //  if (immediate)  i=0-i; // если immediate , число отрицательно, (временно для простоты)
  82.   memory[tmp]= (short)i;
  83.   tmp++;  
  84.   i=appendData(StringVector, s);
  85.   memory[tmp]= (short)i;  
  86.   tmp++;
  87.   memory[tmp]=666;
  88.   tmp++;
  89.   memory[here]=tmp;  //устанавливается новое значение here
  90. }
  91.  
  92.  
  93.  
  94. public  int number(String s) {  // тут ьольше 0
  95.   int ret = 0;
  96.   int ii;
  97.   try {ii = Integer.parseInt(s);
  98.  //      ST.push(ii);
  99.  ret = ii;  
  100.       } catch (Exception e) {ret=-1;}
  101.   return ret;
  102. }
  103. ////////////////////////////////реализация WORD//////////////////////////////////////////
  104.  
  105. public  int _IN=0;       // !!!!to memory
  106. public String TIB; //  строковая переменная - иммитирует tib
  107.  
  108.  
  109. public static  boolean ifblank(char ch) {
  110.    boolean ret=false;
  111.    if(ch == ' ' || ch == '\n' || ch == '\t' || ch=='\r') ret = true;
  112.  return ret;  
  113.  }
  114.  
  115. static  public int skipBlank(String s, int _in) {
  116.       int position;
  117.       position=_in;
  118.       boolean log=true;
  119.       while (log)  
  120.       if ( (position)==s.length() ) {position= -1; log = false; }  // достигнут конец потока возвращает -1
  121.        else
  122.        {
  123.          if  ( ifblank( s.charAt(position))  ) position++;  else log=false;
  124.          }  //else
  125.  return position;
  126. } //endfunk
  127.    
  128.  static    public int skipUntilBlank(String s, int _in) {
  129.       int position;
  130.       position=_in;
  131.       boolean log=true;
  132.       while (log)  
  133.       if ( (position)==s.length() ) {  log = false; }  // достигнут конец  
  134.        else
  135.        {
  136.          if  ( ! ifblank( s.charAt(position))  ) position++;  else log=false; //если не бланк
  137.          }  //else
  138.  return position;
  139. } //endfunk
  140.  
  141. public   String word_( String s ) {
  142.   String w = null;
  143.   int start, ends;
  144.   start=skipBlank(s, _IN);  
  145.   if (start==-1) w=""; // достигнут конец потока, возвращает слово нулевой длинны
  146.      else {
  147.      ends=skipUntilBlank(s, start);  
  148.      _IN=ends;
  149.       w=s.substring(start,ends);  
  150.       }
  151. return w;    
  152. }  
  153.  
  154.  
  155.  
  156. }  //all
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top