BeginEnd
-1
0
0
-1
0
0
0
0
0
begin
0
0
2
-1
-1
0
0
0
-1
1
0
0
0
0
Statement
0
0
0
0
0
0
0
;
0
0
0
0
0
0
0
0
0
end
0
0
IfThenElse
-1
0
0
-1
0
0
0
0
0
if
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
then
0
0
1
0
0
0
0
Statement
0
0
2
-1
0
0
0
0
-1
0
0
0
0
0
else
0
0
1
0
0
0
0
Statement
0
0
0
0
WhileDo
-1
0
0
-1
0
0
0
0
0
while
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
do
0
0
1
0
0
0
0
Statement
0
0
RepeatUntil
-1
0
0
-1
0
0
0
0
0
repeat
0
0
1
0
0
0
0
Statement
0
0
0
0
0
0
0
until
0
0
1
0
0
0
0
Expression
0
0
ForToDo
-1
0
0
-1
0
0
0
0
0
for
0
0
1
0
0
0
0
VariableReference
0
0
0
0
0
0
0
:=
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
to
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
do
0
0
1
0
0
0
0
Statement
0
0
WithDo
-1
0
0
-1
0
0
0
0
0
with
0
0
1
0
0
0
0
VariableReference
0
0
0
0
0
0
0
do
0
0
1
0
0
0
0
Statement
0
0
CaseOf
-1
0
0
-1
0
0
0
0
0
case
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
of
0
0
1
-1
-1
0
0
CaseOfState
0
0
2
-1
0
0
0
0
-1
0
0
0
0
0
else
0
0
1
0
0
0
0
Statement
0
0
0
0
0
0
0
;
0
0
0
0
0
0
0
0
0
end
0
0
Assignment
-1
0
0
-1
1
0
0
0
0
VariableReference
0
0
0
0
0
0
0
:=
0
0
1
0
0
0
0
Expression
0
0
Statement
-1
0
1
0
1
0
0
0
0
BeginEnd
0
0
1
0
0
0
0
IfThenElse
0
0
1
0
0
0
0
WhileDo
0
0
1
0
0
0
0
RepeatUntil
0
0
1
0
0
0
0
ForToDo
0
0
1
0
0
0
0
ForInDo
0
0
1
0
0
0
0
WithDo
0
0
1
0
0
0
0
CaseOf
0
0
1
0
0
0
0
Assignment
0
0
1
0
0
0
0
FunctionCall
0
0
Expression
-1
0
0
0
1
0
0
0
0
Term
0
0
VariableReference
0
0
0
0
1
0
0
0
0
Identifier
-1
1
Program
-1
0
0
-1
2
-1
0
0
0
0
-1
0
0
0
0
0
program
0
0
1
0
0
0
0
ProgramName
0
0
0
0
0
0
0
;
0
0
0
0
1
-1
0
0
0
Uses
0
0
1
0
0
0
0
DeclarationBlock
0
0
0
0
0
0
0
.
0
0
Uses
0
0
0
-1
0
0
0
0
0
uses
0
0
1
0
0
0
0
UnitReference
0
0
2
-1
-1
0
0
0
-1
0
0
0
0
0
,
0
0
1
0
0
0
0
UnitReference
0
0
0
0
0
0
0
0
0
;
0
0
UnitName
0
0
0
0
1
0
0
0
0
Identifier
0
0
Function
-1
0
0
-1
0
0
0
0
0
function
0
0
1
0
0
0
0
FunctionName
0
0
1
-1
0
0
0
FunctionParameters
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
TypeReference
0
0
0
0
0
0
0
;
0
0
1
0
0
0
0
DeclarationBlock
0
0
0
0
0
0
0
;
0
0
Identifier
0
1
0
0
1
0
0
0
0
Letter
0
0
2
-1
-1
0
0
1
0
1
0
0
0
0
Letter
0
0
1
0
0
0
0
Digit
0
0
0
0
0
0
0
_
0
0
0
0
VariableSection
0
0
0
-1
0
0
0
0
0
var
0
0
1
-1
-1
0
0
VariableDefinition
0
0
FunctionParameters
0
0
0
-1
0
0
0
0
0
(
0
0
1
0
0
0
0
FunctionParameter
0
0
2
-1
-1
0
0
0
-1
0
0
0
0
0
;
0
0
1
0
0
0
0
FunctionParameter
0
0
0
0
0
0
0
0
0
)
0
0
FunctionParameter
0
0
0
-1
1
0
0
0
0
ParameterName
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
TypeReference
0
0
VariableDefinition
0
0
0
-1
1
0
0
0
0
VariableName
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
TypeReference
0
0
0
0
0
0
0
;
0
0
TypeReference
0
0
0
0
1
0
0
0
0
Identifier
-1
1
VariableName
0
0
0
0
1
0
0
0
0
Identifier
-1
0
Unit
-1
0
0
-1
0
0
0
0
0
unit
0
0
1
0
0
0
0
UnitName
0
0
0
0
0
0
0
;
0
0
0
0
0
0
0
interface
0
0
1
-1
0
0
0
Uses
0
0
0
0
0
0
0
implementation
0
0
1
0
0
0
0
UnitInitialization
0
0
1
0
0
0
0
UnitFinalization
0
0
0
0
0
0
0
end.
0
0
UnitReference
0
0
0
0
1
0
0
0
0
Identifier
0
0
ForInDo
-1
0
0
-1
0
0
0
0
0
for
0
0
1
0
0
0
0
VariableReference
0
0
0
0
0
0
0
in
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
do
0
0
1
0
0
0
0
Statement
0
0
TypeRecord
-1
0
0
-1
0
0
0
0
0
record
0
0
0
0
0
0
0
end
0
0
2
-1
-1
0
0
0
0
1
0
0
0
0
VariableName
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
TypeReference
0
0
0
0
0
0
0
;
0
0
0
0
ProgramName
0
0
0
0
1
0
0
0
0
Identifier
0
0
FunctionName
0
0
0
0
1
0
0
0
0
Identifier
-1
0
Digit
0
1
1
0
3
0
0
0
0
0
9
0
0
Sign
0
1
1
0
0
0
0
0
0
+
0
0
0
0
0
0
0
-
0
0
UnsignedDigitSequence
0
1
0
0
1
0
0
0
0
Digit
0
0
1
-1
-1
0
0
Digit
0
0
DigitSequence
0
1
0
0
1
-1
0
0
0
Sign
0
0
1
0
0
0
0
UnsignedDigitSequence
0
0
RealNumber
0
1
0
0
1
0
0
0
0
DigitSequence
0
0
0
0
0
0
0
.
0
0
1
0
0
0
0
UnsignedDigitSequence
0
0
IntegerNumber
0
1
0
0
1
0
0
0
0
DigitSequence
0
0
Number
0
0
1
0
1
0
0
0
0
IntegerNumber
0
0
1
0
0
0
0
RealNumber
0
0
Letter
0
1
1
0
3
0
0
0
0
a
z
0
0
3
0
0
0
0
A
Z
0
0
ConstantSection
0
0
0
-1
0
0
0
0
0
const
0
0
1
-1
-1
0
0
ConstantDefinition
0
0
Declaration
0
0
1
0
1
0
0
0
0
VariableSection
0
0
1
0
0
0
0
ConstantSection
0
0
1
0
0
0
0
TypeSection
0
0
TypeSection
0
0
0
-1
0
0
0
0
0
type
0
0
1
-1
-1
0
0
TypeDefinition
0
0
DeclarationBlock
0
0
0
-1
1
-1
-1
0
0
Declaration
0
0
1
0
0
0
0
BeginEnd
0
0
ConstantName
0
0
0
0
1
0
0
0
0
Identifier
-1
0
Term
-1
0
0
-1
1
0
0
0
0
Factor
0
0
2
-1
-1
0
0
0
-1
1
0
0
0
0
Operator
0
0
1
0
0
0
0
Factor
0
0
0
0
Factor
0
0
1
0
1
0
0
0
0
VariableReference
0
0
1
0
0
0
0
ConstantReference
0
0
2
0
0
0
0
0
-1
0
0
0
0
0
(
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
)
0
0
0
0
1
0
0
0
0
Number
0
0
1
0
0
0
0
String
0
0
Operator
0
1
1
0
0
0
0
0
0
<
0
0
0
0
0
0
0
>
0
0
0
0
0
0
0
<=
0
0
0
0
0
0
0
>=
0
0
0
0
0
0
0
=
0
0
0
0
0
0
0
<>
0
0
0
0
0
0
0
+
0
0
0
0
0
0
0
-
0
0
0
0
0
0
0
/
0
0
0
0
0
0
0
*
0
0
0
0
0
0
0
div
0
0
0
0
0
0
0
+
0
0
0
0
0
0
0
-
0
0
0
0
0
0
0
and
0
0
0
0
0
0
0
or
0
0
0
0
0
0
0
xor
0
0
0
0
0
0
0
shl
0
0
0
0
0
0
0
shr
0
0
0
0
0
0
0
in
0
0
0
0
0
0
0
as
0
0
ConstantReference
0
0
0
0
1
0
0
0
0
Identifier
-1
1
String
0
1
0
0
0
0
0
0
0
'
0
0
1
-1
-1
0
0
StringCharacter
0
0
0
0
0
0
0
'
0
0
StringCharacter
0
1
1
0
0
0
0
-1
0
'
0
0
0
0
0
0
0
''
0
0
ParameterName
0
0
0
0
1
0
0
0
0
Identifier
0
0
Comment1
0
0
0
0
0
0
0
0
0
{
0
0
0
-1
-1
-1
0
}
0
0
0
0
0
0
0
}
0
0
Comment2
0
0
0
0
0
0
0
0
0
(*
0
0
0
-1
-1
-1
0
*)
0
0
0
0
0
0
0
*)
0
0
CommentLine
0
0
0
0
0
0
0
0
0
//
0
0
0
-1
-1
-1
-1
\r\n
0
0
CompilerDirective
0
0
0
0
0
0
0
0
0
{$
0
0
1
0
0
0
0
Identifier
0
0
0
0
0
0
0
}
0
0
UnitInitialization
0
0
0
-1
0
0
0
0
0
initialization
0
0
1
-1
-1
0
0
Statement
0
0
UnitFinalization
0
0
0
-1
0
0
0
0
0
finalization
0
0
1
-1
-1
0
0
Statement
0
0
TypeDefinition
0
0
0
-1
1
0
0
0
0
TypeName
0
0
0
0
0
0
0
=
0
0
1
0
0
0
0
Type
0
0
0
0
0
0
0
;
0
0
ConstantDefinition
0
0
0
-1
1
0
0
0
0
ConstantName
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
TypeReference
0
0
0
0
0
0
0
=
0
0
1
0
0
0
0
ConstantReference
0
0
0
0
0
0
0
;
0
0
Procedure
-1
0
0
-1
0
0
0
0
0
procedure
0
0
1
0
0
0
0
FunctionName
0
0
1
-1
0
0
0
FunctionParameters
0
0
0
0
0
0
0
;
0
0
1
0
0
0
0
DeclarationBlock
0
0
0
0
0
0
0
;
0
0
CaseOfState
0
0
0
-1
1
0
0
0
0
Identifier
0
0
0
0
0
0
0
:
0
0
1
0
0
0
0
Statement
0
0
0
0
0
0
0
;
0
0
WhiteSpace
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
-1
\r
0
0
0
0
0
0
-1
\n
0
0
0
0
0
0
-1
\t
0
0
WhiteSpaces
0
1
0
0
1
-1
-1
0
0
WhiteSpace
0
0
Range
0
0
0
-1
1
0
0
0
0
Number
0
0
0
0
0
0
0
..
0
0
1
0
0
0
0
Number
0
0
TypeArray
0
0
0
-1
0
0
0
0
0
array
0
0
2
-1
0
0
0
0
-1
0
0
0
0
0
[
0
0
1
0
0
0
0
Range
0
0
0
0
0
0
0
]
0
0
0
0
0
0
0
0
0
of
0
0
1
0
0
0
0
TypeReference
0
0
0
0
0
0
0
;
0
0
TypeSet
0
0
0
-1
0
0
0
0
0
set
0
0
0
0
0
0
0
of
0
0
1
0
0
0
0
TypeReference
0
0
TypeEnumeration
0
0
0
-1
0
0
0
0
0
(
0
0
1
0
0
0
0
IdentifierList
0
0
0
0
0
0
0
)
0
0
IdentifierList
0
0
0
-1
1
0
0
0
0
Identifier
0
0
2
-1
-1
0
0
0
-1
0
0
0
0
0
,
0
0
1
0
0
0
0
Identifier
0
0
0
0
Type
0
0
1
0
1
0
0
0
0
TypeArray
0
0
1
0
0
0
0
TypeEnumeration
0
0
1
0
0
0
0
TypeRecord
0
0
1
0
0
0
0
TypeReference
0
0
1
0
0
0
0
TypeSet
0
0
1
0
0
0
0
TypePointer
0
0
TypePointer
0
0
0
0
0
0
0
0
0
^
0
0
1
0
0
0
0
TypeReference
0
0
HexNumber
0
1
0
0
0
0
0
0
0
$
0
0
1
0
0
0
0
UnsignedDigitSequence
0
0
FunctionCall
0
0
0
-1
1
0
0
0
0
Identifier
-1
1
1
-1
0
0
0
FunctionCallParameters
0
0
FunctionCallParameters
0
0
0
-1
0
0
0
0
0
(
0
0
1
0
0
0
0
Expression
0
0
2
-1
-1
0
0
0
-1
0
0
0
0
0
,
0
0
1
0
0
0
0
Expression
0
0
0
0
0
0
0
0
0
)
0
0
TypeName
0
0
0
0
1
0
0
0
0
Identifier
-1
0
Variable
Constant
Function
Type
Program
WhiteSpace