home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol166 / lisco.rec < prev    next >
Encoding:
Text File  |  1984-04-29  |  4.9 KB  |  136 lines

  1.  
  2. [LISCO.REC]
  3. [Post production scheme to compile LISP into REC]
  4. [20 December 1980]
  5.  
  6. [[]]
  7.  
  8.  
  9.  
  10. [many spaces are redundant]
  11. {
  12.     [cr, lf]            (2573TL;)&
  13.     [read console]        (R13%='';T08%(=2080[sp,bs]TL)(@J|;L@J;);)J
  14.     [logon message]        ('
  15. Type a LISP function using {}`s rather than ()`s, and
  16. enclosing the whole function within *...|. End the line
  17. with a carriage return. Use lower case. For example:
  18.  
  19.     *{car {cdr {quote {1 2 3 4 5}}}}|
  20.  
  21. Each new keystroke will show another step of compilation.
  22. 'TL@&'Initial Axiom:'TL@&@JI;:)R
  23.     [to shorten program]    (UQzml;)U
  24.     [write workspace]        (JZqt;)W
  25.     [to shorten program]    (zZQml;)Z
  26.     [signoff message]        (@&'Theorem:'TL@&JZqt;)X
  27.                 (@R(@&@WRL
  28. JZ''E'  '@U0$S('  'E@Z1$S(
  29.     JZD''I0$ryGI' 'I1$ryGI''I;)nL;nL)nL:
  30. JZ''E'{ '@U0$S('{ 'E@Z1$S(
  31.     JZD''I0$ryGI'{'I1$ryGI''I;)nL;nL)nL:
  32. JZ''E' }'@U0$S(' }'E@Z1$S(
  33.     JZD''I0$ryGI'}'I1$ryGI''I;)nL;nL)nL:
  34. JZ''E'{ }'@U0$S('{ }'E@Z1$S(
  35.     JZD''I0$ryGI'{}'I1$ryGI''I;)nL;nL)nL:
  36. JZ' 'E@Z0$S(
  37.     JZD''I0$ryGI''I;)nL:
  38.  
  39. [others are essential]
  40. JZ''E'*'@U0$S('*'E'{'@U1$S('{'E@Z2$S(
  41.     JZD''I0$ryGI''I1$ryGI' {*'I2$ryGI''I;)nL;nL)nL;nL)nL:
  42. JZ''E'%'@U0$S('%'E'}'@U1$S('}'E@Z2$S(
  43.     JZD''I0$ryGI''I1$ryGI'} %'I2$ryGI''I;)nL;nL)nL;nL)nL:
  44. JZ''E'*'@U0$S('*'E@Z1$S(
  45.     JZD'%'I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  46. JZ''E'%'@U0$S('%'E@Z1$S(
  47.     JZD'#'I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  48.  
  49. [isolate balancing parentheses]
  50. JZ''E':{'@U0$S(':{'E'{'@U1$S('{'E'}:'@U2$S('}:'E@Z3$S(
  51.     JZD''I0$ryGI'{'I1$ryGI':{'I2$ryGI'}:'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  52. JZ''E'#:{'@U0$S('#:{'E'}:'@U1$S('}:'E@Z2$S(
  53.     JZD''I0$ryGI'!'I1$ryGI'!'I2$ryGI''I;)nL;nL)nL;nL)nL:
  54. JZ''E':{'@U0$S(':{'E'}:'@U1$S('}:'E@Z2$S(
  55.     JZD''I0$ryGI'['I1$ryGI']'I2$ryGI''I;)nL;nL)nL;nL)nL:
  56. JZ''E'#{'@U0$S('#{'E'}'@U1$S('}'E@Z2$S(
  57.     JZD''I0$ryGI'#:{'I1$ryGI'}:'I2$ryGI''I;)nL;nL)nL;nL)nL:
  58. JZ''E'['@U0$S('['E@Z1$S(
  59.     JZD''I0$ryGI'{'I1$ryGI''I;)nL;nL)nL:
  60. JZ''E']'@U0$S(']'E@Z1$S(
  61.     JZD''I0$ryGI'}'I1$ryGI''I;)nL;nL)nL:
  62. JZ''E'#'@U0$S('#'E@Z1$S(
  63.     JZD''I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  64.  
  65. [separate elements of top level]
  66. JZ''E'&'@U0$S('&'E'!'@U1$S('!'E'!'@U2$S('!'E@Z3$S(
  67.     JZD''I0$ryGI''I1$ryGI'!'I2$ryGI'!&'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  68. JZ''E'&'@U0$S('&'E'{'@U1$S('{'E'!'@U2$S('!'E@Z3$S(
  69.     JZD''I0$ryGI'&'I1$ryGI'#{'I2$ryGI'!'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  70. JZ''E'&'@U0$S('&'E@Z1$S(
  71.     JZD''I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  72.  
  73. [put markers between top level elements]
  74. JZ''E'~!'@U0$S('~!'E'!'@U1$S('!'E'!'@U2$S('!'E@Z3$S(
  75.     JZD''I0$ryGI'^!'I1$ryGI'!^~'I2$ryGI'!'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  76. JZ''E'~ '@U0$S('~ 'E@Z1$S(
  77.     JZD''I0$ryGI'~'I1$ryGI''I;)nL;nL)nL:
  78. JZ''E'~'@U0$S('~'E' '@U1$S(' 'E'!'@U2$S('!'E@Z3$S(
  79.     JZD''I0$ryGI'^'I1$ryGI'^~'I2$ryGI'!'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  80. JZ''E'~!'@U0$S('~!'E@Z3$S(
  81.     JZD''I0$ryGI'!'I3$ryGI''I;)nL;nL)nL:
  82. JZ''E'~'@U0$S('~'E'!'@U1$S('!'E@Z3$S(
  83.     JZD''I0$ryGI'^'I1$ryGI'^!'I3$ryGI''I;)nL;nL)nL;nL)nL:
  84.  
  85. [auxiliary cursors]
  86. JZ''E'?r!'@U0$S('?r!'E@Z1$S(
  87.     JZD''I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  88. JZ''E'?s!'@U0$S('?s!'E@Z1$S(
  89.     JZD''I0$ryGI''I1$ryGI''I;)nL;nL)nL:
  90. JZ''E'?r'@U0$S('?r'E' '@U1$S(' 'E'!'@U2$S('!'E@Z3$S(
  91.     JZD''I0$ryGI'nLn'I1$ryGI'$S?r'I2$ryGI'!'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  92. JZ''E'?s'@U0$S('?s'E' '@U1$S(' 'E'!'@U2$S('!'E@Z3$S(
  93.     JZD''I0$ryGI''I1$ryGI'$rmml'I1$ryGI'$S?s'I2$ryGI'!'I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  94.  
  95. [always be sure that EVAL gets a balanced expression]
  96. JZ'{'E'|'@U1$S('|'E@Z2$S(
  97.     JZD'#{'I1$ryGI'|'I2$ryGI''I;)nL;nL)nL:
  98.  
  99. [EVAL: compile the primitive LISP forms]
  100. JZ'!{lambda 'E'!'@U1$S('!'E@Z2$S(
  101.     JZD'!#{lambda 'I1$ryGI'!'I2$ryGI''I;)nL;nL)nL:
  102. JZ'!!lambda {'E'}'@U1$S('}'E'!'@U2$S('!'E'!'@U3$S('!'E'|'@U4$S('|'E@Z5$S(
  103.     JZD''I4$ryGI'{? ?r'I1$ryGI' !}'I2$ryGI'{? ?s'I1$ryGI' !}'I3$ryGI'|'I5$ryGI''I;)nL;nL)nL;nL)nL;nL)nL;nL)nL:
  104. JZ'!car 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  105.     JZD''I1$ryGI' 'I2$ryGI'|@0'I3$ryGI''I;)nL;nL)nL;nL)nL:
  106. JZ'!cdr 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  107.     JZD''I1$ryGI' 'I2$ryGI'|@1'I3$ryGI''I;)nL;nL)nL;nL)nL:
  108. JZ'!cons 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  109.     JZD''I1$ryGI' 'I2$ryGI'|@2'I3$ryGI''I;)nL;nL)nL;nL)nL:
  110. JZ'!atom 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  111.     JZD''I1$ryGI' 'I2$ryGI'|@3'I3$ryGI''I;)nL;nL)nL;nL)nL:
  112. JZ'!eq 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  113.     JZD''I1$ryGI' 'I2$ryGI'|@4'I3$ryGI''I;)nL;nL)nL;nL)nL:
  114. JZ'!quote 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  115.     JZD''I2$ryGI'|`'I1$ryGI'`'I3$ryGI''I;)nL;nL)nL;nL)nL:
  116. JZ'!if ^'E'^^'@U1$S('^^'E'^^'@U2$S('^^'E'^!'@U3$S('^!'E'|'@U4$S('|'E@Z5$S(
  117.     JZD''I3$ryGI' {? ;L} 'I2$ryGI' {? `T`=} 'I1$ryGI' ?x 'I4$ryGI'|}'I5$ryGI''I;)nL;nL)nL;nL)nL;nL)nL;nL)nL:
  118. JZ'!if 'E'!'@U1$S('!'E@Z2$S(
  119.     JZD'!if ~&'I1$ryGI'!'I2$ryGI''I;)nL;nL)nL:
  120. JZ'!? 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  121.     JZD''I2$ryGI'|'I1$ryGI''I3$ryGI''I;)nL;nL)nL;nL)nL:
  122. JZ'!'E' '@U0$S(' 'E'!'@U1$S('!'E'|'@U2$S('|'E@Z3$S(
  123.     JZD''I1$ryGI' 'I2$ryGI'|@'I0$ryGI''I3$ryGI''I;)nL;nL)nL;nL)nL;nL)nL:
  124. JZ'!'E'!'@U0$S('!'E'|'@U2$S('|'E@Z3$S(
  125.     JZD''I2$ryGI'|@'I0$ryGI''I3$ryGI''I;)nL;nL)nL;nL)nL:
  126. JZ'?x 'E'|'@U1$S('|'E@Z2$S(
  127.     JZD''I1$ryGI'|{'I2$ryGI''I;)nL;nL)nL:
  128. JZ''E' '@U1$S(' 'E'|'@U2$S('|'E@Z3$S(
  129.     JZD''I2$ryGI'|'I1$ryGI'$ryG'I3$ryGI''I;)nL;nL)nL;nL)nL:
  130.  
  131. [close out the compilation]
  132. JZ'|'E@Z1$S(
  133.     JZD'{'I1$ryGI'T;}'I;)nL:;)@X;)}
  134.  
  135. [end]
  136.