|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 8386 (0x20c2)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
package body Ascan_Io is
-- gets input and stuffs it into 'buf'. number of characters read, or YY_NULL,
-- is returned in 'result'.
procedure Yy_Input (Buf : out Unbounded_Character_Array;
Result : out Integer;
Max_Size : in Integer) is
C : Character;
I : Integer := 1;
Loc : Integer := Buf'First;
begin
while (I <= Max_Size) loop
if (End_Of_Line) then -- Ada ate our newline, put it back on the end.
Buf (Loc) := Ascii.Lf;
Skip_Line (1);
else
Get (Buf (Loc));
end if;
Loc := Loc + 1;
I := I + 1;
end loop;
Result := I - 1;
exception
when End_Error =>
Result := I - 1;
-- when we hit EOF we need to set yy_eof_has_been_seen
Yy_Eof_Has_Been_Seen := True;
end Yy_Input;
-- yy_get_next_buffer - try to read in new buffer
--
-- returns a code representing an action
-- EOB_ACT_LAST_MATCH -
-- EOB_ACT_RESTART_SCAN - restart the scanner
-- EOB_ACT_END_OF_FILE - end of file
function Yy_Get_Next_Buffer return Eob_Action_Type is
Dest : Integer := 0;
Source : Integer := Yytext_Ptr - 1; -- copy prev. char, too
Number_To_Move : Integer;
Ret_Val : Eob_Action_Type;
Num_To_Read : Integer;
begin
if (Yy_C_Buf_P > Yy_N_Chars + 1) then
raise Null_In_Input;
end if;
-- try to read more data
-- first move last chars to start of buffer
Number_To_Move := Yy_C_Buf_P - Yytext_Ptr;
for I in 0 .. Number_To_Move - 1 loop
Yy_Ch_Buf (Dest) := Yy_Ch_Buf (Source);
Dest := Dest + 1;
Source := Source + 1;
end loop;
if (Yy_Eof_Has_Been_Seen) then
-- don't do the read, it's not guaranteed to return an EOF,
-- just force an EOF
Yy_N_Chars := 0;
else
Num_To_Read := Yy_Buf_Size - Number_To_Move - 1;
if (Num_To_Read > Yy_Read_Buf_Size) then
Num_To_Read := Yy_Read_Buf_Size;
end if;
-- read in more data
Yy_Input (Yy_Ch_Buf (Number_To_Move .. Yy_Ch_Buf'Last),
Yy_N_Chars, Num_To_Read);
end if;
if (Yy_N_Chars = 0) then
if (Number_To_Move = 1) then
Ret_Val := Eob_Act_End_Of_File;
else
Ret_Val := Eob_Act_Last_Match;
end if;
Yy_Eof_Has_Been_Seen := True;
else
Ret_Val := Eob_Act_Restart_Scan;
end if;
Yy_N_Chars := Yy_N_Chars + Number_To_Move;
Yy_Ch_Buf (Yy_N_Chars) := Yy_End_Of_Buffer_Char;
Yy_Ch_Buf (Yy_N_Chars + 1) := Yy_End_Of_Buffer_Char;
-- yytext begins at the second character in
-- yy_ch_buf; the first character is the one which
-- preceded it before reading in the latest buffer;
-- it needs to be kept around in case it's a
-- newline, so yy_get_previous_state() will have
-- with '^' rules active
Yytext_Ptr := 1;
return Ret_Val;
end Yy_Get_Next_Buffer;
procedure Yyunput (C : Character; Yy_Bp : in out Integer) is
Number_To_Move : Integer;
Dest : Integer;
Source : Integer;
Tmp_Yy_Cp : Integer;
begin
Tmp_Yy_Cp := Yy_C_Buf_P;
Yy_Ch_Buf (Tmp_Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
if (Tmp_Yy_Cp < 2) then
-- need to shift things up to make room
Number_To_Move := Yy_N_Chars + 2; -- +2 for EOB chars
Dest := Yy_Buf_Size + 2;
Source := Number_To_Move;
while (Source > 0) loop
Dest := Dest - 1;
Source := Source - 1;
Yy_Ch_Buf (Dest) := Yy_Ch_Buf (Source);
end loop;
Tmp_Yy_Cp := Tmp_Yy_Cp + Dest - Source;
Yy_Bp := Yy_Bp + Dest - Source;
Yy_N_Chars := Yy_Buf_Size;
if (Tmp_Yy_Cp < 2) then
raise Pushback_Overflow;
end if;
end if;
if (Tmp_Yy_Cp > Yy_Bp and then
Yy_Ch_Buf (Tmp_Yy_Cp - 1) = Ascii.Lf) then
Yy_Ch_Buf (Tmp_Yy_Cp - 2) := Ascii.Lf;
end if;
Tmp_Yy_Cp := Tmp_Yy_Cp - 1;
Yy_Ch_Buf (Tmp_Yy_Cp) := C;
-- Note: this code is the text of YY_DO_BEFORE_ACTION, only
-- here we get different yy_cp and yy_bp's
Yytext_Ptr := Yy_Bp;
Yy_Hold_Char := Yy_Ch_Buf (Tmp_Yy_Cp);
Yy_Ch_Buf (Tmp_Yy_Cp) := Ascii.Nul;
Yy_C_Buf_P := Tmp_Yy_Cp;
end Yyunput;
procedure Unput (C : Character) is
begin
Yyunput (C, Yy_Bp);
end Unput;
function Input return Character is
C : Character;
Yy_Cp : Integer := Yy_C_Buf_P;
begin
Yy_Ch_Buf (Yy_Cp) := Yy_Hold_Char;
if (Yy_Ch_Buf (Yy_C_Buf_P) = Yy_End_Of_Buffer_Char) then
-- need more input
Yytext_Ptr := Yy_C_Buf_P;
Yy_C_Buf_P := Yy_C_Buf_P + 1;
case Yy_Get_Next_Buffer is
-- this code, unfortunately, is somewhat redundant with
-- that above
when Eob_Act_End_Of_File =>
if (Yywrap) then
Yy_C_Buf_P := Yytext_Ptr;
return Ascii.Nul;
end if;
Yy_Ch_Buf (0) := Ascii.Lf;
Yy_N_Chars := 1;
Yy_Ch_Buf (Yy_N_Chars) := Yy_End_Of_Buffer_Char;
Yy_Ch_Buf (Yy_N_Chars + 1) := Yy_End_Of_Buffer_Char;
Yy_Eof_Has_Been_Seen := False;
Yy_C_Buf_P := 1;
Yytext_Ptr := Yy_C_Buf_P;
Yy_Hold_Char := Yy_Ch_Buf (Yy_C_Buf_P);
return (Input);
when Eob_Act_Restart_Scan =>
Yy_C_Buf_P := Yytext_Ptr;
when Eob_Act_Last_Match =>
raise Unexpected_Last_Match;
when others =>
null;
end case;
end if;
C := Yy_Ch_Buf (Yy_C_Buf_P);
Yy_C_Buf_P := Yy_C_Buf_P + 1;
Yy_Hold_Char := Yy_Ch_Buf (Yy_C_Buf_P);
return C;
end Input;
procedure Output (C : Character) is
begin
Text_Io.Put (C);
end Output;
-- default yywrap function - always treat EOF as an EOF
function Yywrap return Boolean is
begin
return True;
end Yywrap;
procedure Open_Input (Fname : in String) is
F : File_Type;
begin
Yy_Init := True;
Open (F, In_File, Fname);
Set_Input (F);
end Open_Input;
procedure Create_Output (Fname : in String := "") is
F : File_Type;
begin
if (Fname /= "") then
Create (F, Out_File, Fname);
Set_Output (F);
end if;
end Create_Output;
procedure Close_Input is
begin
null;
end Close_Input;
procedure Close_Output is
begin
null;
end Close_Output;
end Ascan_Io;
-- Copyright (c) 1990 Regents of the University of California.
-- All rights reserved.
--
-- This software was developed by John Self of the Arcadia project
-- at the University of California, Irvine.
--
-- Redistribution and use in source and binary forms are permitted
-- provided that the above copyright notice and this paragraph are
-- duplicated in all such forms and that any documentation,
-- advertising materials, and other materials related to such
-- distribution and use acknowledge that the software was developed
-- by the University of California, Irvine. The name of the
-- University may not be used to endorse or promote products derived
-- from this software without specific prior written permission.
-- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-- TITLE character classes routines
-- AUTHOR: John Self (UCI)
-- DESCRIPTION routines for character classes like [abc]
-- $Header: /co/ua/self/arcadia/aflex/ada/src/RCS/cclB.a,v 1.5 90/01/12 15:19:40 self Exp Locker: self $