Hana 9e216da9ef go.mod: add go.mod and move pygments to third_party
After go1.16, go will use module mode by default,
even when the repository is checked out under GOPATH
or in a one-off directory. Add go.mod, go.sum to keep
this repo buildable without opting out of the module
mode.

> go mod init github.com/mmcgrana/gobyexample
> go mod tidy
> go mod vendor

In module mode, the 'vendor' directory is special
and its contents will be actively maintained by the
go command. pygments aren't the dependency the go will
know about, so it will delete the contents from vendor
directory. Move it to `third_party` directory now.

And, vendor the blackfriday package.

Note: the tutorial contents are not affected by the
change in go1.16 because all the examples in this
tutorial ask users to run the go command with the
explicit list of files to be compiled (e.g.
`go run hello-world.go` or `go build command-line-arguments.go`).
When the source list is provided, the go command does
not have to compute the build list and whether it's
running in GOPATH mode or module mode becomes irrelevant.
2021-02-15 16:45:26 -05:00

212 lines
5.0 KiB
Ada

-- Model IED Simulator
-- COL Gene Ressler, 1 December 2007
with Ada.Text_IO;
with Ada.Characters.Latin_1;
use Ada.Characters.Latin_1;
with Ada.Strings.Fixed;
use Ada.Strings.Fixed;
with Ada.Strings;
with Ada.Strings.Bounded;
with Binary_Search;
with Ada.Containers.Generic_Array_Sort;
package body Scanner is
Constant_123 : constant Character := Character'Val (16#00#);
MAX_KEYWORD_LENGTH_C : constant Natural := 24;
New_Constant : constant New_Type
:= 2;
KEYWORDS_C : constant Keyword_Array_T :=
(To_BS("description"),
To_BS("with"));
procedure Blah;
procedure blah is
begin
Declaration:
declare
Joe : Type_Type := Random;
begin
Do_Something;
end Declaration;
Loop_ID:
loop
Loop_Do;
exit when 1=2;
end loop Loop_ID;
if True or else False then
Do_This();
elsif not False and then True then
Do_That;
else
Panic;
end if;
end blah;
function "*" (Left, Right : in Integer) return Integer is
begin
<<Goto_Label>>
goto Goto_Label;
return Left + Right;
end "*";
function Function_Specification
(Param_1 : in Blah;
Param2, param3 : in access Blah_Type := 0)
return It_Type;
package Rename_Check renames Ada.Text_IO;
type New_Float is delta 0.001 digits 12;
package Package_Inst is new Ada.Strings.Bounded.Generic_Bounded_Length
(Max => MAX_KEYWORD_LENGTH_C);
type Array_Decl12 is array (Positive range <>) of SB.Bounded_String;
type Array_Decl3 is array (New_Type range Thing_1 .. Thing_2) of SB.Bounded_String;
type Boring_Type is
(Start,
End_Error);
subtype Sub_Type_check is Character range '0' .. '9';
Initialized_Array : constant Transistion_Array_T :=
(Start =>
(Letter_Lower | Letter_Upper => Saw_Alpha,
' ' | HT | CR | LF => Start,
others => Begin_Error),
End_Error => (others => Start)
);
type Recorder is record
Advance : Boolean;
Return_Token : Token_T;
end record;
for Recorder use 8;
type Null_Record is null record;
type Discriminated_Record (Size : Natural) is
record
A : String (1 .. Size);
end record;
pragma Unchecked_Union (Union);
pragma Convention (C, Union);
type Person is tagged
record
Name : String (1 .. 10);
Gender : Gender_Type;
end record;
type Programmer is new Person with
record
Skilled_In : Language_List;
Favorite_Langauge : Python_Type;
end record;
type Programmer is new Person
and Printable
with
record
Skilled_In : Language_List;
Blah : aliased Integer;
end record;
---------------------
-- Scan_Next_Token --
---------------------
task Cyclic_Buffer_Task_Type is
entry Insert (An_Item : in Item);
entry Remove (An_Item : out Item);
end Cyclic_Buffer_Task_Type;
task body Cyclic_Buffer_Task_Type is
Q_Size : constant := 100;
subtype Q_Range is Positive range 1 .. Q_Size;
Length : Natural range 0 .. Q_Size := 0;
Head, Tail : Q_Range := 1;
Data : array (Q_Range) of Item;
begin
loop
select
when Length < Q_Size =>
accept Insert (An_Item : in Item) do
Data(Tail) := An_Item;
end Insert;
Tail := Tail mod Q_Size + 1;
Length := Length + 1;
or
when Length > 0 =>
accept Remove (An_Item : out Item) do
An_Item := Data(Head);
end Remove;
Head := Head mod Q_Size + 1;
Length := Length - 1;
end select;
end loop;
end Cyclic_Buffer_Task_Type;
procedure Scan_Next_Token
(S : in String;
Start_Index : out Positive;
End_Index : in out Natural; -- Tricky comment
Line_Number : in out Positive;
Token : out Token_T);
procedure Scan_Next_Token
(S : in String;
Start_Index : out Positive;
End_Index : in out Natural; -- Another comment
Line_Number : in out Positive;
Token : out Token_T)
is
begin
Scanner_Loop:
loop
if New_State = End_Error then
exit Scanner_Loop;
end if;
if State = Start and New_State /= Start then
Start_Index := Peek_Index;
end if;
end loop Scanner_Loop;
end Scan_Next_Token;
procedure Advance is
begin
Peek_Index := Peek_Index + 1;
end Advance;
-- Eliminate the leading space that Ada puts in front of positive
-- integer images.
function Image(N : in Integer) return String is
S : String := Integer'Image(N);
begin
if S(1) = ' ' then
return S(2 .. S'Last);
end if;
return S;
end Image;
end Scanner;