SHARE
TWEET

stp 5 main

vikt144 Feb 3rd, 2020 4 in 205 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. import java.util.*;
  4. import forth.*;
  5.  
  6.  
  7. public class crtDoes  {
  8.  
  9.  
  10.     public static void main(String[] args) {
  11.  
  12.         Scanner in = new Scanner(System.in);
  13.  
  14.         System.out.println(" введите строку или end для выхода");
  15.  
  16.  //////////////////////////////////////////////STACK//////
  17.   STACK ST,STa;   // стеки данных и адресный      
  18.   ST=new STACK();
  19.   STa=new STACK();  
  20.   int[] stackarray = new int [20];
  21.   int[] adrstackarray = new int [20];  
  22.   int[] ports = new int[20];  
  23.  
  24.   ST.stack=stackarray;
  25.   STa.stack=adrstackarray;  
  26.   ////////////////////////////////////////
  27.  
  28.  fas as = new fas();
  29.  
  30.       as.ST=ST;  //   добавить стек
  31.       as.here=  2;
  32.       as.  latest=3;
  33.       as.state   =4;      
  34.       as.  memory[as.here]=6; //взято от балды
  35.       as.  memory[as.latest]=0; // записи в словари еще не создавались
  36.       as.  memory[as.state] =0; // 0 на данный момент исполнение        
  37.     Vector V=null;
  38.      V = as.initVirtualMem(0);
  39.     as.StringVector=V;
  40.  
  41.    FVM VM=new FVM();
  42.    VM.stack=as.ST;
  43.    VM.adrStack=STa;
  44.    VM.image=as.memory;
  45.    VM.ports=ports;
  46.    as.VM=VM;
  47.  
  48.    VM.as=as;
  49.  
  50.  
  51.  
  52. ////////////////////////////////// загрузка форт слов
  53.   String ini = as.initwords;
  54.   as.TIB=null; as.TIB=ini;
  55.   as._IN=0;
  56.   boolean enddo=false; //для выхода из цикла
  57.   do {
  58.  ///   String    name    = as.WORD(ini);
  59.     int old = as._IN;
  60.     as.ST.push(666);  
  61.     as.WORD();    // на стеке 0    
  62.     as.ST.pop();  // сброс стека
  63.     System.out.println("added " + as.StrBuffer);  
  64. //    as.cre1();  
  65. //                                                  
  66.    
  67.    
  68.     if (as.StrBuffer.compareTo("end_") != 0) {
  69.       as._IN=old;  // вернуть указатель в строке
  70.       as.cre1();
  71.  
  72.       as.ST.push(1);
  73.       as.setCFA();
  74.  
  75.       as.ST.push(666);
  76.       as.WORD();
  77.       as.ST.pop();  // сброс стека      
  78.       String codeString = as.StrBuffer;
  79.  
  80.       as.ST.push(666);
  81.       as.WORD();
  82.       as.ST.pop();  // сброс стека    
  83.       String immString  = as.StrBuffer;
  84.  
  85.       int code=0;
  86.       try { code=Integer.parseInt(codeString);} catch (Exception e){ System.out.print("huynia code");}  
  87.  //     int imm=0;
  88.  //     try {imm=Integer.parseInt(immString);} catch (Exception e){ System.out.print("huynia imme");}  
  89.  //     boolean bool =  imm>0;
  90.  
  91.       as.ST.push(code); as.comma16();
  92.            
  93.       as.ST.push(9); as.comma16();  // 9 - код операции ";" возврат из подпрограммы
  94.  
  95. //System.out.print(name+code + " " +imm);
  96.       }
  97.        else enddo = true;
  98.      } while (! enddo) ;
  99.  
  100. ///////////////////////////////////////////
  101.  
  102.  as.TIB=null; as.TIB="EXIT  . : ; create allot does> , here compile  immediate >resolve <resolve load ( (loop) compile2 ";
  103.   as._IN=0; // тут дальнейшие определения
  104.  
  105.  as.cre1();  // создается  определение для exit
  106.  
  107.  as.exit_addr=as.memory[as.here];//сохранить точску входа в exit,чтобы положить на стек возвратов  
  108.  
  109.  as.ST.push(1); as.comma16();  // lit  
  110.  as.ST.push(0); as.comma16();  // 0
  111.  as.ST.push(1); as.comma16();  // lit  
  112.  as.ST.push(0); as.comma16();  // 0
  113.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 0 "exit"
  114.  
  115.   as.ST.push(2);  as.setCFA();
  116. /*
  117.        as.find_("EXIT");
  118.        ST.pop(); //
  119.        as.exit_addr=ST.pop(); //сохранить точску входа в exit,чтобы положить на стек возвратов  
  120.  */
  121. // определяется "."
  122.  
  123.  as.cre1();
  124.   as.ST.push(1); as.comma16();  // lit  
  125.  as.ST.push(1); as.comma16();  // 1    
  126.  as.ST.push(1); as.comma16();  // lit  
  127.  as.ST.push(0); as.comma16();  // 0  // номер порта
  128.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 1 "."
  129.   as.ST.push(9); as.comma16();  //9  ";"
  130.  
  131.   as.ST.push(2);  as.setCFA();
  132.  
  133.  as.cre1();
  134.   as.ST.push(1); as.comma16();  // lit  
  135.  as.ST.push(2); as.comma16();  // 2    : процедура      
  136.  as.ST.push(1); as.comma16();  // lit  
  137.  as.ST.push(0); as.comma16();  // 0  // номер порта
  138.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 0 "proc"  
  139.    as.ST.push(9); as.comma16();  //9  ";"
  140.    as.ST.push(2);  as.setCFA();
  141.  
  142.  
  143.  as.cre1();
  144.   as.ST.push(1); as.comma16();  // lit  
  145.  as.ST.push(3); as.comma16();  // 3   ret выход из процедуры    
  146.  as.ST.push(1); as.comma16();  // lit  
  147.  as.ST.push(0); as.comma16();  // 0  // номер порта
  148.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 0 "ret"  
  149.   as.ST.push(9); as.comma16();  //9  ";"
  150.  
  151.  as.immediate();
  152.   as.ST.push(2);  as.setCFA();
  153.  
  154.   as.cre1();
  155.   as.ST.push(1); as.comma16();  // lit  
  156.  as.ST.push(4); as.comma16();  // create    
  157.  as.ST.push(1); as.comma16();  // lit  
  158.  as.ST.push(0); as.comma16();  // 0  // номер порта
  159.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 4 "create"
  160.   as.ST.push(9); as.comma16();  //9  ";"  
  161.  
  162.   as.ST.push(2);  as.setCFA();
  163.  
  164.  
  165.   as.cre1();
  166.   as.ST.push(1); as.comma16();  // lit  
  167.  as.ST.push(5); as.comma16();  // allot    
  168.  as.ST.push(1); as.comma16();  // lit  
  169.  as.ST.push(0); as.comma16();  // 0  // номер порта
  170.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 5 "allot"
  171.   as.ST.push(9); as.comma16();  //9  ";"  
  172.  
  173.   as.ST.push(2);  as.setCFA();  
  174.  
  175.   as.cre1();
  176.   as.ST.push(1); as.comma16();  // lit  
  177.  as.ST.push(6); as.comma16();  // does>  
  178.  as.ST.push(1); as.comma16();  // lit  
  179.  as.ST.push(0); as.comma16();  // 0  // номер порта
  180.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 6 "does>"
  181.   as.ST.push(9); as.comma16();  //9  ";"  
  182.  
  183.   as.ST.push(2);  as.setCFA();  
  184.  
  185.   as.cre1();
  186.   as.ST.push(1); as.comma16();  // lit  
  187.  as.ST.push(7); as.comma16();  // ","  
  188.  as.ST.push(1); as.comma16();  // lit  
  189.  as.ST.push(0); as.comma16();  // 0  // номер порта
  190.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 7 ","
  191.   as.ST.push(9); as.comma16();  //9  ";"  
  192.  
  193.   as.ST.push(2);  as.setCFA();  
  194.  
  195.   as.cre1();
  196.   as.ST.push(1); as.comma16();  // lit  
  197.  as.ST.push(8); as.comma16();  // "here"  
  198.  as.ST.push(1); as.comma16();  // lit  
  199.  as.ST.push(0); as.comma16();  // 0  // номер порта
  200.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 8 "here"
  201.   as.ST.push(9); as.comma16();  //9  ";"  
  202.  
  203.   as.ST.push(2);  as.setCFA();      
  204.  
  205.   as.cre1();
  206.   as.ST.push(1); as.comma16();  // lit  
  207.  as.ST.push(9); as.comma16();  // "compile"  
  208.  as.ST.push(1); as.comma16();  // lit  
  209.  as.ST.push(0); as.comma16();  // 0  // номер порта
  210.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 9 "compile"
  211.   as.ST.push(9); as.comma16();  //9  ";"  
  212.  
  213.   as.ST.push(2);  as.setCFA();    
  214.  
  215.   as.cre1();
  216.   as.ST.push(1); as.comma16();  // lit  
  217.  as.ST.push(10); as.comma16();  // "immediate"  
  218.  as.ST.push(1); as.comma16();  // lit  
  219.  as.ST.push(0); as.comma16();  // 0  // номер порта
  220.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 10 "immediate"
  221.   as.ST.push(9); as.comma16();  //9  ";"  
  222.  
  223.   as.ST.push(2);  as.setCFA();      
  224.  
  225.   as.cre1();
  226.   as.ST.push(1); as.comma16();  // lit  
  227.  as.ST.push(11); as.comma16();  // ">resolve"  
  228.  as.ST.push(1); as.comma16();  // lit  
  229.  as.ST.push(0); as.comma16();  // 0  // номер порта
  230.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 11 ">resolve"  
  231.   as.ST.push(9); as.comma16();  //9  ";"  
  232.  
  233.   as.ST.push(2);  as.setCFA();      
  234.  
  235.  
  236.   as.cre1();
  237.   as.ST.push(1); as.comma16();  // lit  
  238.  as.ST.push(12); as.comma16();  // "<resolve"  
  239.  as.ST.push(1); as.comma16();  // lit  
  240.  as.ST.push(0); as.comma16();  // 0  // номер порта
  241.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 12 "<resolve"  
  242.   as.ST.push(9); as.comma16();  //9  ";"  
  243.  
  244.   as.ST.push(2);  as.setCFA();      
  245.  
  246.   as.cre1();
  247.   as.ST.push(1); as.comma16();  // lit  
  248.  as.ST.push(13); as.comma16();  // "load  
  249.  as.ST.push(1); as.comma16();  // lit  
  250.  as.ST.push(0); as.comma16();  // 0  // номер порта
  251.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 13 "load"  
  252.   as.ST.push(9); as.comma16();  //9  ";"  
  253.  
  254.   as.ST.push(2);  as.setCFA();    
  255.  
  256.   as.cre1();
  257.   as.ST.push(1); as.comma16();  // lit  
  258.  as.ST.push(14); as.comma16();  // "comment (  
  259.  as.ST.push(1); as.comma16();  // lit  
  260.  as.ST.push(0); as.comma16();  // 0  // номер порта
  261.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 14 "comment ( "  
  262.   as.ST.push(9); as.comma16();  //9  ";"  
  263.  
  264.  as.immediate();
  265.   as.ST.push(2);  as.setCFA();    
  266.  
  267.  
  268.   as.cre1();
  269.   as.ST.push(1); as.comma16();  // lit  
  270.  as.ST.push(15); as.comma16();  // (loop)  
  271.  as.ST.push(1); as.comma16();  // lit  
  272.  as.ST.push(0); as.comma16();  // 0  // номер порта
  273.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 15 "loop"  
  274.   as.ST.push(9); as.comma16();  //9  ";"  
  275.  
  276.   as.ST.push(2);  as.setCFA();    
  277.  
  278.  
  279.   as.cre1();
  280.   as.ST.push(1); as.comma16();  // lit  
  281.  as.ST.push(16); as.comma16();  // "compile2"  
  282.  as.ST.push(1); as.comma16();  // lit  
  283.  as.ST.push(0); as.comma16();  // 0  // номер порта
  284.  as.ST.push(29); as.comma16(); // out      -- вывод в порт 0, номер фции 16 "compile2"
  285.   as.ST.push(9); as.comma16();  //9  ";"  
  286.  
  287.   as.ST.push(2);  as.setCFA();    
  288.  
  289. /////////////////////////////////////////////////////
  290.  
  291. /*
  292. <адр строки> --  тут число , если ноль, то StrBuffer иначе индекс  в Vector
  293. */
  294.  
  295.  
  296. //ii
  297. as.TIB=null; as.TIB="";  
  298.  // String TIB=as.TIB;  //
  299.  while (as.TIB.compareTo("end")!=0) {
  300.            
  301.  
  302.        
  303.        as.TIB  =null;
  304.        
  305.        if (as.BLK_ == 0) {    
  306.        
  307.                 as.TIB  =in.nextLine();
  308.                              }
  309.                  
  310.         as._IN=0;  
  311.      as.interpret();
  312. System.out.println("st=" + as.ST.getDepth() + "   adrst= " +  as.VM.adrStack.getDepth() );
  313.  }
  314.  
  315.  //\\ii
  316.  
  317.  
  318.   printm(as.memory, 300  , 20 , 25 );      
  319.  
  320.   for (int k=0;k<V.size();k++) System.out.println(V.elementAt(k).toString() ) ;
  321.  
  322. //  System.out.println(as.getTypeData( V ,0 )  );
  323. }//main
  324.  
  325. static void printm(short[] mem,  int start , int str, int col) { //dump
  326.   int pos=start;
  327.   for (int l=0;l<str;l++) {
  328.    for (int k=0;k<col;k++) {
  329.      if (pos < mem.length )
  330.        {System.out.print(mem [pos]+" "); pos++;
  331.        }//endif
  332.      }//for  
  333.     System.out.println("# \n");
  334.  }//for
  335.  } //void
  336.  
  337. }//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