blob: 40dbd8703f8507f4d6e8767aa1164432e74f3251 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
package body Packrat.Lexer.Debug is
function Create_Result
(Finish : in Natural;
Status : in Result_Status)
return Combinator_Result is
begin
return (Finish, Status);
end Create_Result;
function Join
(Left, Right : in Combinator_Result)
return Combinator_Result is
begin
if Left.Status = Success or Left.Status = Optional_More then
return Right;
elsif Left.Status = Needs_More then
return (Left.Finish, Failure);
else
return Left;
end if;
end Join;
function Status
(This : in Combinator_Result)
return Result_Status is
begin
return This.Status;
end Status;
function Debug_String
(This : in Combinator_Result)
return String is
begin
return Integer'Image (This.Finish)
& " " & Result_Status'Image (This.Status);
end Debug_String;
function So_Far
(This : in Lexer_Context)
return Token_Vector is
begin
return (This.Result_So_Far with null record);
end So_Far;
function Position
(This : in Lexer_Context)
return Positive is
begin
return This.Position;
end Position;
function Status
(This : in Lexer_Context)
return Result_Status is
begin
return This.Status;
end Status;
function Has_Pass
(This : in Lexer_Context)
return Boolean is
begin
return not This.Pass_Forward.Is_Empty;
end Has_Pass;
function Pass
(This : in Lexer_Context)
return Traits.Element_Array is
begin
return This.Pass_Forward.Element;
end Pass;
function Length
(Vec : in Token_Vector)
return Natural is
begin
return Integer (Token_Vectors.Vector (Vec).Length);
end Length;
function Element
(Vec : in Token_Vector;
Dex : in Positive)
return Traits.Tokens.Token is
begin
return Token_Vectors.Vector (Vec).Element (Dex);
end Element;
function Is_Failure
(Result : in Component_Result)
return Boolean is
begin
return Result = Component_Failure;
end Is_Failure;
function Is_Success
(Result : in Component_Result)
return Boolean is
begin
return Result = Component_Success;
end Is_Success;
end Packrat.Lexer.Debug;
|