mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
48 lines
896 B
Plaintext
48 lines
896 B
Plaintext
xlate:
|
||
proc;
|
||
/* translate an M-expression to S-expression form */
|
||
if accum = 'label' then
|
||
do;
|
||
line = line || '(LABEL';
|
||
call scan();
|
||
if accum = '[' then
|
||
call scan();
|
||
else
|
||
call syntax();
|
||
call x_var();
|
||
call x_exp();
|
||
if accum = ']' then
|
||
call scan();
|
||
else
|
||
call syntax();
|
||
line = line || ')';
|
||
end;
|
||
else
|
||
if accum = 'lambda' then
|
||
do;
|
||
line = line || '(LAMBDA ';
|
||
call scan();
|
||
if accum = '[' then
|
||
call scan();
|
||
else
|
||
call syntax();
|
||
call x_formal();
|
||
call xx();
|
||
if accum = ']' then
|
||
call scan();
|
||
else
|
||
call syntax();
|
||
end;
|
||
else
|
||
do;
|
||
line = line ||'(';
|
||
call x_func();
|
||
if accum = '[' then
|
||
call scan();
|
||
else
|
||
call syntax();
|
||
do while (accum ^= ']');
|
||
call x_arg();
|
||
end;
|
||
end;
|
||
|