DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦2d2c035af⟧ TextFileVerbose

    Length: 4608 (0x1200)
    Types: TextFileVerbose
    Names: »tpascvalue«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦6b41451d2⟧ 
        └─⟦this⟧ »tpascvalue« 

TextFileVerbose

job jaba 6 600 time 2 0 perm disc 20 3

; file tpascvalue mini

(pascvalue = set 1 disc
pascvalue = pascal
lookupprog pascvalue 
if ok.no
finis
scope user pascvalue
platvalue = assign pascvalue
scope user platvalue
finis output.no )

program value_generator( input, output );

(* program to generate syntactically correct 
value statement(s) for the pascal and pascal80
compilers from the bobs generated parse tables

call:

valfile = pascvalue/platvalue tablefile


*)

const
pow_12 = 4096;
name = 10;
equal = 6;
pasc_value = 'pascvalue';
quote = "'";


var
dummy, symbmax, prodmax, lrmax, lxmax, number_to_skip : integer;
prog_name, value_file, table_file : alfa;
last_capital, last_lower, ch1, cc : char;
a, b, c, d, e, step : integer;



begin
if system( 0, dummy, value_file ) mod pow_12 <> name then writeln(input);
if system( 1, dummy, prog_name  ) <> equal * pow_12 +name then writeln(input);
if system( 2, dummy, table_file ) mod pow_12 <> name then writeln(input);

open( input, table_file); reset( input );

open( output, value_file); rewrite( output );

readln( input, number_to_skip );

if prog_name = pasc_value then
begin
last_capital := 'Z'; last_lower := 'z';
symbmax :=  207;
prodmax :=  289;
lrmax   := 1129;
lxmax   :=  178;

end
else
begin (* pascal80 *)
last_capital := ']';  last_lower := '}';
readln( input, symbmax, prodmax,lrmax, lxmax );
number_to_skip := number_to_skip - 4;

end;


for step := 1 to number_to_skip do readln( input ); (* skip constants *)

readln ( input ); (* skip 'comment end'  *)


(* now output the start of the value statement  *)

writeln( output, nl, 'value ', nl );

writeln( output, 'digitch = (', nl,
"<' ' .. '/'> * false, <'0' .. '9'> * true, <':' .. '~'> * false ); " );
writeln( output, 'namech  = (', nl,
"<' ' .. '/'> * false, <'0' .. '9'> * true, <':' .. '@'> * false, ", nl,
"<'A' ..'", last_capital, "'> * true, ");
if last_capital = 'Z' then write( output, "false, false, false, ");
write( output, "false, true (* _ *), false, " );
write( output, nl, "<'a' .. '", last_lower  , "'> * true" );
if last_lower = 'z' then write( output, ", false, false, false" );
writeln( output, ", false ); " );


writeln( output, nl, nl, 'entry = (' );

step := 0;
for ch1 := firstch to lastch do
begin
step := step + 1; 
if step mod 6 = 0 then writeln( output );
readln( input, cc (* leading space *) , cc, a, b, c );
if cc <> ch1 then writeln(' error, cc, ch1 =', cc, ch1 );
write( output, '( ', a:1, ', ', b:1, ', ', c:1, ', ' );
write( output, "'", cc, "'" );
if cc = quote then write( output, quote );
write( output, ')' );
if ch1 <> lastch then write( output, ', ' );

end;
writeln( output, ' ); ' );


writeln( output, nl, nl, 'lx = (' );
for step := 0 to lxmax do
begin
if step mod 6 = 0 then writeln( output );
readln( input, cc, cc, a, b, c );
write( output, '( ', a:1, ', ', b:1, ', ', c:1, ', ' );
write( output, "'", cc, "'" );
if cc = quote then write( output, quote );
write( output, ')' );
if step <> lxmax then write( output, ', ' );

end;
writeln( output, ' );' );


writeln( output, nl, nl, 'lr = (' );
for step := 0 to lrmax do
begin
if step mod 4 = 0 then writeln( output );
read( input, a, b, c, d );
if c <> 5 then 
readln( input, e)
else
readln( input );

write( '(', a:1, ', ', b:1, ', ', c:1, ':( ', d:1 );
if c <> 5 then write( output, ', ', e:1 );
write( output, ' ))' );
if step <> lrmax then write( output, ', ' );

end;

writeln( output, '); ', nl, nl, '(* end of value part *) ' );


if prog_name <> pasc_value then
begin 
(* add a value statement for initialization of 'prodtab' *)


writeln( output, 'prodtab = ( 0, ' );

for step := 1 to prodmax do
begin
readln( input, a, b );
if a <> step then writeln( output, ' error!! step =', step );
write( b : 4 );
if step <> prodmax then write( output, ', ' );
if step mod 10 = 0 then writeln( output );

end;
writeln( output, ' );' );

writeln( output, '(* end of value part *) ');


end; (* pascal80 prodtab ! *)

close( output );

end.


«eof»