home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Benchmarks / palin25.w < prev    next >
Encoding:
Text File  |  1989-04-14  |  4.0 KB  |  253 lines

  1. procedure  main/0
  2.  
  3. _727:
  4.     init  Y1
  5.     put_variable_y  Y2,X1
  6.     call  palin25/1,2
  7.     put_unsafe_value  Y2,X1
  8.     put_variable_y  Y1,X2
  9.     call  serialize/2,1
  10.     put_unsafe_value  Y1,X1
  11.     escape  write/1
  12.     escape  nl/0
  13.     proceed
  14.  
  15.  
  16. procedure  serialize/2
  17.  
  18. _1380:
  19.     init  Y1
  20.     put_variable_y  Y2,X3
  21.     call  pairlists/3,2
  22.     put_unsafe_value  Y2,X1
  23.     put_variable_y  Y1,X2
  24.     call  arrange/2,1
  25.     put_unsafe_value  Y1,X1
  26.     put_constant  &1,X2
  27.     put_variable_x  X3,X3
  28.     execute_proc  numbered/3
  29.  
  30.  
  31. procedure  pairlists/3
  32.  
  33.     switch_on_term  _2196,_2197,fail
  34. _2202:
  35.     try_me_else  _2207,3
  36. _2197:
  37.     get_list  X1
  38.     unify_variable_x  X4
  39.     unify_variable_x  X1
  40.     get_list  X2
  41.     unify_variable_x  X5
  42.     unify_variable_x  X2
  43.     get_list  X3
  44.     unify_variable_x  X6
  45.     unify_variable_x  X3
  46.     get_structure  pair/2,X6,2
  47.     unify_value_x  X4
  48.     unify_value_x  X5
  49.     execute_proc  pairlists/3
  50. _2207:
  51.     trust_me_else  fail
  52. _2196:
  53.     get_nil  X1
  54.     get_nil  X2
  55.     get_nil  X3
  56.     proceed
  57.  
  58.  
  59. procedure  arrange/2
  60.  
  61.     switch_on_term  _3049,_3050,fail
  62. _3055:
  63.     try_me_else  _3060,2
  64. _3050:
  65.     get_list  X1
  66.     unify_variable_x  X3
  67.     unify_variable_x  X1
  68.     get_structure  tree/3,X2,3
  69.     unify_variable_y  Y3
  70.     unify_value_x  X3
  71.     unify_variable_y  Y1
  72.     put_value_x  X3,X2
  73.     put_variable_y  Y4,X3
  74.     put_variable_y  Y2,X4
  75.     call  split/4,4
  76.     put_unsafe_value  Y4,X1
  77.     put_value_y  Y3,X2
  78.     call  arrange/2,2
  79.     put_unsafe_value  Y2,X1
  80.     put_value_y  Y1,X2
  81.     execute_proc  arrange/2
  82. _3060:
  83.     trust_me_else  fail
  84. _3049:
  85.     get_constant  void,X2
  86.     get_nil  X1
  87.     proceed
  88.  
  89.  
  90. procedure  split/4
  91.  
  92.     switch_on_term  _4760,_4761,fail
  93. _4766:
  94.     try_me_else  _4771,4
  95. _4775:
  96.     get_list  X1
  97.     unify_value_x  X2
  98.     unify_variable_x  X1
  99.     cut
  100.     execute_proc  split/4
  101. _4771:
  102.     retry_me_else  _4812
  103. _4816:
  104.     get_variable_y  Y3,X2
  105.     get_variable_y  Y1,X4
  106.     get_list  X1
  107.     unify_variable_x  X1
  108.     unify_variable_y  Y4
  109.     get_list  X3
  110.     unify_value_x  X1
  111.     unify_variable_y  Y2
  112.     call  before/2,4
  113.     cut
  114.     put_value_y  Y4,X1
  115.     put_value_y  Y3,X2
  116.     put_value_y  Y2,X3
  117.     put_value_y  Y1,X4
  118.     execute_proc  split/4
  119. _4812:
  120.     retry_me_else  _4940
  121. _4944:
  122.     get_variable_y  Y3,X2
  123.     get_variable_y  Y2,X3
  124.     get_list  X1
  125.     unify_variable_x  X2
  126.     unify_variable_y  Y4
  127.     get_list  X4
  128.     unify_value_x  X2
  129.     unify_variable_y  Y1
  130.     put_value_y  Y3,X1
  131.     call  before/2,4
  132.     cut
  133.     put_value_y  Y4,X1
  134.     put_value_y  Y3,X2
  135.     put_value_y  Y2,X3
  136.     put_value_y  Y1,X4
  137.     execute_proc  split/4
  138. _4940:
  139.     trust_me_else  fail
  140. _4760:
  141.     get_nil  X1
  142.     get_nil  X3
  143.     get_nil  X4
  144.     proceed
  145. _4761:
  146.     try  _4775,4
  147.     retry  _4816
  148.     trust  _4944
  149.  
  150.  
  151. procedure  before/2
  152.  
  153. _6033:
  154.     get_structure  pair/2,X1,2
  155.     unify_variable_x  X1
  156.     unify_void
  157.     get_structure  pair/2,X2,2
  158.     unify_variable_x  X2
  159.     unify_void
  160.     escape  </2
  161.     proceed
  162.  
  163.  
  164. procedure  numbered/3
  165.  
  166.     switch_on_term  _6641,_6641,_6643
  167. _6643:
  168.     try_me_else  _6652,3
  169. _6656:
  170.     get_variable_y  Y1,X3
  171.     get_structure  tree/3,X1,3
  172.     unify_variable_x  X1
  173.     unify_variable_x  X4
  174.     unify_variable_y  Y2
  175.     get_structure  pair/2,X4,2
  176.     unify_void
  177.     unify_variable_y  Y3
  178.     put_value_y  Y3,X3
  179.     call  numbered/3,3
  180.     put_variable_x  X5,X1
  181.     put_value_y  Y3,X2
  182.     put_constant  +,X3
  183.     put_constant  &1,X4
  184.     escape  is/4
  185.     put_value_y  Y2,X1
  186.     put_value_x  X5,X2
  187.     put_value_y  Y1,X3
  188.     execute_proc  numbered/3
  189. _6652:
  190.     trust_me_else  fail
  191. _6641:
  192.     get_value_x  X2,X3
  193.     proceed
  194.  
  195.  
  196. procedure  palin25/1
  197.  
  198. _7346:
  199.     get_list  X1
  200.     unify_constant  &65
  201.     get_cdr_list
  202.     unify_constant  &66
  203.     get_cdr_list
  204.     unify_constant  &76
  205.     get_cdr_list
  206.     unify_constant  &69
  207.     get_cdr_list
  208.     unify_constant  &32
  209.     get_cdr_list
  210.     unify_constant  &87
  211.     get_cdr_list
  212.     unify_constant  &65
  213.     get_cdr_list
  214.     unify_constant  &83
  215.     get_cdr_list
  216.     unify_constant  &32
  217.     get_cdr_list
  218.     unify_constant  &73
  219.     get_cdr_list
  220.     unify_constant  &32
  221.     get_cdr_list
  222.     unify_constant  &69
  223.     get_cdr_list
  224.     unify_constant  &82
  225.     get_cdr_list
  226.     unify_constant  &69
  227.     get_cdr_list
  228.     unify_constant  &32
  229.     get_cdr_list
  230.     unify_constant  &73
  231.     get_cdr_list
  232.     unify_constant  &32
  233.     get_cdr_list
  234.     unify_constant  &83
  235.     get_cdr_list
  236.     unify_constant  &65
  237.     get_cdr_list
  238.     unify_constant  &87
  239.     get_cdr_list
  240.     unify_constant  &32
  241.     get_cdr_list
  242.     unify_constant  &69
  243.     get_cdr_list
  244.     unify_constant  &76
  245.     get_cdr_list
  246.     unify_constant  &66
  247.     get_cdr_list
  248.     unify_constant  &65
  249.     unify_nil
  250.     proceed
  251.  
  252.  
  253.