| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Guacamole; |
|
2
|
|
|
|
|
|
|
our $AUTHORITY = 'cpan:XSAWYERX'; |
|
3
|
|
|
|
|
|
|
# ABSTRACT: A parser toolkit for Standard Perl |
|
4
|
|
|
|
|
|
|
$Guacamole::VERSION = '0.006'; |
|
5
|
35
|
|
|
35
|
|
250
|
use strict; |
|
|
35
|
|
|
|
|
72
|
|
|
|
35
|
|
|
|
|
1124
|
|
|
6
|
35
|
|
|
35
|
|
229
|
use warnings; |
|
|
35
|
|
|
|
|
67
|
|
|
|
35
|
|
|
|
|
989
|
|
|
7
|
35
|
|
|
35
|
|
15512
|
use Marpa::R2; |
|
|
35
|
|
|
|
|
4819992
|
|
|
|
35
|
|
|
|
|
1915
|
|
|
8
|
|
|
|
|
|
|
use constant { |
|
9
|
35
|
|
|
|
|
48811
|
'DEBUG' => 0, |
|
10
|
35
|
|
|
35
|
|
324
|
}; |
|
|
35
|
|
|
|
|
112
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
my $grammar_source = q{ |
|
13
|
|
|
|
|
|
|
lexeme default = latm => 1 |
|
14
|
|
|
|
|
|
|
:default ::= action => [ name, start, length, values ] |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
Program ::= StatementSeq |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
StatementSeq ::= Statement |
|
19
|
|
|
|
|
|
|
| Statement Semicolon |
|
20
|
|
|
|
|
|
|
| Statement Semicolon StatementSeq |
|
21
|
|
|
|
|
|
|
| BlockStatement |
|
22
|
|
|
|
|
|
|
| BlockStatement StatementSeq |
|
23
|
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
# Statements that end with a block and do not need a semicolon terminator. |
|
25
|
|
|
|
|
|
|
BlockStatement ::= LoopStatement |
|
26
|
|
|
|
|
|
|
| PackageStatement |
|
27
|
|
|
|
|
|
|
| SubStatement |
|
28
|
|
|
|
|
|
|
| Condition |
|
29
|
|
|
|
|
|
|
| BlockNonEmpty |
|
30
|
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
Statement ::= BlockLevelExpression StatementModifier |
|
32
|
|
|
|
|
|
|
| BlockLevelExpression |
|
33
|
|
|
|
|
|
|
| EllipsisStatement |
|
34
|
|
|
|
|
|
|
| UseStatement |
|
35
|
|
|
|
|
|
|
| NoStatement |
|
36
|
|
|
|
|
|
|
| RequireStatement |
|
37
|
|
|
|
|
|
|
| PackageDeclaration |
|
38
|
|
|
|
|
|
|
| SubDeclaration |
|
39
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
LoopStatement ::= ForStatement |
|
41
|
|
|
|
|
|
|
| WhileStatement |
|
42
|
|
|
|
|
|
|
| UntilStatement |
|
43
|
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
ForStatement ::= ForStatementOp LParen Statement Semicolon Statement Semicolon Statement RParen Block ContinueExpr |
|
45
|
|
|
|
|
|
|
| ForStatementOp LParen Statement Semicolon Statement Semicolon Statement RParen Block |
|
46
|
|
|
|
|
|
|
| ForStatementOp OpKeywordMy VarScalar LParen Expression RParen Block ContinueExpr |
|
47
|
|
|
|
|
|
|
| ForStatementOp OpKeywordMy VarScalar LParen Expression RParen Block |
|
48
|
|
|
|
|
|
|
| ForStatementOp VarScalar LParen Expression RParen Block ContinueExpr |
|
49
|
|
|
|
|
|
|
| ForStatementOp VarScalar LParen Expression RParen Block |
|
50
|
|
|
|
|
|
|
| ForStatementOp LParen Semicolon Semicolon RParen Block ContinueExpr |
|
51
|
|
|
|
|
|
|
| ForStatementOp LParen Semicolon Semicolon RParen Block |
|
52
|
|
|
|
|
|
|
| ForStatementOp LParen Expression RParen Block ContinueExpr |
|
53
|
|
|
|
|
|
|
| ForStatementOp LParen Expression RParen Block |
|
54
|
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
ContinueExpr ::= OpKeywordContinue Block |
|
56
|
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
ForStatementOp ::= OpKeywordFor |
|
58
|
|
|
|
|
|
|
| OpKeywordForeach |
|
59
|
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
WhileStatement ::= ConditionWhile LParen Expression RParen Block OpKeywordContinue Block |
|
61
|
|
|
|
|
|
|
| ConditionWhile LParen Expression RParen Block |
|
62
|
|
|
|
|
|
|
| ConditionWhile LParen RParen Block OpKeywordContinue Block |
|
63
|
|
|
|
|
|
|
| ConditionWhile LParen RParen Block |
|
64
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
UntilStatement ::= ConditionUntil LParen Expression RParen Block OpKeywordContinue Block |
|
66
|
|
|
|
|
|
|
| ConditionUntil LParen Expression RParen Block |
|
67
|
|
|
|
|
|
|
|
|
68
|
|
|
|
|
|
|
StatementModifier ::= ConditionIfPostfixExpr |
|
69
|
|
|
|
|
|
|
| ConditionUnlessPostfixExpr |
|
70
|
|
|
|
|
|
|
| ConditionWhilePostfixExpr |
|
71
|
|
|
|
|
|
|
| ConditionUntilPostfixExpr |
|
72
|
|
|
|
|
|
|
| ConditionForPostfixExpr |
|
73
|
|
|
|
|
|
|
| ConditionForeachPostfixExpr |
|
74
|
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
EllipsisStatement ::= Ellipsis |
|
76
|
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
UseStatement ::= OpKeywordUse ClassIdent VersionExpr Expression |
|
78
|
|
|
|
|
|
|
| OpKeywordUse ClassIdent VersionExpr |
|
79
|
|
|
|
|
|
|
| OpKeywordUse ClassIdent Expression |
|
80
|
|
|
|
|
|
|
| OpKeywordUse VersionExpr |
|
81
|
|
|
|
|
|
|
| OpKeywordUse ClassIdent |
|
82
|
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
NoStatement ::= OpKeywordNo ClassIdent VersionExpr Expression |
|
84
|
|
|
|
|
|
|
| OpKeywordNo ClassIdent VersionExpr |
|
85
|
|
|
|
|
|
|
| OpKeywordNo ClassIdent Expression |
|
86
|
|
|
|
|
|
|
| OpKeywordNo VersionExpr |
|
87
|
|
|
|
|
|
|
| OpKeywordNo ClassIdent |
|
88
|
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
RequireStatement ::= OpKeywordRequire VersionExpr |
|
90
|
|
|
|
|
|
|
| OpKeywordRequire ClassIdent |
|
91
|
|
|
|
|
|
|
| OpKeywordRequire Expression |
|
92
|
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
PackageStatement ::= OpKeywordPackage ClassIdent VersionExpr Block |
|
94
|
|
|
|
|
|
|
| OpKeywordPackage ClassIdent Block |
|
95
|
|
|
|
|
|
|
PackageDeclaration ::= OpKeywordPackage ClassIdent VersionExpr |
|
96
|
|
|
|
|
|
|
| OpKeywordPackage ClassIdent |
|
97
|
|
|
|
|
|
|
|
|
98
|
|
|
|
|
|
|
SubStatement ::= PhaseStatement Block |
|
99
|
|
|
|
|
|
|
| OpKeywordSub PhaseStatement Block |
|
100
|
|
|
|
|
|
|
| OpKeywordSub SubNameExpr SubDefinition |
|
101
|
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
SubDeclaration ::= OpKeywordSub SubNameExpr |
|
103
|
|
|
|
|
|
|
|
|
104
|
|
|
|
|
|
|
SubDefinition ::= SubAttrsDefinitionSeq SubSigsDefinition Block |
|
105
|
|
|
|
|
|
|
| SubAttrsDefinitionSeq Block |
|
106
|
|
|
|
|
|
|
| SubSigsDefinition Block |
|
107
|
|
|
|
|
|
|
| Block |
|
108
|
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
SubAttrsDefinitionSeq ::= SubAttrsDefinition SubAttrsDefinitionSeq |
|
110
|
|
|
|
|
|
|
| SubAttrsDefinition |
|
111
|
|
|
|
|
|
|
|
|
112
|
|
|
|
|
|
|
SubAttrsDefinition ::= Colon IdentComp SubAttrArgs |
|
113
|
|
|
|
|
|
|
| Colon IdentComp |
|
114
|
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
SubSigsDefinition ::= ParenExpr |
|
116
|
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
PhaseStatement ::= PhaseName |
|
118
|
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
Condition ::= ConditionIfExpr ConditionElsifExpr ConditionElseExpr |
|
120
|
|
|
|
|
|
|
| ConditionIfExpr ConditionElseExpr |
|
121
|
|
|
|
|
|
|
| ConditionIfExpr ConditionElsifExpr |
|
122
|
|
|
|
|
|
|
| ConditionIfExpr |
|
123
|
|
|
|
|
|
|
| ConditionUnlessExpr |
|
124
|
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
ConditionUnlessExpr ::= ConditionUnless LParen Expression RParen Block |
|
126
|
|
|
|
|
|
|
ConditionIfExpr ::= ConditionIf LParen Expression RParen Block |
|
127
|
|
|
|
|
|
|
ConditionElsifExpr ::= ConditionElsif LParen Expression RParen Block ConditionElsifExpr |
|
128
|
|
|
|
|
|
|
| ConditionElsif LParen Expression RParen Block |
|
129
|
|
|
|
|
|
|
ConditionElseExpr ::= ConditionElse Block |
|
130
|
|
|
|
|
|
|
ConditionIfPostfixExpr ::= ConditionIf Expression |
|
131
|
|
|
|
|
|
|
ConditionUnlessPostfixExpr ::= ConditionUnless Expression |
|
132
|
|
|
|
|
|
|
ConditionWhilePostfixExpr ::= ConditionWhile Expression |
|
133
|
|
|
|
|
|
|
ConditionUntilPostfixExpr ::= ConditionUntil Expression |
|
134
|
|
|
|
|
|
|
ConditionForPostfixExpr ::= ConditionFor Expression |
|
135
|
|
|
|
|
|
|
ConditionForeachPostfixExpr ::= ConditionForeach Expression |
|
136
|
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
Label ::= IdentComp Colon |
|
138
|
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
# this is based on the order of ops in `perldoc perlop` |
|
140
|
|
|
|
|
|
|
# U can be LHS of shift and up |
|
141
|
|
|
|
|
|
|
# 0 can be LHS of assignment and up |
|
142
|
|
|
|
|
|
|
# L can be LHS of comma and up |
|
143
|
|
|
|
|
|
|
# R can be LHS of anything |
|
144
|
|
|
|
|
|
|
ExprValueU ::= Value |
|
145
|
|
|
|
|
|
|
ExprValue0 ::= Value | OpUnaryKeywordExpr |
|
146
|
|
|
|
|
|
|
ExprValueL ::= Value | OpAssignKeywordExpr | OpUnaryKeywordExpr |
|
147
|
|
|
|
|
|
|
ExprValueR ::= Value | OpListKeywordExpr | OpAssignKeywordExpr | OpUnaryKeywordExpr |
|
148
|
|
|
|
|
|
|
ExprArrowU ::= ExprArrowU OpArrow ArrowRHS | ExprValueU action => ::first |
|
149
|
|
|
|
|
|
|
ExprArrow0 ::= ExprArrowU OpArrow ArrowRHS | ExprValue0 action => ::first |
|
150
|
|
|
|
|
|
|
ExprArrowL ::= ExprArrowU OpArrow ArrowRHS | ExprValueL action => ::first |
|
151
|
|
|
|
|
|
|
ExprArrowR ::= ExprArrowU OpArrow ArrowRHS | ExprValueR action => ::first |
|
152
|
|
|
|
|
|
|
ExprIncU ::= OpInc ExprArrowU | ExprArrowR OpInc | ExprArrowU action => ::first |
|
153
|
|
|
|
|
|
|
ExprInc0 ::= OpInc ExprArrow0 | ExprArrowR OpInc | ExprArrow0 action => ::first |
|
154
|
|
|
|
|
|
|
ExprIncL ::= OpInc ExprArrowL | ExprArrowR OpInc | ExprArrowL action => ::first |
|
155
|
|
|
|
|
|
|
ExprIncR ::= OpInc ExprArrowR | ExprArrowL OpInc | ExprArrowR action => ::first |
|
156
|
|
|
|
|
|
|
ExprPowerU ::= ExprIncU OpPower ExprUnaryU | ExprIncU action => ::first |
|
157
|
|
|
|
|
|
|
ExprPower0 ::= ExprIncU OpPower ExprUnary0 | ExprInc0 action => ::first |
|
158
|
|
|
|
|
|
|
ExprPowerL ::= ExprIncU OpPower ExprUnaryL | ExprIncL action => ::first |
|
159
|
|
|
|
|
|
|
ExprPowerR ::= ExprIncU OpPower ExprUnaryR | ExprIncR action => ::first |
|
160
|
|
|
|
|
|
|
ExprUnaryU ::= OpUnary ExprUnaryU | ExprPowerU action => ::first |
|
161
|
|
|
|
|
|
|
ExprUnary0 ::= OpUnary ExprUnary0 | ExprPower0 action => ::first |
|
162
|
|
|
|
|
|
|
ExprUnaryL ::= OpUnary ExprUnaryL | ExprPowerL action => ::first |
|
163
|
|
|
|
|
|
|
ExprUnaryR ::= OpUnary ExprUnaryR | ExprPowerR action => ::first |
|
164
|
|
|
|
|
|
|
ExprRegexU ::= ExprRegexU OpRegex ExprUnaryU | ExprUnaryU action => ::first |
|
165
|
|
|
|
|
|
|
ExprRegex0 ::= ExprRegexU OpRegex ExprUnary0 | ExprUnary0 action => ::first |
|
166
|
|
|
|
|
|
|
ExprRegexL ::= ExprRegexU OpRegex ExprUnaryL | ExprUnaryL action => ::first |
|
167
|
|
|
|
|
|
|
ExprRegexR ::= ExprRegexU OpRegex ExprUnaryR | ExprUnaryR action => ::first |
|
168
|
|
|
|
|
|
|
ExprMulU ::= ExprMulU OpMulti ExprRegexU | ExprRegexU action => ::first |
|
169
|
|
|
|
|
|
|
ExprMul0 ::= ExprMulU OpMulti ExprRegex0 | ExprRegex0 action => ::first |
|
170
|
|
|
|
|
|
|
ExprMulL ::= ExprMulU OpMulti ExprRegexL | ExprRegexL action => ::first |
|
171
|
|
|
|
|
|
|
ExprMulR ::= ExprMulU OpMulti ExprRegexR | ExprRegexR action => ::first |
|
172
|
|
|
|
|
|
|
ExprAddU ::= ExprAddU OpAdd ExprMulU | ExprMulU action => ::first |
|
173
|
|
|
|
|
|
|
ExprAdd0 ::= ExprAddU OpAdd ExprMul0 | ExprMul0 action => ::first |
|
174
|
|
|
|
|
|
|
ExprAddL ::= ExprAddU OpAdd ExprMulL | ExprMulL action => ::first |
|
175
|
|
|
|
|
|
|
ExprAddR ::= ExprAddU OpAdd ExprMulR | ExprMulR action => ::first |
|
176
|
|
|
|
|
|
|
ExprShiftU ::= ExprShiftU OpShift ExprAddU | ExprAddU action => ::first |
|
177
|
|
|
|
|
|
|
ExprShift0 ::= ExprShiftU OpShift ExprAdd0 | ExprAdd0 action => ::first |
|
178
|
|
|
|
|
|
|
ExprShiftL ::= ExprShiftU OpShift ExprAddL | ExprAddL action => ::first |
|
179
|
|
|
|
|
|
|
ExprShiftR ::= ExprShiftU OpShift ExprAddR | ExprAddR action => ::first |
|
180
|
|
|
|
|
|
|
ExprNeq0 ::= ExprShift0 OpInequal ExprShift0 | ExprShift0 action => ::first |
|
181
|
|
|
|
|
|
|
ExprNeqL ::= ExprShift0 OpInequal ExprShiftL | ExprShiftL action => ::first |
|
182
|
|
|
|
|
|
|
ExprNeqR ::= ExprShift0 OpInequal ExprShiftR | ExprShiftR action => ::first |
|
183
|
|
|
|
|
|
|
ExprEq0 ::= ExprNeq0 OpEqual ExprNeq0 | ExprNeq0 action => ::first |
|
184
|
|
|
|
|
|
|
ExprEqL ::= ExprNeq0 OpEqual ExprNeqL | ExprNeqL action => ::first |
|
185
|
|
|
|
|
|
|
ExprEqR ::= ExprNeq0 OpEqual ExprNeqR | ExprNeqR action => ::first |
|
186
|
|
|
|
|
|
|
ExprBinAnd0 ::= ExprBinAnd0 OpBinAnd ExprEq0 | ExprEq0 action => ::first |
|
187
|
|
|
|
|
|
|
ExprBinAndL ::= ExprBinAnd0 OpBinAnd ExprEqL | ExprEqL action => ::first |
|
188
|
|
|
|
|
|
|
ExprBinAndR ::= ExprBinAnd0 OpBinAnd ExprEqR | ExprEqR action => ::first |
|
189
|
|
|
|
|
|
|
ExprBinOr0 ::= ExprBinOr0 OpBinOr ExprBinAnd0 | ExprBinAnd0 action => ::first |
|
190
|
|
|
|
|
|
|
ExprBinOrL ::= ExprBinOr0 OpBinOr ExprBinAndL | ExprBinAndL action => ::first |
|
191
|
|
|
|
|
|
|
ExprBinOrR ::= ExprBinOr0 OpBinOr ExprBinAndR | ExprBinAndR action => ::first |
|
192
|
|
|
|
|
|
|
ExprLogAnd0 ::= ExprLogAnd0 OpLogAnd ExprBinOr0 | ExprBinOr0 action => ::first |
|
193
|
|
|
|
|
|
|
ExprLogAndL ::= ExprLogAnd0 OpLogAnd ExprBinOrL | ExprBinOrL action => ::first |
|
194
|
|
|
|
|
|
|
ExprLogAndR ::= ExprLogAnd0 OpLogAnd ExprBinOrR | ExprBinOrR action => ::first |
|
195
|
|
|
|
|
|
|
ExprLogOr0 ::= ExprLogOr0 OpLogOr ExprLogAnd0 | ExprLogAnd0 action => ::first |
|
196
|
|
|
|
|
|
|
ExprLogOrL ::= ExprLogOr0 OpLogOr ExprLogAndL | ExprLogAndL action => ::first |
|
197
|
|
|
|
|
|
|
ExprLogOrR ::= ExprLogOr0 OpLogOr ExprLogAndR | ExprLogAndR action => ::first |
|
198
|
|
|
|
|
|
|
ExprRange0 ::= ExprLogOr0 OpRange ExprLogOr0 | ExprLogOr0 action => ::first |
|
199
|
|
|
|
|
|
|
ExprRangeL ::= ExprLogOr0 OpRange ExprLogOrL | ExprLogOrL action => ::first |
|
200
|
|
|
|
|
|
|
ExprRangeR ::= ExprLogOr0 OpRange ExprLogOrR | ExprLogOrR action => ::first |
|
201
|
|
|
|
|
|
|
ExprCond0 ::= ExprRange0 OpTriThen ExprRange0 OpTriElse ExprCond0 | ExprRange0 action => ::first |
|
202
|
|
|
|
|
|
|
ExprCondL ::= ExprRange0 OpTriThen ExprRangeL OpTriElse ExprCondL | ExprRangeL action => ::first |
|
203
|
|
|
|
|
|
|
ExprCondR ::= ExprRange0 OpTriThen ExprRangeR OpTriElse ExprCondR | ExprRangeR action => ::first |
|
204
|
|
|
|
|
|
|
ExprAssignL ::= ExprCond0 OpAssign ExprAssignL | OpAssignKeywordExpr |
|
205
|
|
|
|
|
|
|
| ExprCondL action => ::first |
|
206
|
|
|
|
|
|
|
ExprAssignR ::= ExprCond0 OpAssign ExprAssignR | ExprCondR action => ::first |
|
207
|
|
|
|
|
|
|
ExprComma ::= ExprAssignL OpComma ExprComma | ExprAssignL OpComma | ExprAssignR action => ::first |
|
208
|
|
|
|
|
|
|
ExprNameNot ::= OpNameNot ExprNameNot | ExprComma action => ::first |
|
209
|
|
|
|
|
|
|
ExprNameAnd ::= ExprNameAnd OpNameAnd ExprNameNot | ExprNameNot action => ::first |
|
210
|
|
|
|
|
|
|
ExprNameOr ::= ExprNameOr OpNameOr ExprNameAnd | ExprNameAnd action => ::first |
|
211
|
|
|
|
|
|
|
Expression ::= ExprNameOr action => ::first |
|
212
|
|
|
|
|
|
|
|
|
213
|
|
|
|
|
|
|
# These will never be evaluated as a hashref (LiteralHash) |
|
214
|
|
|
|
|
|
|
# because hashrefs are not allowed to be top-level |
|
215
|
|
|
|
|
|
|
# Being combined combined with '+' or 'return' means they aren't top-level, |
|
216
|
|
|
|
|
|
|
# but follow top-level tokens ('+' or 'return') |
|
217
|
|
|
|
|
|
|
NonBraceExprValueU ::= NonBraceValue |
|
218
|
|
|
|
|
|
|
NonBraceExprValue0 ::= NonBraceValue | OpUnaryKeywordExpr |
|
219
|
|
|
|
|
|
|
NonBraceExprValueL ::= NonBraceValue | OpAssignKeywordExpr | OpUnaryKeywordExpr |
|
220
|
|
|
|
|
|
|
NonBraceExprValueR ::= NonBraceValue | OpListKeywordExpr | OpAssignKeywordExpr | OpUnaryKeywordExpr |
|
221
|
|
|
|
|
|
|
NonBraceExprArrowU ::= NonBraceExprArrowU OpArrow ArrowRHS | NonBraceExprValueU action => ::first |
|
222
|
|
|
|
|
|
|
NonBraceExprArrow0 ::= NonBraceExprArrowU OpArrow ArrowRHS | NonBraceExprValue0 action => ::first |
|
223
|
|
|
|
|
|
|
NonBraceExprArrowL ::= NonBraceExprArrowU OpArrow ArrowRHS | NonBraceExprValueL action => ::first |
|
224
|
|
|
|
|
|
|
NonBraceExprArrowR ::= NonBraceExprArrowU OpArrow ArrowRHS | NonBraceExprValueR action => ::first |
|
225
|
|
|
|
|
|
|
NonBraceExprIncU ::= OpInc ExprArrowU | NonBraceExprArrowR OpInc | NonBraceExprArrowU action => ::first |
|
226
|
|
|
|
|
|
|
NonBraceExprInc0 ::= OpInc ExprArrow0 | NonBraceExprArrowR OpInc | NonBraceExprArrow0 action => ::first |
|
227
|
|
|
|
|
|
|
NonBraceExprIncL ::= OpInc ExprArrowL | NonBraceExprArrowR OpInc | NonBraceExprArrowL action => ::first |
|
228
|
|
|
|
|
|
|
NonBraceExprIncR ::= OpInc ExprArrowR | NonBraceExprArrowL OpInc | NonBraceExprArrowR action => ::first |
|
229
|
|
|
|
|
|
|
NonBraceExprPowerU ::= NonBraceExprIncU OpPower ExprUnaryU | NonBraceExprIncU action => ::first |
|
230
|
|
|
|
|
|
|
NonBraceExprPower0 ::= NonBraceExprIncU OpPower ExprUnary0 | NonBraceExprInc0 action => ::first |
|
231
|
|
|
|
|
|
|
NonBraceExprPowerL ::= NonBraceExprIncU OpPower ExprUnaryL | NonBraceExprIncL action => ::first |
|
232
|
|
|
|
|
|
|
NonBraceExprPowerR ::= NonBraceExprIncU OpPower ExprUnaryR | NonBraceExprIncR action => ::first |
|
233
|
|
|
|
|
|
|
NonBraceExprUnaryU ::= OpUnary ExprUnaryU | NonBraceExprPowerU action => ::first |
|
234
|
|
|
|
|
|
|
NonBraceExprUnary0 ::= OpUnary ExprUnary0 | NonBraceExprPower0 action => ::first |
|
235
|
|
|
|
|
|
|
NonBraceExprUnaryL ::= OpUnary ExprUnaryL | NonBraceExprPowerL action => ::first |
|
236
|
|
|
|
|
|
|
NonBraceExprUnaryR ::= OpUnary ExprUnaryR | NonBraceExprPowerR action => ::first |
|
237
|
|
|
|
|
|
|
NonBraceExprRegexU ::= NonBraceExprRegexU OpRegex ExprUnaryU | NonBraceExprUnaryU action => ::first |
|
238
|
|
|
|
|
|
|
NonBraceExprRegex0 ::= NonBraceExprRegexU OpRegex ExprUnary0 | NonBraceExprUnary0 action => ::first |
|
239
|
|
|
|
|
|
|
NonBraceExprRegexL ::= NonBraceExprRegexU OpRegex ExprUnaryL | NonBraceExprUnaryL action => ::first |
|
240
|
|
|
|
|
|
|
NonBraceExprRegexR ::= NonBraceExprRegexU OpRegex ExprUnaryR | NonBraceExprUnaryR action => ::first |
|
241
|
|
|
|
|
|
|
NonBraceExprMulU ::= NonBraceExprMulU OpMulti ExprRegexU | NonBraceExprRegexU action => ::first |
|
242
|
|
|
|
|
|
|
NonBraceExprMul0 ::= NonBraceExprMulU OpMulti ExprRegex0 | NonBraceExprRegex0 action => ::first |
|
243
|
|
|
|
|
|
|
NonBraceExprMulL ::= NonBraceExprMulU OpMulti ExprRegexL | NonBraceExprRegexL action => ::first |
|
244
|
|
|
|
|
|
|
NonBraceExprMulR ::= NonBraceExprMulU OpMulti ExprRegexR | NonBraceExprRegexR action => ::first |
|
245
|
|
|
|
|
|
|
NonBraceExprAddU ::= NonBraceExprAddU OpAdd ExprMulU | NonBraceExprMulU action => ::first |
|
246
|
|
|
|
|
|
|
NonBraceExprAdd0 ::= NonBraceExprAddU OpAdd ExprMul0 | NonBraceExprMul0 action => ::first |
|
247
|
|
|
|
|
|
|
NonBraceExprAddL ::= NonBraceExprAddU OpAdd ExprMulL | NonBraceExprMulL action => ::first |
|
248
|
|
|
|
|
|
|
NonBraceExprAddR ::= NonBraceExprAddU OpAdd ExprMulR | NonBraceExprMulR action => ::first |
|
249
|
|
|
|
|
|
|
NonBraceExprShiftU ::= NonBraceExprShiftU OpShift ExprAddU | NonBraceExprAddU action => ::first |
|
250
|
|
|
|
|
|
|
NonBraceExprShift0 ::= NonBraceExprShiftU OpShift ExprAdd0 | NonBraceExprAdd0 action => ::first |
|
251
|
|
|
|
|
|
|
NonBraceExprShiftL ::= NonBraceExprShiftU OpShift ExprAddL | NonBraceExprAddL action => ::first |
|
252
|
|
|
|
|
|
|
NonBraceExprShiftR ::= NonBraceExprShiftU OpShift ExprAddR | NonBraceExprAddR action => ::first |
|
253
|
|
|
|
|
|
|
NonBraceExprNeq0 ::= NonBraceExprShift0 OpInequal ExprShift0 | NonBraceExprShift0 action => ::first |
|
254
|
|
|
|
|
|
|
NonBraceExprNeqL ::= NonBraceExprShift0 OpInequal ExprShiftL | NonBraceExprShiftL action => ::first |
|
255
|
|
|
|
|
|
|
NonBraceExprNeqR ::= NonBraceExprShift0 OpInequal ExprShiftR | NonBraceExprShiftR action => ::first |
|
256
|
|
|
|
|
|
|
NonBraceExprEq0 ::= NonBraceExprNeq0 OpEqual ExprNeq0 | NonBraceExprNeq0 action => ::first |
|
257
|
|
|
|
|
|
|
NonBraceExprEqL ::= NonBraceExprNeq0 OpEqual ExprNeqL | NonBraceExprNeqL action => ::first |
|
258
|
|
|
|
|
|
|
NonBraceExprEqR ::= NonBraceExprNeq0 OpEqual ExprNeqR | NonBraceExprNeqR action => ::first |
|
259
|
|
|
|
|
|
|
NonBraceExprBinAnd0 ::= NonBraceExprBinAnd0 OpBinAnd ExprEq0 | NonBraceExprEq0 action => ::first |
|
260
|
|
|
|
|
|
|
NonBraceExprBinAndL ::= NonBraceExprBinAnd0 OpBinAnd ExprEqL | NonBraceExprEqL action => ::first |
|
261
|
|
|
|
|
|
|
NonBraceExprBinAndR ::= NonBraceExprBinAnd0 OpBinAnd ExprEqR | NonBraceExprEqR action => ::first |
|
262
|
|
|
|
|
|
|
NonBraceExprBinOr0 ::= NonBraceExprBinOr0 OpBinOr ExprBinAnd0 | NonBraceExprBinAnd0 action => ::first |
|
263
|
|
|
|
|
|
|
NonBraceExprBinOrL ::= NonBraceExprBinOr0 OpBinOr ExprBinAndL | NonBraceExprBinAndL action => ::first |
|
264
|
|
|
|
|
|
|
NonBraceExprBinOrR ::= NonBraceExprBinOr0 OpBinOr ExprBinAndR | NonBraceExprBinAndR action => ::first |
|
265
|
|
|
|
|
|
|
NonBraceExprLogAnd0 ::= NonBraceExprLogAnd0 OpLogAnd ExprBinOr0 | NonBraceExprBinOr0 action => ::first |
|
266
|
|
|
|
|
|
|
NonBraceExprLogAndL ::= NonBraceExprLogAnd0 OpLogAnd ExprBinOrL | NonBraceExprBinOrL action => ::first |
|
267
|
|
|
|
|
|
|
NonBraceExprLogAndR ::= NonBraceExprLogAnd0 OpLogAnd ExprBinOrR | NonBraceExprBinOrR action => ::first |
|
268
|
|
|
|
|
|
|
NonBraceExprLogOr0 ::= NonBraceExprLogOr0 OpLogOr ExprLogAnd0 | NonBraceExprLogAnd0 action => ::first |
|
269
|
|
|
|
|
|
|
NonBraceExprLogOrL ::= NonBraceExprLogOr0 OpLogOr ExprLogAndL | NonBraceExprLogAndL action => ::first |
|
270
|
|
|
|
|
|
|
NonBraceExprLogOrR ::= NonBraceExprLogOr0 OpLogOr ExprLogAndR | NonBraceExprLogAndR action => ::first |
|
271
|
|
|
|
|
|
|
NonBraceExprRange0 ::= NonBraceExprLogOr0 OpRange ExprLogOr0 | NonBraceExprLogOr0 action => ::first |
|
272
|
|
|
|
|
|
|
NonBraceExprRangeL ::= NonBraceExprLogOr0 OpRange ExprLogOrL | NonBraceExprLogOrL action => ::first |
|
273
|
|
|
|
|
|
|
NonBraceExprRangeR ::= NonBraceExprLogOr0 OpRange ExprLogOrR | NonBraceExprLogOrR action => ::first |
|
274
|
|
|
|
|
|
|
NonBraceExprCond0 ::= NonBraceExprRange0 OpTriThen ExprRange0 OpTriElse ExprCond0 | NonBraceExprRange0 action => ::first |
|
275
|
|
|
|
|
|
|
NonBraceExprCondL ::= NonBraceExprRange0 OpTriThen ExprRangeL OpTriElse ExprCondL | NonBraceExprRangeL action => ::first |
|
276
|
|
|
|
|
|
|
NonBraceExprCondR ::= NonBraceExprRange0 OpTriThen ExprRangeR OpTriElse ExprCondR | NonBraceExprRangeR action => ::first |
|
277
|
|
|
|
|
|
|
NonBraceExprAssignL ::= NonBraceExprCond0 OpAssign ExprAssignL | OpAssignKeywordExpr |
|
278
|
|
|
|
|
|
|
| NonBraceExprCondL action => ::first |
|
279
|
|
|
|
|
|
|
NonBraceExprAssignR ::= NonBraceExprCond0 OpAssign ExprAssignR | NonBraceExprCondR action => ::first |
|
280
|
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
NonBraceExprComma ::= NonBraceExprAssignL OpComma ExprComma | NonBraceExprAssignR action => ::first |
|
283
|
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
# Comma is only allowed if it follows a keyword operator, to avoid block/hash disambiguation in perl. |
|
285
|
|
|
|
|
|
|
BlockLevelExprNameNot ::= OpNameNot ExprNameNot | NonBraceExprAssignR action => ::first |
|
286
|
|
|
|
|
|
|
BlockLevelExprNameAnd ::= BlockLevelExprNameAnd OpNameAnd ExprNameNot | BlockLevelExprNameNot action => ::first |
|
287
|
|
|
|
|
|
|
BlockLevelExprNameOr ::= BlockLevelExprNameOr OpNameOr ExprNameAnd | BlockLevelExprNameAnd action => ::first |
|
288
|
|
|
|
|
|
|
BlockLevelExpression ::= BlockLevelExprNameOr action => ::first |
|
289
|
|
|
|
|
|
|
|
|
290
|
|
|
|
|
|
|
Value ::= Literal | NonLiteral | QLikeValue |
|
291
|
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
# Arguments of operators according to the operator precedence |
|
293
|
|
|
|
|
|
|
OpUnaryKeywordArg ::= ExprShiftR |
|
294
|
|
|
|
|
|
|
OpUnaryKeywordArgNonBrace ::= NonBraceExprShiftR |
|
295
|
|
|
|
|
|
|
OpAssignKeywordArg ::= ExprAssignR |
|
296
|
|
|
|
|
|
|
OpListKeywordArg ::= ExprComma |
|
297
|
|
|
|
|
|
|
OpListKeywordArgNonBrace ::= NonBraceExprComma |
|
298
|
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
# Same as Value above, but with a NonBraceLiteral |
|
300
|
|
|
|
|
|
|
NonBraceValue ::= NonBraceLiteral | NonLiteral | QLikeValue |
|
301
|
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
NonLiteral ::= Variable |
|
303
|
|
|
|
|
|
|
| DerefVariable |
|
304
|
|
|
|
|
|
|
| Modifier Variable |
|
305
|
|
|
|
|
|
|
| Modifier ParenExpr |
|
306
|
|
|
|
|
|
|
| UnderscoreValues |
|
307
|
|
|
|
|
|
|
| SubCall |
|
308
|
|
|
|
|
|
|
| PackageArrow |
|
309
|
|
|
|
|
|
|
| ParenExpr ElemSeq0 |
|
310
|
|
|
|
|
|
|
| OpNullaryKeywordExpr |
|
311
|
|
|
|
|
|
|
| DiamondExpr |
|
312
|
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
DiamondExpr ::= Diamond |
|
314
|
|
|
|
|
|
|
| DoubleDiamond |
|
315
|
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
# This is written this way because of whitespace rules |
|
317
|
|
|
|
|
|
|
Diamond ::= '<' VarScalar '>' |
|
318
|
|
|
|
|
|
|
| '<' BuiltinFilehandle '>' |
|
319
|
|
|
|
|
|
|
| '<>' |
|
320
|
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
# This is written this way because of whitespace rules |
|
322
|
|
|
|
|
|
|
DoubleDiamond ::= '<<' VarScalar '>>' |
|
323
|
|
|
|
|
|
|
| '<<' BuiltinFilehandle '>>' |
|
324
|
|
|
|
|
|
|
| '<<>>' |
|
325
|
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
ParenExpr ::= LParen Expression RParen |
|
327
|
|
|
|
|
|
|
| LParen RParen # support () |
|
328
|
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
Modifier ::= OpKeywordMy | OpKeywordOur | OpKeywordLocal | OpKeywordState |
|
330
|
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
ElemSeq0 ::= Element* |
|
332
|
|
|
|
|
|
|
ElemSeq1 ::= Element+ |
|
333
|
|
|
|
|
|
|
Element ::= ArrayElem | HashElem |
|
334
|
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
# UnderscoreData and UnderscoreEnd are not values |
|
336
|
|
|
|
|
|
|
UnderscoreValues ::= UnderscorePackage |
|
337
|
|
|
|
|
|
|
| UnderscoreFile |
|
338
|
|
|
|
|
|
|
| UnderscoreLine |
|
339
|
|
|
|
|
|
|
| UnderscoreSub |
|
340
|
|
|
|
|
|
|
|
|
341
|
|
|
|
|
|
|
# Silence these until they are supported |
|
342
|
|
|
|
|
|
|
#UnderscoreTokens ::= UnderscoreValues |
|
343
|
|
|
|
|
|
|
# | UnderscoreData |
|
344
|
|
|
|
|
|
|
# | UnderscoreEnd |
|
345
|
|
|
|
|
|
|
|
|
346
|
|
|
|
|
|
|
Variable ::= GlobalVarExpr |
|
347
|
|
|
|
|
|
|
| VarScalar |
|
348
|
|
|
|
|
|
|
| VarArray |
|
349
|
|
|
|
|
|
|
| VarHash |
|
350
|
|
|
|
|
|
|
| VarCode |
|
351
|
|
|
|
|
|
|
| VarGlob |
|
352
|
|
|
|
|
|
|
| VarArrayTop |
|
353
|
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
GlobalVarExpr ::= '$#' |
|
355
|
|
|
|
|
|
|
| SigilScalar GlobalVariables ElemSeq0 |
|
356
|
|
|
|
|
|
|
| SigilArray GlobalVariables ElemSeq0 |
|
357
|
|
|
|
|
|
|
| SigilHash GlobalVariables ElemSeq0 |
|
358
|
|
|
|
|
|
|
| SigilGlob GlobalVariables ElemSeq0 |
|
359
|
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
VarScalar ::= SigilScalar VarIdentExpr ElemSeq0 |
|
361
|
|
|
|
|
|
|
VarArray ::= SigilArray VarIdentExpr ElemSeq0 |
|
362
|
|
|
|
|
|
|
VarHash ::= SigilHash VarIdentExpr ElemSeq0 |
|
363
|
|
|
|
|
|
|
VarCode ::= SigilCode VarIdentExpr |
|
364
|
|
|
|
|
|
|
VarGlob ::= SigilGlob VarIdentExpr |
|
365
|
|
|
|
|
|
|
VarArrayTop ::= SigilArrayTop VarIdentExpr |
|
366
|
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
SubCall ::= SubNameCallExpr CallArgs |
|
368
|
|
|
|
|
|
|
| VarCode CallArgs |
|
369
|
|
|
|
|
|
|
|
|
370
|
|
|
|
|
|
|
PackageArrow ::= SubNameExpr OpArrow PackageArrowRHS |
|
371
|
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
PackageArrowRHS ::= ArrowMethodCall |
|
373
|
|
|
|
|
|
|
| ArrowIndirectCall |
|
374
|
|
|
|
|
|
|
|
|
375
|
|
|
|
|
|
|
# Used for function calls (Non-QLikeValue string) |
|
376
|
|
|
|
|
|
|
SubNameCallExpr ::= SubNameNonQLike |
|
377
|
|
|
|
|
|
|
| SubNameCallExpr PackageSep SubNameNonQLike |
|
378
|
|
|
|
|
|
|
|
|
379
|
|
|
|
|
|
|
# Used for defining subs (no limits) |
|
380
|
|
|
|
|
|
|
SubNameExpr ::= SubName |
|
381
|
|
|
|
|
|
|
| SubNameExpr PackageSep SubName |
|
382
|
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
# SubName is used for methods and subroutine definitions |
|
384
|
|
|
|
|
|
|
# They are not limited in any regard (other than no-digits in first char) |
|
385
|
|
|
|
|
|
|
SubName ~ LeadingSubLetter CoreSubLetters |
|
386
|
|
|
|
|
|
|
LeadingSubLetter ~ [a-zA-Z_] |
|
387
|
|
|
|
|
|
|
CoreSubLetters ~ [a-zA-Z0-9_]* |
|
388
|
|
|
|
|
|
|
|
|
389
|
|
|
|
|
|
|
# SubNameNonQLike is for function calls |
|
390
|
|
|
|
|
|
|
# They are not allowed to be: |
|
391
|
|
|
|
|
|
|
# q / qq / qw / qr / qx |
|
392
|
|
|
|
|
|
|
# s / m / y / tr |
|
393
|
|
|
|
|
|
|
SubNameNonQLike ~ |
|
394
|
|
|
|
|
|
|
NonQLikeLetters # [non-qlike] |
|
395
|
|
|
|
|
|
|
| NonQLikeLetters AllSubLetters # [non-qlike][*] |
|
396
|
|
|
|
|
|
|
| 'q' NonQRWXLetters # q[non-qrwx] |
|
397
|
|
|
|
|
|
|
| 'q' NonQRWXLetters AllSubLetters # q[non-qrwx][*] |
|
398
|
|
|
|
|
|
|
| 'qq' AllSubLetters # qq[*] |
|
399
|
|
|
|
|
|
|
| 'qr' AllSubLetters # qr[*] |
|
400
|
|
|
|
|
|
|
| 'qw' AllSubLetters # qw[*] |
|
401
|
|
|
|
|
|
|
| 'qx' AllSubLetters # qx[*] |
|
402
|
|
|
|
|
|
|
| 't' # t |
|
403
|
|
|
|
|
|
|
| 't' NonRLetter # t[non-r] |
|
404
|
|
|
|
|
|
|
| 't' NonRLetter AllSubLetters # t[non-r][*] |
|
405
|
|
|
|
|
|
|
| 'tr' AllSubLetters # tr[*] |
|
406
|
|
|
|
|
|
|
| 's' AllSubLetters # s[*] |
|
407
|
|
|
|
|
|
|
| 'm' AllSubLetters # m[*] |
|
408
|
|
|
|
|
|
|
| 'y' AllSubLetters # y[*] |
|
409
|
|
|
|
|
|
|
|
|
410
|
|
|
|
|
|
|
# Variables are defined using a different ident |
|
411
|
|
|
|
|
|
|
# Namespaced variables ($x::y) might have a different ident |
|
412
|
|
|
|
|
|
|
VarIdentExpr ::= VarIdent |
|
413
|
|
|
|
|
|
|
| VarIdentExpr PackageSep VarIdent |
|
414
|
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
VarIdent ~ NonGlobalVarLetters |
|
416
|
|
|
|
|
|
|
| NonGlobalVarLetters AllVarLetters |
|
417
|
|
|
|
|
|
|
| '_' AllVarLetters |
|
418
|
|
|
|
|
|
|
|
|
419
|
|
|
|
|
|
|
NonGlobalVarLetters ~ [a-zA-Z]+ |
|
420
|
|
|
|
|
|
|
AllVarLetters ~ [a-zA-Z0-9_]+ |
|
421
|
|
|
|
|
|
|
|
|
422
|
|
|
|
|
|
|
GlobalVariables ~ '!' |
|
423
|
|
|
|
|
|
|
| '"' |
|
424
|
|
|
|
|
|
|
| '%' |
|
425
|
|
|
|
|
|
|
| '&' |
|
426
|
|
|
|
|
|
|
| ['] |
|
427
|
|
|
|
|
|
|
| '(' |
|
428
|
|
|
|
|
|
|
| ')' |
|
429
|
|
|
|
|
|
|
| '*' |
|
430
|
|
|
|
|
|
|
| '+' |
|
431
|
|
|
|
|
|
|
| ',' |
|
432
|
|
|
|
|
|
|
| '-' |
|
433
|
|
|
|
|
|
|
| '.' |
|
434
|
|
|
|
|
|
|
| '/' |
|
435
|
|
|
|
|
|
|
| ':' |
|
436
|
|
|
|
|
|
|
| ';' |
|
437
|
|
|
|
|
|
|
| '<' |
|
438
|
|
|
|
|
|
|
| '=' |
|
439
|
|
|
|
|
|
|
| '>' |
|
440
|
|
|
|
|
|
|
| '?' |
|
441
|
|
|
|
|
|
|
| '@' |
|
442
|
|
|
|
|
|
|
| '[' |
|
443
|
|
|
|
|
|
|
| '\\' |
|
444
|
|
|
|
|
|
|
| ']' |
|
445
|
|
|
|
|
|
|
| '^' |
|
446
|
|
|
|
|
|
|
| '_' |
|
447
|
|
|
|
|
|
|
| '`' |
|
448
|
|
|
|
|
|
|
| '|' |
|
449
|
|
|
|
|
|
|
| '~' |
|
450
|
|
|
|
|
|
|
| '$' |
|
451
|
|
|
|
|
|
|
| '^A' |
|
452
|
|
|
|
|
|
|
| '^C' |
|
453
|
|
|
|
|
|
|
| '{^CHILD_ERROR_NATIVE}' |
|
454
|
|
|
|
|
|
|
| '^D' |
|
455
|
|
|
|
|
|
|
| '^E' |
|
456
|
|
|
|
|
|
|
| '{^ENCODING}' |
|
457
|
|
|
|
|
|
|
| '^F' |
|
458
|
|
|
|
|
|
|
| '{^GLOBAL_PHASE}' |
|
459
|
|
|
|
|
|
|
| '^H' |
|
460
|
|
|
|
|
|
|
| '^I' |
|
461
|
|
|
|
|
|
|
| '^L' |
|
462
|
|
|
|
|
|
|
| '{^LAST_FH}' |
|
463
|
|
|
|
|
|
|
| '^M' |
|
464
|
|
|
|
|
|
|
| '{^MATCH}' |
|
465
|
|
|
|
|
|
|
| '^N' |
|
466
|
|
|
|
|
|
|
| '^O' |
|
467
|
|
|
|
|
|
|
| '{^OPEN}' |
|
468
|
|
|
|
|
|
|
| '^P' |
|
469
|
|
|
|
|
|
|
| '{^POSTMATCH}' |
|
470
|
|
|
|
|
|
|
| '{^PREMATCH}' |
|
471
|
|
|
|
|
|
|
| '^R' |
|
472
|
|
|
|
|
|
|
| '{^RE_COMPILE_RECURSION_LIMIT}' |
|
473
|
|
|
|
|
|
|
| '{^RE_DEBUG_FLAGS}' |
|
474
|
|
|
|
|
|
|
| '{^RE_TRIE_MAXBUF}' |
|
475
|
|
|
|
|
|
|
| '^S' |
|
476
|
|
|
|
|
|
|
| '{^SAFE_LOCALES}' |
|
477
|
|
|
|
|
|
|
| '^T' |
|
478
|
|
|
|
|
|
|
| '{^TAINT}' |
|
479
|
|
|
|
|
|
|
| '{^UNICODE}' |
|
480
|
|
|
|
|
|
|
| '{^UTF8CACHE}' |
|
481
|
|
|
|
|
|
|
| '{^UTF8LOCALE}' |
|
482
|
|
|
|
|
|
|
| '^V' |
|
483
|
|
|
|
|
|
|
| '^W' |
|
484
|
|
|
|
|
|
|
| '{^WARNING_BITS}' |
|
485
|
|
|
|
|
|
|
| '{^WIN32_SLOPPY_STAT}' |
|
486
|
|
|
|
|
|
|
| '^X' |
|
487
|
|
|
|
|
|
|
| '{^CAPTURE}' |
|
488
|
|
|
|
|
|
|
| '{^CAPTURE_ALL}' |
|
489
|
|
|
|
|
|
|
| Digits |
|
490
|
|
|
|
|
|
|
|
|
491
|
|
|
|
|
|
|
# This uses the same definition as subroutine names |
|
492
|
|
|
|
|
|
|
# In the future, we might want to split those |
|
493
|
|
|
|
|
|
|
# but they are basically the same |
|
494
|
|
|
|
|
|
|
ClassIdent ::= SubNameExpr |
|
495
|
|
|
|
|
|
|
|
|
496
|
|
|
|
|
|
|
CallArgs ::= ParenExpr |
|
497
|
|
|
|
|
|
|
|
|
498
|
|
|
|
|
|
|
# Depending on context, "{}" may be interpreted as an empty block or a hash literal. |
|
499
|
|
|
|
|
|
|
Block ::= BlockEmpty action => ::first |
|
500
|
|
|
|
|
|
|
| BlockNonEmpty action => ::first |
|
501
|
|
|
|
|
|
|
BlockEmpty ::= LBrace RBrace name => Block |
|
502
|
|
|
|
|
|
|
BlockNonEmpty ::= LBrace StatementSeq RBrace name => Block |
|
503
|
|
|
|
|
|
|
|
|
504
|
|
|
|
|
|
|
ArrayElem ::= LBracket Expression RBracket |
|
505
|
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
HashElem ::= LBrace Expression RBrace |
|
507
|
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
NonBraceLiteral ::= LitNumber |
|
509
|
|
|
|
|
|
|
| LitArray |
|
510
|
|
|
|
|
|
|
| LitString |
|
511
|
|
|
|
|
|
|
| InterpolString |
|
512
|
|
|
|
|
|
|
| LitHashEmpty |
|
513
|
|
|
|
|
|
|
|
|
514
|
|
|
|
|
|
|
Literal ::= NonBraceLiteral |
|
515
|
|
|
|
|
|
|
| LitHashNonEmpty |
|
516
|
|
|
|
|
|
|
|
|
517
|
|
|
|
|
|
|
LitArray ::= LBracket Expression RBracket |
|
518
|
|
|
|
|
|
|
| LBracket RBracket |
|
519
|
|
|
|
|
|
|
|
|
520
|
|
|
|
|
|
|
# Depending on context, "{}" may be interpreted as an empty block or a hash literal. |
|
521
|
|
|
|
|
|
|
LitHashEmpty ::= LBrace RBrace name => LitHash |
|
522
|
|
|
|
|
|
|
LitHashNonEmpty ::= LBrace Expression RBrace name => LitHash |
|
523
|
|
|
|
|
|
|
|
|
524
|
|
|
|
|
|
|
LitString ::= SingleQuote NonSingleOrEscapedQuote_Many SingleQuote |
|
525
|
|
|
|
|
|
|
| SingleQuote SingleQuote |
|
526
|
|
|
|
|
|
|
|
|
527
|
|
|
|
|
|
|
InterpolString ::= DoubleQuote NonDoubleOrEscapedQuote_Many DoubleQuote |
|
528
|
|
|
|
|
|
|
| DoubleQuote DoubleQuote |
|
529
|
|
|
|
|
|
|
|
|
530
|
|
|
|
|
|
|
ArrowRHS ::= ArrowDerefCall |
|
531
|
|
|
|
|
|
|
| ArrowDerefVariable |
|
532
|
|
|
|
|
|
|
| ArrowMethodCall |
|
533
|
|
|
|
|
|
|
| ArrowIndirectCall |
|
534
|
|
|
|
|
|
|
| ElemSeq1 |
|
535
|
|
|
|
|
|
|
|
|
536
|
|
|
|
|
|
|
ArrowDerefCall ::= CallArgs |
|
537
|
|
|
|
|
|
|
ArrowDerefVariable ::= DerefVariableArgsAll |
|
538
|
|
|
|
|
|
|
| DerefVariableSlice |
|
539
|
|
|
|
|
|
|
ArrowMethodCall ::= SubNameExpr CallArgs |
|
540
|
|
|
|
|
|
|
| SubNameExpr |
|
541
|
|
|
|
|
|
|
ArrowIndirectCall ::= SigilScalar VarIdentExpr CallArgs |
|
542
|
|
|
|
|
|
|
|
|
543
|
|
|
|
|
|
|
DerefVariableArgsAll ::= '$*' | '@*' | '%*' | '&*' | '**' | '$#*' |
|
544
|
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
DerefVariableSlice ::= '@[' Expression ']' |
|
546
|
|
|
|
|
|
|
| '@{' Expression '}' |
|
547
|
|
|
|
|
|
|
| '%[' Expression ']' |
|
548
|
|
|
|
|
|
|
| '%{' Expression '}' |
|
549
|
|
|
|
|
|
|
|
|
550
|
|
|
|
|
|
|
DerefVariable ::= SigilScalar BlockNonEmpty |
|
551
|
|
|
|
|
|
|
| SigilArray BlockNonEmpty ElemSeq0 |
|
552
|
|
|
|
|
|
|
| SigilHash BlockNonEmpty ElemSeq0 |
|
553
|
|
|
|
|
|
|
| SigilGlob BlockNonEmpty |
|
554
|
|
|
|
|
|
|
| SigilArrayTop BlockNonEmpty |
|
555
|
|
|
|
|
|
|
|
|
556
|
|
|
|
|
|
|
OpNullaryKeywordExpr ::= |
|
557
|
|
|
|
|
|
|
OpKeywordBreakExpr |
|
558
|
|
|
|
|
|
|
| OpKeywordForkExpr |
|
559
|
|
|
|
|
|
|
| OpKeywordGetloginExpr |
|
560
|
|
|
|
|
|
|
| OpKeywordGetppidExpr |
|
561
|
|
|
|
|
|
|
| OpKeywordGetpwentExpr |
|
562
|
|
|
|
|
|
|
| OpKeywordGetgrentExpr |
|
563
|
|
|
|
|
|
|
| OpKeywordGethostentExpr |
|
564
|
|
|
|
|
|
|
| OpKeywordGetnetentExpr |
|
565
|
|
|
|
|
|
|
| OpKeywordGetprotoentExpr |
|
566
|
|
|
|
|
|
|
| OpKeywordGetserventExpr |
|
567
|
|
|
|
|
|
|
| OpKeywordSetpwentExpr |
|
568
|
|
|
|
|
|
|
| OpKeywordSetgrentExpr |
|
569
|
|
|
|
|
|
|
| OpKeywordEndpwentExpr |
|
570
|
|
|
|
|
|
|
| OpKeywordEndgrentExpr |
|
571
|
|
|
|
|
|
|
| OpKeywordEndhostentExpr |
|
572
|
|
|
|
|
|
|
| OpKeywordEndnetentExpr |
|
573
|
|
|
|
|
|
|
| OpKeywordEndprotoentExpr |
|
574
|
|
|
|
|
|
|
| OpKeywordEndserventExpr |
|
575
|
|
|
|
|
|
|
| OpKeywordEvalExpr |
|
576
|
|
|
|
|
|
|
| OpKeywordSubExpr |
|
577
|
|
|
|
|
|
|
| OpKeywordTimeExpr |
|
578
|
|
|
|
|
|
|
| OpKeywordTimesExpr |
|
579
|
|
|
|
|
|
|
| OpKeywordWaitExpr |
|
580
|
|
|
|
|
|
|
| OpKeywordWantarrayExpr |
|
581
|
|
|
|
|
|
|
|
|
582
|
|
|
|
|
|
|
# Unary keyword operators: |
|
583
|
|
|
|
|
|
|
# abs $a, $b => ((abs $a), $b) |
|
584
|
|
|
|
|
|
|
# abs $a = $b => ((abs $a) = $b) |
|
585
|
|
|
|
|
|
|
# List keyword operators: |
|
586
|
|
|
|
|
|
|
# push $a, $b => (push ($a, $b)) |
|
587
|
|
|
|
|
|
|
# push $a = $b => (push ($a = $b)) |
|
588
|
|
|
|
|
|
|
# Assign keyword operators: |
|
589
|
|
|
|
|
|
|
# goto $a, $b => ((goto $a), $b) |
|
590
|
|
|
|
|
|
|
# goto $a = $b => (goto ($a = $b)) |
|
591
|
|
|
|
|
|
|
|
|
592
|
|
|
|
|
|
|
OpUnaryKeywordExpr ::= |
|
593
|
|
|
|
|
|
|
OpKeywordAbsExpr |
|
594
|
|
|
|
|
|
|
| OpKeywordAlarmExpr |
|
595
|
|
|
|
|
|
|
| OpKeywordCallerExpr |
|
596
|
|
|
|
|
|
|
| OpKeywordChdirExpr |
|
597
|
|
|
|
|
|
|
| OpKeywordChompExpr |
|
598
|
|
|
|
|
|
|
| OpKeywordChopExpr |
|
599
|
|
|
|
|
|
|
| OpKeywordChrExpr |
|
600
|
|
|
|
|
|
|
| OpKeywordChrootExpr |
|
601
|
|
|
|
|
|
|
| OpKeywordCloseExpr |
|
602
|
|
|
|
|
|
|
| OpKeywordClosedirExpr |
|
603
|
|
|
|
|
|
|
| OpKeywordCosExpr |
|
604
|
|
|
|
|
|
|
| OpKeywordDbmcloseExpr |
|
605
|
|
|
|
|
|
|
| OpKeywordDefinedExpr |
|
606
|
|
|
|
|
|
|
| OpKeywordDeleteExpr |
|
607
|
|
|
|
|
|
|
| OpKeywordDoExpr |
|
608
|
|
|
|
|
|
|
| OpKeywordEachExpr |
|
609
|
|
|
|
|
|
|
| OpKeywordEofExpr |
|
610
|
|
|
|
|
|
|
| OpKeywordEvalbytesExpr |
|
611
|
|
|
|
|
|
|
| OpKeywordExistsExpr |
|
612
|
|
|
|
|
|
|
| OpKeywordExitExpr |
|
613
|
|
|
|
|
|
|
| OpKeywordExpExpr |
|
614
|
|
|
|
|
|
|
| OpKeywordFcExpr |
|
615
|
|
|
|
|
|
|
| OpKeywordFilenoExpr |
|
616
|
|
|
|
|
|
|
| OpKeywordGetcExpr |
|
617
|
|
|
|
|
|
|
| OpKeywordGetpeernameExpr |
|
618
|
|
|
|
|
|
|
| OpKeywordGetpgrpExpr |
|
619
|
|
|
|
|
|
|
| OpKeywordGetpwnamExpr |
|
620
|
|
|
|
|
|
|
| OpKeywordGetgrnamExpr |
|
621
|
|
|
|
|
|
|
| OpKeywordGethostbynameExpr |
|
622
|
|
|
|
|
|
|
| OpKeywordGetnetbynameExpr |
|
623
|
|
|
|
|
|
|
| OpKeywordGetprotobynameExpr |
|
624
|
|
|
|
|
|
|
| OpKeywordGetpwuidExpr |
|
625
|
|
|
|
|
|
|
| OpKeywordGetgrgidExpr |
|
626
|
|
|
|
|
|
|
| OpKeywordGetprotobynumberExpr |
|
627
|
|
|
|
|
|
|
| OpKeywordSethostentExpr |
|
628
|
|
|
|
|
|
|
| OpKeywordSetnetentExpr |
|
629
|
|
|
|
|
|
|
| OpKeywordSetprotoentExpr |
|
630
|
|
|
|
|
|
|
| OpKeywordSetserventExpr |
|
631
|
|
|
|
|
|
|
| OpKeywordGetsocknameExpr |
|
632
|
|
|
|
|
|
|
| OpKeywordGmtimeExpr |
|
633
|
|
|
|
|
|
|
| OpKeywordHexExpr |
|
634
|
|
|
|
|
|
|
| OpKeywordIntExpr |
|
635
|
|
|
|
|
|
|
| OpKeywordKeysExpr |
|
636
|
|
|
|
|
|
|
| OpKeywordLcExpr |
|
637
|
|
|
|
|
|
|
| OpKeywordLcfirstExpr |
|
638
|
|
|
|
|
|
|
| OpKeywordLengthExpr |
|
639
|
|
|
|
|
|
|
| OpKeywordLocaltimeExpr |
|
640
|
|
|
|
|
|
|
| OpKeywordLockExpr |
|
641
|
|
|
|
|
|
|
| OpKeywordLogExpr |
|
642
|
|
|
|
|
|
|
| OpKeywordLstatExpr |
|
643
|
|
|
|
|
|
|
| OpKeywordOctExpr |
|
644
|
|
|
|
|
|
|
| OpKeywordOrdExpr |
|
645
|
|
|
|
|
|
|
| OpKeywordPopExpr |
|
646
|
|
|
|
|
|
|
| OpKeywordPosExpr |
|
647
|
|
|
|
|
|
|
| OpKeywordPrototypeExpr |
|
648
|
|
|
|
|
|
|
| OpKeywordQuotemetaExpr |
|
649
|
|
|
|
|
|
|
| OpKeywordRandExpr |
|
650
|
|
|
|
|
|
|
| OpKeywordReaddirExpr |
|
651
|
|
|
|
|
|
|
| OpKeywordReadlineExpr |
|
652
|
|
|
|
|
|
|
| OpKeywordReadlinkExpr |
|
653
|
|
|
|
|
|
|
| OpKeywordReadpipeExpr |
|
654
|
|
|
|
|
|
|
| OpKeywordRefExpr |
|
655
|
|
|
|
|
|
|
| OpKeywordResetExpr |
|
656
|
|
|
|
|
|
|
| OpKeywordRewinddirExpr |
|
657
|
|
|
|
|
|
|
| OpKeywordRmdirExpr |
|
658
|
|
|
|
|
|
|
| OpKeywordScalarExpr |
|
659
|
|
|
|
|
|
|
| OpKeywordShiftExpr |
|
660
|
|
|
|
|
|
|
| OpKeywordSinExpr |
|
661
|
|
|
|
|
|
|
| OpKeywordSleepExpr |
|
662
|
|
|
|
|
|
|
| OpKeywordSqrtExpr |
|
663
|
|
|
|
|
|
|
| OpKeywordSrandExpr |
|
664
|
|
|
|
|
|
|
| OpKeywordStatExpr |
|
665
|
|
|
|
|
|
|
| OpKeywordStudyExpr |
|
666
|
|
|
|
|
|
|
| OpKeywordTellExpr |
|
667
|
|
|
|
|
|
|
| OpKeywordTelldirExpr |
|
668
|
|
|
|
|
|
|
| OpKeywordTiedExpr |
|
669
|
|
|
|
|
|
|
| OpKeywordUcExpr |
|
670
|
|
|
|
|
|
|
| OpKeywordUcfirstExpr |
|
671
|
|
|
|
|
|
|
| OpKeywordUmaskExpr |
|
672
|
|
|
|
|
|
|
| OpKeywordUndefExpr |
|
673
|
|
|
|
|
|
|
| OpKeywordUnlinkExpr |
|
674
|
|
|
|
|
|
|
| OpKeywordUntieExpr |
|
675
|
|
|
|
|
|
|
| OpKeywordUtimeExpr |
|
676
|
|
|
|
|
|
|
| OpKeywordValuesExpr |
|
677
|
|
|
|
|
|
|
| OpFileExpr |
|
678
|
|
|
|
|
|
|
|
|
679
|
|
|
|
|
|
|
OpListKeywordExpr ::= |
|
680
|
|
|
|
|
|
|
OpKeywordAcceptExpr |
|
681
|
|
|
|
|
|
|
| OpKeywordAtan2Expr |
|
682
|
|
|
|
|
|
|
| OpKeywordBindExpr |
|
683
|
|
|
|
|
|
|
| OpKeywordBinmodeExpr |
|
684
|
|
|
|
|
|
|
| OpKeywordBlessExpr |
|
685
|
|
|
|
|
|
|
| OpKeywordChmodExpr |
|
686
|
|
|
|
|
|
|
| OpKeywordChownExpr |
|
687
|
|
|
|
|
|
|
| OpKeywordConnectExpr |
|
688
|
|
|
|
|
|
|
| OpKeywordCryptExpr |
|
689
|
|
|
|
|
|
|
| OpKeywordDbmopenExpr |
|
690
|
|
|
|
|
|
|
| OpKeywordDieExpr |
|
691
|
|
|
|
|
|
|
| OpKeywordFcntlExpr |
|
692
|
|
|
|
|
|
|
| OpKeywordFlockExpr |
|
693
|
|
|
|
|
|
|
| OpKeywordGetpriorityExpr |
|
694
|
|
|
|
|
|
|
| OpKeywordGetservbynameExpr |
|
695
|
|
|
|
|
|
|
| OpKeywordGethostbyaddrExpr |
|
696
|
|
|
|
|
|
|
| OpKeywordGetnetbyaddrExpr |
|
697
|
|
|
|
|
|
|
| OpKeywordGetservbyportExpr |
|
698
|
|
|
|
|
|
|
| OpKeywordExecExpr |
|
699
|
|
|
|
|
|
|
| OpKeywordGetsockoptExpr |
|
700
|
|
|
|
|
|
|
| OpKeywordGlobExpr |
|
701
|
|
|
|
|
|
|
| OpKeywordGrepExpr |
|
702
|
|
|
|
|
|
|
| OpKeywordIndexExpr |
|
703
|
|
|
|
|
|
|
| OpKeywordIoctlExpr |
|
704
|
|
|
|
|
|
|
| OpKeywordJoinExpr |
|
705
|
|
|
|
|
|
|
| OpKeywordKillExpr |
|
706
|
|
|
|
|
|
|
| OpKeywordLinkExpr |
|
707
|
|
|
|
|
|
|
| OpKeywordListenExpr |
|
708
|
|
|
|
|
|
|
| OpKeywordMapExpr |
|
709
|
|
|
|
|
|
|
| OpKeywordMkdirExpr |
|
710
|
|
|
|
|
|
|
| OpKeywordMsgctlExpr |
|
711
|
|
|
|
|
|
|
| OpKeywordMsggetExpr |
|
712
|
|
|
|
|
|
|
| OpKeywordMsgrcvExpr |
|
713
|
|
|
|
|
|
|
| OpKeywordMsgsndExpr |
|
714
|
|
|
|
|
|
|
| OpKeywordOpenExpr |
|
715
|
|
|
|
|
|
|
| OpKeywordOpendirExpr |
|
716
|
|
|
|
|
|
|
| OpKeywordPackExpr |
|
717
|
|
|
|
|
|
|
| OpKeywordPipeExpr |
|
718
|
|
|
|
|
|
|
| OpKeywordPrintExpr |
|
719
|
|
|
|
|
|
|
| OpKeywordPrintfExpr |
|
720
|
|
|
|
|
|
|
| OpKeywordPushExpr |
|
721
|
|
|
|
|
|
|
| OpKeywordReadExpr |
|
722
|
|
|
|
|
|
|
| OpKeywordRecvExpr |
|
723
|
|
|
|
|
|
|
| OpKeywordRenameExpr |
|
724
|
|
|
|
|
|
|
| OpKeywordReturnExpr |
|
725
|
|
|
|
|
|
|
| OpKeywordReverseExpr |
|
726
|
|
|
|
|
|
|
| OpKeywordRindexExpr |
|
727
|
|
|
|
|
|
|
| OpKeywordSayExpr |
|
728
|
|
|
|
|
|
|
| OpKeywordSeekExpr |
|
729
|
|
|
|
|
|
|
| OpKeywordSeekdirExpr |
|
730
|
|
|
|
|
|
|
| OpKeywordSelectExpr |
|
731
|
|
|
|
|
|
|
| OpKeywordSemctlExpr |
|
732
|
|
|
|
|
|
|
| OpKeywordSemgetExpr |
|
733
|
|
|
|
|
|
|
| OpKeywordSemopExpr |
|
734
|
|
|
|
|
|
|
| OpKeywordSendExpr |
|
735
|
|
|
|
|
|
|
| OpKeywordSetpgrpExpr |
|
736
|
|
|
|
|
|
|
| OpKeywordSetpriorityExpr |
|
737
|
|
|
|
|
|
|
| OpKeywordSetsockoptExpr |
|
738
|
|
|
|
|
|
|
| OpKeywordShmctlExpr |
|
739
|
|
|
|
|
|
|
| OpKeywordShmgetExpr |
|
740
|
|
|
|
|
|
|
| OpKeywordShmreadExpr |
|
741
|
|
|
|
|
|
|
| OpKeywordShmwriteExpr |
|
742
|
|
|
|
|
|
|
| OpKeywordShutdownExpr |
|
743
|
|
|
|
|
|
|
| OpKeywordSocketExpr |
|
744
|
|
|
|
|
|
|
| OpKeywordSocketpairExpr |
|
745
|
|
|
|
|
|
|
| OpKeywordSortExpr |
|
746
|
|
|
|
|
|
|
| OpKeywordSpliceExpr |
|
747
|
|
|
|
|
|
|
| OpKeywordSplitExpr |
|
748
|
|
|
|
|
|
|
| OpKeywordSprintfExpr |
|
749
|
|
|
|
|
|
|
| OpKeywordSubstrExpr |
|
750
|
|
|
|
|
|
|
| OpKeywordSymlinkExpr |
|
751
|
|
|
|
|
|
|
| OpKeywordSyscallExpr |
|
752
|
|
|
|
|
|
|
| OpKeywordSysopenExpr |
|
753
|
|
|
|
|
|
|
| OpKeywordSysreadExpr |
|
754
|
|
|
|
|
|
|
| OpKeywordSysseekExpr |
|
755
|
|
|
|
|
|
|
| OpKeywordSyswriteExpr |
|
756
|
|
|
|
|
|
|
| OpKeywordSystemExpr |
|
757
|
|
|
|
|
|
|
| OpKeywordTieExpr |
|
758
|
|
|
|
|
|
|
| OpKeywordTruncateExpr |
|
759
|
|
|
|
|
|
|
| OpKeywordUnpackExpr |
|
760
|
|
|
|
|
|
|
| OpKeywordUnshiftExpr |
|
761
|
|
|
|
|
|
|
| OpKeywordVecExpr |
|
762
|
|
|
|
|
|
|
| OpKeywordWaitpidExpr |
|
763
|
|
|
|
|
|
|
| OpKeywordWarnExpr |
|
764
|
|
|
|
|
|
|
| OpKeywordWriteExpr |
|
765
|
|
|
|
|
|
|
|
|
766
|
|
|
|
|
|
|
OpAssignKeywordExpr ::= |
|
767
|
|
|
|
|
|
|
OpKeywordDumpExpr |
|
768
|
|
|
|
|
|
|
| OpKeywordGotoExpr |
|
769
|
|
|
|
|
|
|
| OpKeywordLastExpr |
|
770
|
|
|
|
|
|
|
| OpKeywordNextExpr |
|
771
|
|
|
|
|
|
|
| OpKeywordRedoExpr |
|
772
|
|
|
|
|
|
|
|
|
773
|
|
|
|
|
|
|
OpKeywordAbsExpr ::= OpKeywordAbs OpUnaryKeywordArg |
|
774
|
|
|
|
|
|
|
| OpKeywordAbs |
|
775
|
|
|
|
|
|
|
|
|
776
|
|
|
|
|
|
|
OpKeywordAcceptExpr ::= OpKeywordAccept OpListKeywordArg |
|
777
|
|
|
|
|
|
|
|
|
778
|
|
|
|
|
|
|
OpKeywordAlarmExpr ::= OpKeywordAlarm OpUnaryKeywordArg |
|
779
|
|
|
|
|
|
|
| OpKeywordAlarm |
|
780
|
|
|
|
|
|
|
|
|
781
|
|
|
|
|
|
|
OpKeywordAtan2Expr ::= OpKeywordAtan2 OpListKeywordArg |
|
782
|
|
|
|
|
|
|
|
|
783
|
|
|
|
|
|
|
OpKeywordBindExpr ::= OpKeywordBind OpListKeywordArg |
|
784
|
|
|
|
|
|
|
|
|
785
|
|
|
|
|
|
|
OpKeywordBinmodeExpr ::= OpKeywordBinmode OpListKeywordArg |
|
786
|
|
|
|
|
|
|
|
|
787
|
|
|
|
|
|
|
OpKeywordBlessExpr ::= OpKeywordBless OpListKeywordArg |
|
788
|
|
|
|
|
|
|
|
|
789
|
|
|
|
|
|
|
OpKeywordBreakExpr ::= OpKeywordBreak Label |
|
790
|
|
|
|
|
|
|
| OpKeywordBreak |
|
791
|
|
|
|
|
|
|
|
|
792
|
|
|
|
|
|
|
OpKeywordCallerExpr ::= OpKeywordCaller OpUnaryKeywordArg |
|
793
|
|
|
|
|
|
|
| OpKeywordCaller |
|
794
|
|
|
|
|
|
|
|
|
795
|
|
|
|
|
|
|
OpKeywordChdirExpr ::= OpKeywordChdir OpUnaryKeywordArg |
|
796
|
|
|
|
|
|
|
| OpKeywordChdir |
|
797
|
|
|
|
|
|
|
|
|
798
|
|
|
|
|
|
|
OpKeywordChmodExpr ::= OpKeywordChmod OpListKeywordArg |
|
799
|
|
|
|
|
|
|
|
|
800
|
|
|
|
|
|
|
OpKeywordChompExpr ::= OpKeywordChomp OpUnaryKeywordArg |
|
801
|
|
|
|
|
|
|
| OpKeywordChomp |
|
802
|
|
|
|
|
|
|
|
|
803
|
|
|
|
|
|
|
OpKeywordChopExpr ::= OpKeywordChop OpUnaryKeywordArg |
|
804
|
|
|
|
|
|
|
| OpKeywordChop |
|
805
|
|
|
|
|
|
|
|
|
806
|
|
|
|
|
|
|
OpKeywordChownExpr ::= OpKeywordChown OpListKeywordArg |
|
807
|
|
|
|
|
|
|
|
|
808
|
|
|
|
|
|
|
OpKeywordChrExpr ::= OpKeywordChr OpUnaryKeywordArg |
|
809
|
|
|
|
|
|
|
| OpKeywordChr |
|
810
|
|
|
|
|
|
|
|
|
811
|
|
|
|
|
|
|
OpKeywordChrootExpr ::= OpKeywordChroot OpUnaryKeywordArg |
|
812
|
|
|
|
|
|
|
| OpKeywordChroot |
|
813
|
|
|
|
|
|
|
|
|
814
|
|
|
|
|
|
|
OpKeywordCloseExpr ::= OpKeywordClose OpUnaryKeywordArg |
|
815
|
|
|
|
|
|
|
| OpKeywordClose |
|
816
|
|
|
|
|
|
|
|
|
817
|
|
|
|
|
|
|
OpKeywordClosedirExpr ::= OpKeywordClosedir OpUnaryKeywordArg |
|
818
|
|
|
|
|
|
|
|
|
819
|
|
|
|
|
|
|
OpKeywordConnectExpr ::= OpKeywordConnect OpListKeywordArg |
|
820
|
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
OpKeywordCosExpr ::= OpKeywordCos OpUnaryKeywordArg |
|
822
|
|
|
|
|
|
|
|
|
823
|
|
|
|
|
|
|
OpKeywordCryptExpr ::= OpKeywordCrypt OpListKeywordArg |
|
824
|
|
|
|
|
|
|
|
|
825
|
|
|
|
|
|
|
OpKeywordDbmcloseExpr ::= OpKeywordDbmclose OpUnaryKeywordArg |
|
826
|
|
|
|
|
|
|
|
|
827
|
|
|
|
|
|
|
OpKeywordDbmopenExpr ::= OpKeywordDbmopen OpListKeywordArg |
|
828
|
|
|
|
|
|
|
|
|
829
|
|
|
|
|
|
|
OpKeywordDefinedExpr ::= OpKeywordDefined OpUnaryKeywordArg |
|
830
|
|
|
|
|
|
|
| OpKeywordDefined |
|
831
|
|
|
|
|
|
|
|
|
832
|
|
|
|
|
|
|
OpKeywordDeleteExpr ::= OpKeywordDelete OpUnaryKeywordArg |
|
833
|
|
|
|
|
|
|
|
|
834
|
|
|
|
|
|
|
OpKeywordDieExpr ::= OpKeywordDie OpListKeywordArg |
|
835
|
|
|
|
|
|
|
|
|
836
|
|
|
|
|
|
|
OpKeywordDoExpr ::= OpKeywordDo BlockNonEmpty |
|
837
|
|
|
|
|
|
|
| OpKeywordDo OpUnaryKeywordArgNonBrace |
|
838
|
|
|
|
|
|
|
|
|
839
|
|
|
|
|
|
|
OpKeywordDumpExpr ::= OpKeywordDump OpAssignKeywordArg |
|
840
|
|
|
|
|
|
|
| OpKeywordDump Label |
|
841
|
|
|
|
|
|
|
| OpKeywordDump |
|
842
|
|
|
|
|
|
|
|
|
843
|
|
|
|
|
|
|
OpKeywordEachExpr ::= OpKeywordEach OpUnaryKeywordArg |
|
844
|
|
|
|
|
|
|
|
|
845
|
|
|
|
|
|
|
OpKeywordEofExpr ::= OpKeywordEof OpUnaryKeywordArg |
|
846
|
|
|
|
|
|
|
| OpKeywordEof |
|
847
|
|
|
|
|
|
|
|
|
848
|
|
|
|
|
|
|
OpKeywordEvalExpr ::= OpKeywordEval BlockNonEmpty |
|
849
|
|
|
|
|
|
|
|
|
850
|
|
|
|
|
|
|
OpKeywordEvalbytesExpr ::= OpKeywordEvalbytes OpUnaryKeywordArg |
|
851
|
|
|
|
|
|
|
| OpKeywordEvalbytes |
|
852
|
|
|
|
|
|
|
|
|
853
|
|
|
|
|
|
|
OpKeywordExistsExpr ::= OpKeywordExists OpUnaryKeywordArg |
|
854
|
|
|
|
|
|
|
|
|
855
|
|
|
|
|
|
|
OpKeywordExitExpr ::= OpKeywordExit OpUnaryKeywordArg |
|
856
|
|
|
|
|
|
|
| OpKeywordExit |
|
857
|
|
|
|
|
|
|
|
|
858
|
|
|
|
|
|
|
OpKeywordExpExpr ::= OpKeywordExp OpUnaryKeywordArg |
|
859
|
|
|
|
|
|
|
| OpKeywordExp |
|
860
|
|
|
|
|
|
|
|
|
861
|
|
|
|
|
|
|
OpKeywordFcExpr ::= OpKeywordFc OpUnaryKeywordArg |
|
862
|
|
|
|
|
|
|
| OpKeywordFc |
|
863
|
|
|
|
|
|
|
|
|
864
|
|
|
|
|
|
|
OpKeywordFcntlExpr ::= OpKeywordFcntl OpListKeywordArg |
|
865
|
|
|
|
|
|
|
|
|
866
|
|
|
|
|
|
|
OpKeywordFilenoExpr ::= OpKeywordFileno OpUnaryKeywordArg |
|
867
|
|
|
|
|
|
|
|
|
868
|
|
|
|
|
|
|
OpKeywordFlockExpr ::= OpKeywordFlock OpListKeywordArg |
|
869
|
|
|
|
|
|
|
|
|
870
|
|
|
|
|
|
|
OpKeywordForkExpr ::= OpKeywordFork |
|
871
|
|
|
|
|
|
|
|
|
872
|
|
|
|
|
|
|
OpKeywordGetcExpr ::= OpKeywordGetc OpUnaryKeywordArg |
|
873
|
|
|
|
|
|
|
| OpKeywordGetc |
|
874
|
|
|
|
|
|
|
|
|
875
|
|
|
|
|
|
|
OpKeywordGetloginExpr ::= OpKeywordGetlogin |
|
876
|
|
|
|
|
|
|
|
|
877
|
|
|
|
|
|
|
OpKeywordGetpeernameExpr ::= OpKeywordGetpeername OpUnaryKeywordArg |
|
878
|
|
|
|
|
|
|
|
|
879
|
|
|
|
|
|
|
OpKeywordGetpgrpExpr ::= OpKeywordGetpgrp OpUnaryKeywordArg |
|
880
|
|
|
|
|
|
|
|
|
881
|
|
|
|
|
|
|
OpKeywordGetppidExpr ::= OpKeywordGetppid |
|
882
|
|
|
|
|
|
|
|
|
883
|
|
|
|
|
|
|
OpKeywordGetpriorityExpr ::= OpKeywordGetpriority OpListKeywordArg |
|
884
|
|
|
|
|
|
|
|
|
885
|
|
|
|
|
|
|
OpKeywordGetpwnamExpr ::= OpKeywordGetpwnam OpUnaryKeywordArg |
|
886
|
|
|
|
|
|
|
|
|
887
|
|
|
|
|
|
|
OpKeywordGetgrnamExpr ::= OpKeywordGetgrnam OpUnaryKeywordArg |
|
888
|
|
|
|
|
|
|
|
|
889
|
|
|
|
|
|
|
OpKeywordGethostbynameExpr ::= OpKeywordGethostbyname OpUnaryKeywordArg |
|
890
|
|
|
|
|
|
|
|
|
891
|
|
|
|
|
|
|
OpKeywordGetnetbynameExpr ::= OpKeywordGetnetbyname OpUnaryKeywordArg |
|
892
|
|
|
|
|
|
|
|
|
893
|
|
|
|
|
|
|
OpKeywordGetprotobynameExpr ::= OpKeywordGetprotobyname OpUnaryKeywordArg |
|
894
|
|
|
|
|
|
|
|
|
895
|
|
|
|
|
|
|
OpKeywordGetpwuidExpr ::= OpKeywordGetpwuid OpUnaryKeywordArg |
|
896
|
|
|
|
|
|
|
|
|
897
|
|
|
|
|
|
|
OpKeywordGetgrgidExpr ::= OpKeywordGetgrgid OpUnaryKeywordArg |
|
898
|
|
|
|
|
|
|
|
|
899
|
|
|
|
|
|
|
OpKeywordGetservbynameExpr ::= OpKeywordGetservbyname OpListKeywordArg |
|
900
|
|
|
|
|
|
|
|
|
901
|
|
|
|
|
|
|
OpKeywordGethostbyaddrExpr ::= OpKeywordGethostbyaddr OpListKeywordArg |
|
902
|
|
|
|
|
|
|
|
|
903
|
|
|
|
|
|
|
OpKeywordGetnetbyaddrExpr ::= OpKeywordGetnetbyaddr OpListKeywordArg |
|
904
|
|
|
|
|
|
|
|
|
905
|
|
|
|
|
|
|
OpKeywordGetprotobynumberExpr ::= OpKeywordGetprotobynumber OpUnaryKeywordArg |
|
906
|
|
|
|
|
|
|
|
|
907
|
|
|
|
|
|
|
OpKeywordGetservbyportExpr ::= OpKeywordGetservbyport OpListKeywordArg |
|
908
|
|
|
|
|
|
|
|
|
909
|
|
|
|
|
|
|
OpKeywordGetpwentExpr ::= OpKeywordGetpwent |
|
910
|
|
|
|
|
|
|
|
|
911
|
|
|
|
|
|
|
OpKeywordGetgrentExpr ::= OpKeywordGetgrent |
|
912
|
|
|
|
|
|
|
|
|
913
|
|
|
|
|
|
|
OpKeywordGethostentExpr ::= OpKeywordGethostent |
|
914
|
|
|
|
|
|
|
|
|
915
|
|
|
|
|
|
|
OpKeywordGetnetentExpr ::= OpKeywordGetnetent |
|
916
|
|
|
|
|
|
|
|
|
917
|
|
|
|
|
|
|
OpKeywordGetprotoentExpr ::= OpKeywordGetprotoent |
|
918
|
|
|
|
|
|
|
|
|
919
|
|
|
|
|
|
|
OpKeywordGetserventExpr ::= OpKeywordGetservent |
|
920
|
|
|
|
|
|
|
|
|
921
|
|
|
|
|
|
|
OpKeywordSetpwentExpr ::= OpKeywordSetpwent |
|
922
|
|
|
|
|
|
|
|
|
923
|
|
|
|
|
|
|
OpKeywordSetgrentExpr ::= OpKeywordSetgrent |
|
924
|
|
|
|
|
|
|
|
|
925
|
|
|
|
|
|
|
OpKeywordSethostentExpr ::= OpKeywordSethostent OpUnaryKeywordArg |
|
926
|
|
|
|
|
|
|
|
|
927
|
|
|
|
|
|
|
OpKeywordSetnetentExpr ::= OpKeywordSetnetent OpUnaryKeywordArg |
|
928
|
|
|
|
|
|
|
|
|
929
|
|
|
|
|
|
|
OpKeywordSetprotoentExpr ::= OpKeywordSetprotoent OpUnaryKeywordArg |
|
930
|
|
|
|
|
|
|
|
|
931
|
|
|
|
|
|
|
OpKeywordSetserventExpr ::= OpKeywordSetservent OpUnaryKeywordArg |
|
932
|
|
|
|
|
|
|
|
|
933
|
|
|
|
|
|
|
OpKeywordEndpwentExpr ::= OpKeywordEndpwent |
|
934
|
|
|
|
|
|
|
|
|
935
|
|
|
|
|
|
|
OpKeywordEndgrentExpr ::= OpKeywordEndgrent |
|
936
|
|
|
|
|
|
|
|
|
937
|
|
|
|
|
|
|
OpKeywordEndhostentExpr ::= OpKeywordEndhostent |
|
938
|
|
|
|
|
|
|
|
|
939
|
|
|
|
|
|
|
OpKeywordEndnetentExpr ::= OpKeywordEndnetent |
|
940
|
|
|
|
|
|
|
|
|
941
|
|
|
|
|
|
|
OpKeywordEndprotoentExpr ::= OpKeywordEndprotoent |
|
942
|
|
|
|
|
|
|
|
|
943
|
|
|
|
|
|
|
OpKeywordEndserventExpr ::= OpKeywordEndservent |
|
944
|
|
|
|
|
|
|
|
|
945
|
|
|
|
|
|
|
OpKeywordExecExpr ::= OpKeywordExec BlockNonEmpty OpListKeywordArg |
|
946
|
|
|
|
|
|
|
| OpKeywordExec OpListKeywordArgNonBrace |
|
947
|
|
|
|
|
|
|
|
|
948
|
|
|
|
|
|
|
OpKeywordGetsocknameExpr ::= OpKeywordGetsockname OpUnaryKeywordArg |
|
949
|
|
|
|
|
|
|
|
|
950
|
|
|
|
|
|
|
OpKeywordGetsockoptExpr ::= OpKeywordGetsockopt OpListKeywordArg |
|
951
|
|
|
|
|
|
|
|
|
952
|
|
|
|
|
|
|
OpKeywordGlobExpr ::= OpKeywordGlob OpListKeywordArg |
|
953
|
|
|
|
|
|
|
| OpKeywordGlob |
|
954
|
|
|
|
|
|
|
|
|
955
|
|
|
|
|
|
|
OpKeywordGmtimeExpr ::= OpKeywordGmtime OpUnaryKeywordArg |
|
956
|
|
|
|
|
|
|
| OpKeywordGmtime |
|
957
|
|
|
|
|
|
|
|
|
958
|
|
|
|
|
|
|
# &NAME is an expression too |
|
959
|
|
|
|
|
|
|
OpKeywordGotoExpr ::= OpKeywordGoto OpAssignKeywordArg |
|
960
|
|
|
|
|
|
|
| OpKeywordGoto Label |
|
961
|
|
|
|
|
|
|
|
|
962
|
|
|
|
|
|
|
OpKeywordGrepExpr ::= OpKeywordGrep BlockNonEmpty OpListKeywordArg |
|
963
|
|
|
|
|
|
|
| OpKeywordGrep OpListKeywordArgNonBrace |
|
964
|
|
|
|
|
|
|
|
|
965
|
|
|
|
|
|
|
OpKeywordHexExpr ::= OpKeywordHex OpUnaryKeywordArg |
|
966
|
|
|
|
|
|
|
| OpKeywordHex |
|
967
|
|
|
|
|
|
|
|
|
968
|
|
|
|
|
|
|
OpKeywordIndexExpr ::= OpKeywordIndex OpListKeywordArg |
|
969
|
|
|
|
|
|
|
|
|
970
|
|
|
|
|
|
|
OpKeywordIntExpr ::= OpKeywordInt OpUnaryKeywordArg |
|
971
|
|
|
|
|
|
|
| OpKeywordInt |
|
972
|
|
|
|
|
|
|
|
|
973
|
|
|
|
|
|
|
OpKeywordIoctlExpr ::= OpKeywordIoctl OpListKeywordArg |
|
974
|
|
|
|
|
|
|
|
|
975
|
|
|
|
|
|
|
OpKeywordJoinExpr ::= OpKeywordJoin OpListKeywordArg |
|
976
|
|
|
|
|
|
|
|
|
977
|
|
|
|
|
|
|
OpKeywordKeysExpr ::= OpKeywordKeys OpUnaryKeywordArg |
|
978
|
|
|
|
|
|
|
|
|
979
|
|
|
|
|
|
|
OpKeywordKillExpr ::= OpKeywordKill OpListKeywordArg |
|
980
|
|
|
|
|
|
|
| OpKeywordKill Expression |
|
981
|
|
|
|
|
|
|
|
|
982
|
|
|
|
|
|
|
OpKeywordLastExpr ::= OpKeywordLast OpAssignKeywordArg |
|
983
|
|
|
|
|
|
|
| OpKeywordLast Label |
|
984
|
|
|
|
|
|
|
| OpKeywordLast |
|
985
|
|
|
|
|
|
|
|
|
986
|
|
|
|
|
|
|
OpKeywordLcExpr ::= OpKeywordLc OpUnaryKeywordArg |
|
987
|
|
|
|
|
|
|
| OpKeywordLc |
|
988
|
|
|
|
|
|
|
|
|
989
|
|
|
|
|
|
|
OpKeywordLcfirstExpr ::= OpKeywordLcfirst OpUnaryKeywordArg |
|
990
|
|
|
|
|
|
|
| OpKeywordLcfirst |
|
991
|
|
|
|
|
|
|
|
|
992
|
|
|
|
|
|
|
OpKeywordLengthExpr ::= OpKeywordLength OpUnaryKeywordArg |
|
993
|
|
|
|
|
|
|
| OpKeywordLength |
|
994
|
|
|
|
|
|
|
|
|
995
|
|
|
|
|
|
|
OpKeywordLinkExpr ::= OpKeywordLink OpListKeywordArg |
|
996
|
|
|
|
|
|
|
|
|
997
|
|
|
|
|
|
|
OpKeywordListenExpr ::= OpKeywordListen OpListKeywordArg |
|
998
|
|
|
|
|
|
|
|
|
999
|
|
|
|
|
|
|
OpKeywordLocaltimeExpr ::= OpKeywordLocaltime OpUnaryKeywordArg |
|
1000
|
|
|
|
|
|
|
| OpKeywordLocaltime |
|
1001
|
|
|
|
|
|
|
|
|
1002
|
|
|
|
|
|
|
OpKeywordLockExpr ::= OpKeywordLock OpUnaryKeywordArg |
|
1003
|
|
|
|
|
|
|
|
|
1004
|
|
|
|
|
|
|
OpKeywordLogExpr ::= OpKeywordLog OpUnaryKeywordArg |
|
1005
|
|
|
|
|
|
|
| OpKeywordLog |
|
1006
|
|
|
|
|
|
|
|
|
1007
|
|
|
|
|
|
|
OpKeywordLstatExpr ::= OpKeywordLstat OpUnaryKeywordArg |
|
1008
|
|
|
|
|
|
|
| OpKeywordLstat |
|
1009
|
|
|
|
|
|
|
|
|
1010
|
|
|
|
|
|
|
OpKeywordMapExpr ::= OpKeywordMap BlockNonEmpty OpListKeywordArg |
|
1011
|
|
|
|
|
|
|
| OpKeywordMap OpListKeywordArgNonBrace |
|
1012
|
|
|
|
|
|
|
|
|
1013
|
|
|
|
|
|
|
OpKeywordMkdirExpr ::= OpKeywordMkdir OpListKeywordArg |
|
1014
|
|
|
|
|
|
|
| OpKeywordMkdir |
|
1015
|
|
|
|
|
|
|
|
|
1016
|
|
|
|
|
|
|
OpKeywordMsgctlExpr ::= OpKeywordMsgctl OpListKeywordArg |
|
1017
|
|
|
|
|
|
|
|
|
1018
|
|
|
|
|
|
|
OpKeywordMsggetExpr ::= OpKeywordMsgget OpListKeywordArg |
|
1019
|
|
|
|
|
|
|
|
|
1020
|
|
|
|
|
|
|
OpKeywordMsgrcvExpr ::= OpKeywordMsgrcv OpListKeywordArg |
|
1021
|
|
|
|
|
|
|
|
|
1022
|
|
|
|
|
|
|
OpKeywordMsgsndExpr ::= OpKeywordMsgsnd OpListKeywordArg |
|
1023
|
|
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
|
OpKeywordNextExpr ::= OpKeywordNext OpAssignKeywordArg |
|
1025
|
|
|
|
|
|
|
| OpKeywordNext Label |
|
1026
|
|
|
|
|
|
|
| OpKeywordNext |
|
1027
|
|
|
|
|
|
|
|
|
1028
|
|
|
|
|
|
|
OpKeywordOctExpr ::= OpKeywordOct OpUnaryKeywordArg |
|
1029
|
|
|
|
|
|
|
| OpKeywordOct |
|
1030
|
|
|
|
|
|
|
|
|
1031
|
|
|
|
|
|
|
OpKeywordOpenExpr ::= OpKeywordOpen OpListKeywordArg |
|
1032
|
|
|
|
|
|
|
|
|
1033
|
|
|
|
|
|
|
OpKeywordOpendirExpr ::= OpKeywordOpendir OpListKeywordArg |
|
1034
|
|
|
|
|
|
|
|
|
1035
|
|
|
|
|
|
|
OpKeywordOrdExpr ::= OpKeywordOrd OpUnaryKeywordArg |
|
1036
|
|
|
|
|
|
|
| OpKeywordOrd |
|
1037
|
|
|
|
|
|
|
|
|
1038
|
|
|
|
|
|
|
OpKeywordPackExpr ::= OpKeywordPack OpListKeywordArg |
|
1039
|
|
|
|
|
|
|
|
|
1040
|
|
|
|
|
|
|
OpKeywordPipeExpr ::= OpKeywordPipe OpListKeywordArg |
|
1041
|
|
|
|
|
|
|
|
|
1042
|
|
|
|
|
|
|
OpKeywordPopExpr ::= OpKeywordPop OpUnaryKeywordArg |
|
1043
|
|
|
|
|
|
|
| OpKeywordPop |
|
1044
|
|
|
|
|
|
|
|
|
1045
|
|
|
|
|
|
|
OpKeywordPosExpr ::= OpKeywordPos OpUnaryKeywordArg |
|
1046
|
|
|
|
|
|
|
| OpKeywordPos |
|
1047
|
|
|
|
|
|
|
|
|
1048
|
|
|
|
|
|
|
OpKeywordPrintExpr ::= OpKeywordPrint BlockNonEmpty OpListKeywordArg |
|
1049
|
|
|
|
|
|
|
| OpKeywordPrint BuiltinFilehandle OpListKeywordArgNonBrace |
|
1050
|
|
|
|
|
|
|
| OpKeywordPrint BuiltinFilehandle |
|
1051
|
|
|
|
|
|
|
| OpKeywordPrint OpListKeywordArgNonBrace |
|
1052
|
|
|
|
|
|
|
| OpKeywordPrint BlockNonEmpty |
|
1053
|
|
|
|
|
|
|
| OpKeywordPrint |
|
1054
|
|
|
|
|
|
|
|
|
1055
|
|
|
|
|
|
|
OpKeywordPrintfExpr ::= OpKeywordPrintf BlockNonEmpty OpListKeywordArg |
|
1056
|
|
|
|
|
|
|
| OpKeywordPrintf BuiltinFilehandle OpListKeywordArgNonBrace |
|
1057
|
|
|
|
|
|
|
| OpKeywordPrintf BuiltinFilehandle |
|
1058
|
|
|
|
|
|
|
| OpKeywordPrintf OpListKeywordArgNonBrace |
|
1059
|
|
|
|
|
|
|
| OpKeywordPrintf BlockNonEmpty |
|
1060
|
|
|
|
|
|
|
|
|
1061
|
|
|
|
|
|
|
OpKeywordPrototypeExpr ::= OpKeywordPrototype OpUnaryKeywordArg |
|
1062
|
|
|
|
|
|
|
| OpKeywordPrototype |
|
1063
|
|
|
|
|
|
|
|
|
1064
|
|
|
|
|
|
|
OpKeywordPushExpr ::= OpKeywordPush OpListKeywordArg |
|
1065
|
|
|
|
|
|
|
|
|
1066
|
|
|
|
|
|
|
OpKeywordQuotemetaExpr ::= OpKeywordQuotemeta OpUnaryKeywordArg |
|
1067
|
|
|
|
|
|
|
| OpKeywordQuotemeta |
|
1068
|
|
|
|
|
|
|
|
|
1069
|
|
|
|
|
|
|
OpKeywordRandExpr ::= OpKeywordRand OpUnaryKeywordArg |
|
1070
|
|
|
|
|
|
|
| OpKeywordRand |
|
1071
|
|
|
|
|
|
|
|
|
1072
|
|
|
|
|
|
|
OpKeywordReadExpr ::= OpKeywordRead OpListKeywordArg |
|
1073
|
|
|
|
|
|
|
|
|
1074
|
|
|
|
|
|
|
OpKeywordReaddirExpr ::= OpKeywordReaddir OpUnaryKeywordArg |
|
1075
|
|
|
|
|
|
|
|
|
1076
|
|
|
|
|
|
|
OpKeywordReadlineExpr ::= OpKeywordReadline OpUnaryKeywordArg |
|
1077
|
|
|
|
|
|
|
| OpKeywordReadline |
|
1078
|
|
|
|
|
|
|
|
|
1079
|
|
|
|
|
|
|
OpKeywordReadlinkExpr ::= OpKeywordReadlink OpUnaryKeywordArg |
|
1080
|
|
|
|
|
|
|
| OpKeywordReadlink |
|
1081
|
|
|
|
|
|
|
|
|
1082
|
|
|
|
|
|
|
OpKeywordReadpipeExpr ::= OpKeywordReadpipe OpUnaryKeywordArg |
|
1083
|
|
|
|
|
|
|
| OpKeywordReadpipe |
|
1084
|
|
|
|
|
|
|
|
|
1085
|
|
|
|
|
|
|
OpKeywordRecvExpr ::= OpKeywordRecv OpListKeywordArg |
|
1086
|
|
|
|
|
|
|
|
|
1087
|
|
|
|
|
|
|
OpKeywordRedoExpr ::= OpKeywordRedo OpAssignKeywordArg |
|
1088
|
|
|
|
|
|
|
| OpKeywordRedo Label |
|
1089
|
|
|
|
|
|
|
| OpKeywordRedo |
|
1090
|
|
|
|
|
|
|
|
|
1091
|
|
|
|
|
|
|
OpKeywordRefExpr ::= OpKeywordRef OpUnaryKeywordArg |
|
1092
|
|
|
|
|
|
|
| OpKeywordRef |
|
1093
|
|
|
|
|
|
|
|
|
1094
|
|
|
|
|
|
|
OpKeywordRenameExpr ::= OpKeywordRename OpListKeywordArg |
|
1095
|
|
|
|
|
|
|
|
|
1096
|
|
|
|
|
|
|
OpKeywordResetExpr ::= OpKeywordReset OpUnaryKeywordArg |
|
1097
|
|
|
|
|
|
|
| OpKeywordReset |
|
1098
|
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
OpKeywordReturnExpr ::= OpKeywordReturn OpListKeywordArg |
|
1100
|
|
|
|
|
|
|
| OpKeywordReturn |
|
1101
|
|
|
|
|
|
|
|
|
1102
|
|
|
|
|
|
|
OpKeywordReverseExpr ::= OpKeywordReverse OpListKeywordArg |
|
1103
|
|
|
|
|
|
|
|
|
1104
|
|
|
|
|
|
|
OpKeywordRewinddirExpr ::= OpKeywordRewinddir OpUnaryKeywordArg |
|
1105
|
|
|
|
|
|
|
| OpKeywordRewinddir |
|
1106
|
|
|
|
|
|
|
|
|
1107
|
|
|
|
|
|
|
OpKeywordRindexExpr ::= OpKeywordRindex OpListKeywordArg |
|
1108
|
|
|
|
|
|
|
| OpKeywordRindex |
|
1109
|
|
|
|
|
|
|
|
|
1110
|
|
|
|
|
|
|
OpKeywordRmdirExpr ::= OpKeywordRmdir OpUnaryKeywordArg |
|
1111
|
|
|
|
|
|
|
| OpKeywordRmdir |
|
1112
|
|
|
|
|
|
|
|
|
1113
|
|
|
|
|
|
|
OpKeywordSayExpr ::= OpKeywordSay BlockNonEmpty OpListKeywordArg |
|
1114
|
|
|
|
|
|
|
| OpKeywordSay BuiltinFilehandle OpListKeywordArgNonBrace |
|
1115
|
|
|
|
|
|
|
| OpKeywordSay BuiltinFilehandle |
|
1116
|
|
|
|
|
|
|
| OpKeywordSay OpListKeywordArgNonBrace |
|
1117
|
|
|
|
|
|
|
| OpKeywordSay BlockNonEmpty |
|
1118
|
|
|
|
|
|
|
| OpKeywordSay |
|
1119
|
|
|
|
|
|
|
|
|
1120
|
|
|
|
|
|
|
OpKeywordScalarExpr ::= OpKeywordScalar OpUnaryKeywordArg |
|
1121
|
|
|
|
|
|
|
|
|
1122
|
|
|
|
|
|
|
OpKeywordSeekExpr ::= OpKeywordSeek OpListKeywordArg |
|
1123
|
|
|
|
|
|
|
|
|
1124
|
|
|
|
|
|
|
OpKeywordSeekdirExpr ::= OpKeywordSeekdir OpListKeywordArg |
|
1125
|
|
|
|
|
|
|
|
|
1126
|
|
|
|
|
|
|
OpKeywordSelectExpr ::= OpKeywordSelect OpListKeywordArg |
|
1127
|
|
|
|
|
|
|
|
|
1128
|
|
|
|
|
|
|
OpKeywordSemctlExpr ::= OpKeywordSemctl OpListKeywordArg |
|
1129
|
|
|
|
|
|
|
|
|
1130
|
|
|
|
|
|
|
OpKeywordSemgetExpr ::= OpKeywordSemget OpListKeywordArg |
|
1131
|
|
|
|
|
|
|
|
|
1132
|
|
|
|
|
|
|
OpKeywordSemopExpr ::= OpKeywordSemop OpListKeywordArg |
|
1133
|
|
|
|
|
|
|
|
|
1134
|
|
|
|
|
|
|
OpKeywordSendExpr ::= OpKeywordSend OpListKeywordArg |
|
1135
|
|
|
|
|
|
|
|
|
1136
|
|
|
|
|
|
|
OpKeywordSetpgrpExpr ::= OpKeywordSetpgrp OpListKeywordArg |
|
1137
|
|
|
|
|
|
|
|
|
1138
|
|
|
|
|
|
|
OpKeywordSetpriorityExpr ::= OpKeywordSetpriority OpListKeywordArg |
|
1139
|
|
|
|
|
|
|
|
|
1140
|
|
|
|
|
|
|
OpKeywordSetsockoptExpr ::= OpKeywordSetsockopt OpListKeywordArg |
|
1141
|
|
|
|
|
|
|
|
|
1142
|
|
|
|
|
|
|
OpKeywordShiftExpr ::= OpKeywordShift OpUnaryKeywordArg |
|
1143
|
|
|
|
|
|
|
| OpKeywordShift |
|
1144
|
|
|
|
|
|
|
|
|
1145
|
|
|
|
|
|
|
OpKeywordShmctlExpr ::= OpKeywordShmctl OpListKeywordArg |
|
1146
|
|
|
|
|
|
|
|
|
1147
|
|
|
|
|
|
|
OpKeywordShmgetExpr ::= OpKeywordShmget OpListKeywordArg |
|
1148
|
|
|
|
|
|
|
|
|
1149
|
|
|
|
|
|
|
OpKeywordShmreadExpr ::= OpKeywordShmread OpListKeywordArg |
|
1150
|
|
|
|
|
|
|
|
|
1151
|
|
|
|
|
|
|
OpKeywordShmwriteExpr ::= OpKeywordShmwrite OpListKeywordArg |
|
1152
|
|
|
|
|
|
|
|
|
1153
|
|
|
|
|
|
|
OpKeywordShutdownExpr ::= OpKeywordShutdown OpListKeywordArg |
|
1154
|
|
|
|
|
|
|
|
|
1155
|
|
|
|
|
|
|
OpKeywordSinExpr ::= OpKeywordSin OpUnaryKeywordArg |
|
1156
|
|
|
|
|
|
|
| OpKeywordSin |
|
1157
|
|
|
|
|
|
|
|
|
1158
|
|
|
|
|
|
|
OpKeywordSleepExpr ::= OpKeywordSleep OpUnaryKeywordArg |
|
1159
|
|
|
|
|
|
|
| OpKeywordSleep |
|
1160
|
|
|
|
|
|
|
|
|
1161
|
|
|
|
|
|
|
OpKeywordSocketExpr ::= OpKeywordSocket OpListKeywordArg |
|
1162
|
|
|
|
|
|
|
|
|
1163
|
|
|
|
|
|
|
OpKeywordSocketpairExpr ::= OpKeywordSocketpair OpListKeywordArg |
|
1164
|
|
|
|
|
|
|
|
|
1165
|
|
|
|
|
|
|
OpKeywordSortExpr ::= OpKeywordSort BlockNonEmpty OpListKeywordArg |
|
1166
|
|
|
|
|
|
|
| OpKeywordSort VarScalar OpListKeywordArg |
|
1167
|
|
|
|
|
|
|
| OpKeywordSort OpListKeywordArgNonBrace |
|
1168
|
|
|
|
|
|
|
|
|
1169
|
|
|
|
|
|
|
OpKeywordSpliceExpr ::= OpKeywordSplice OpListKeywordArg |
|
1170
|
|
|
|
|
|
|
|
|
1171
|
|
|
|
|
|
|
OpKeywordSplitExpr ::= OpKeywordSplit OpListKeywordArg |
|
1172
|
|
|
|
|
|
|
|
|
1173
|
|
|
|
|
|
|
OpKeywordSprintfExpr ::= OpKeywordSprintf OpListKeywordArg |
|
1174
|
|
|
|
|
|
|
|
|
1175
|
|
|
|
|
|
|
OpKeywordSqrtExpr ::= OpKeywordSqrt OpUnaryKeywordArg |
|
1176
|
|
|
|
|
|
|
| OpKeywordSqrt |
|
1177
|
|
|
|
|
|
|
|
|
1178
|
|
|
|
|
|
|
OpKeywordSrandExpr ::= OpKeywordSrand OpUnaryKeywordArg |
|
1179
|
|
|
|
|
|
|
| OpKeywordSrand |
|
1180
|
|
|
|
|
|
|
|
|
1181
|
|
|
|
|
|
|
OpKeywordStatExpr ::= OpKeywordStat OpUnaryKeywordArg |
|
1182
|
|
|
|
|
|
|
| OpKeywordStat |
|
1183
|
|
|
|
|
|
|
|
|
1184
|
|
|
|
|
|
|
OpKeywordStudyExpr ::= OpKeywordStudy OpUnaryKeywordArg |
|
1185
|
|
|
|
|
|
|
| OpKeywordStudy |
|
1186
|
|
|
|
|
|
|
|
|
1187
|
|
|
|
|
|
|
OpKeywordSubExpr ::= OpKeywordSub SubDefinition |
|
1188
|
|
|
|
|
|
|
|
|
1189
|
|
|
|
|
|
|
OpKeywordSubstrExpr ::= OpKeywordSubstr OpListKeywordArg |
|
1190
|
|
|
|
|
|
|
|
|
1191
|
|
|
|
|
|
|
OpKeywordSymlinkExpr ::= OpKeywordSymlink OpListKeywordArg |
|
1192
|
|
|
|
|
|
|
|
|
1193
|
|
|
|
|
|
|
OpKeywordSyscallExpr ::= OpKeywordSyscall OpListKeywordArg |
|
1194
|
|
|
|
|
|
|
|
|
1195
|
|
|
|
|
|
|
OpKeywordSysopenExpr ::= OpKeywordSysopen OpListKeywordArg |
|
1196
|
|
|
|
|
|
|
|
|
1197
|
|
|
|
|
|
|
OpKeywordSysreadExpr ::= OpKeywordSysread OpListKeywordArg |
|
1198
|
|
|
|
|
|
|
|
|
1199
|
|
|
|
|
|
|
OpKeywordSysseekExpr ::= OpKeywordSysseek OpListKeywordArg |
|
1200
|
|
|
|
|
|
|
|
|
1201
|
|
|
|
|
|
|
OpKeywordSyswriteExpr ::= OpKeywordSyswrite OpListKeywordArg |
|
1202
|
|
|
|
|
|
|
|
|
1203
|
|
|
|
|
|
|
OpKeywordSystemExpr ::= OpKeywordSystem BlockNonEmpty OpListKeywordArg |
|
1204
|
|
|
|
|
|
|
| OpKeywordSystem OpListKeywordArgNonBrace |
|
1205
|
|
|
|
|
|
|
|
|
1206
|
|
|
|
|
|
|
OpKeywordTellExpr ::= OpKeywordTell OpUnaryKeywordArg |
|
1207
|
|
|
|
|
|
|
| OpKeywordTell |
|
1208
|
|
|
|
|
|
|
|
|
1209
|
|
|
|
|
|
|
OpKeywordTelldirExpr ::= OpKeywordTelldir OpUnaryKeywordArg |
|
1210
|
|
|
|
|
|
|
|
|
1211
|
|
|
|
|
|
|
OpKeywordTieExpr ::= OpKeywordTie OpListKeywordArg |
|
1212
|
|
|
|
|
|
|
|
|
1213
|
|
|
|
|
|
|
OpKeywordTiedExpr ::= OpKeywordTied OpUnaryKeywordArg |
|
1214
|
|
|
|
|
|
|
|
|
1215
|
|
|
|
|
|
|
OpKeywordTimeExpr ::= OpKeywordTime |
|
1216
|
|
|
|
|
|
|
|
|
1217
|
|
|
|
|
|
|
OpKeywordTimesExpr ::= OpKeywordTimes |
|
1218
|
|
|
|
|
|
|
|
|
1219
|
|
|
|
|
|
|
OpKeywordTruncateExpr ::= OpKeywordTruncate OpListKeywordArg |
|
1220
|
|
|
|
|
|
|
|
|
1221
|
|
|
|
|
|
|
OpKeywordUcExpr ::= OpKeywordUc OpUnaryKeywordArg |
|
1222
|
|
|
|
|
|
|
| OpKeywordUc |
|
1223
|
|
|
|
|
|
|
|
|
1224
|
|
|
|
|
|
|
OpKeywordUcfirstExpr ::= OpKeywordUcfirst OpUnaryKeywordArg |
|
1225
|
|
|
|
|
|
|
| OpKeywordUcfirst |
|
1226
|
|
|
|
|
|
|
|
|
1227
|
|
|
|
|
|
|
OpKeywordUmaskExpr ::= OpKeywordUmask OpUnaryKeywordArg |
|
1228
|
|
|
|
|
|
|
| OpKeywordUmask |
|
1229
|
|
|
|
|
|
|
|
|
1230
|
|
|
|
|
|
|
OpKeywordUndefExpr ::= OpKeywordUndef OpUnaryKeywordArg |
|
1231
|
|
|
|
|
|
|
| OpKeywordUndef |
|
1232
|
|
|
|
|
|
|
|
|
1233
|
|
|
|
|
|
|
OpKeywordUnlinkExpr ::= OpKeywordUnlink OpUnaryKeywordArg |
|
1234
|
|
|
|
|
|
|
| OpKeywordUnlink |
|
1235
|
|
|
|
|
|
|
|
|
1236
|
|
|
|
|
|
|
OpKeywordUnpackExpr ::= OpKeywordUnpack OpListKeywordArg |
|
1237
|
|
|
|
|
|
|
|
|
1238
|
|
|
|
|
|
|
OpKeywordUnshiftExpr ::= OpKeywordUnshift OpListKeywordArg |
|
1239
|
|
|
|
|
|
|
|
|
1240
|
|
|
|
|
|
|
OpKeywordUntieExpr ::= OpKeywordUntie OpUnaryKeywordArg |
|
1241
|
|
|
|
|
|
|
|
|
1242
|
|
|
|
|
|
|
OpKeywordUtimeExpr ::= OpKeywordUtime OpUnaryKeywordArg |
|
1243
|
|
|
|
|
|
|
|
|
1244
|
|
|
|
|
|
|
OpKeywordValuesExpr ::= OpKeywordValues OpUnaryKeywordArg |
|
1245
|
|
|
|
|
|
|
|
|
1246
|
|
|
|
|
|
|
OpKeywordVecExpr ::= OpKeywordVec OpListKeywordArg |
|
1247
|
|
|
|
|
|
|
|
|
1248
|
|
|
|
|
|
|
OpKeywordWaitExpr ::= OpKeywordWait |
|
1249
|
|
|
|
|
|
|
|
|
1250
|
|
|
|
|
|
|
OpKeywordWaitpidExpr ::= OpKeywordWaitpid OpListKeywordArg |
|
1251
|
|
|
|
|
|
|
|
|
1252
|
|
|
|
|
|
|
OpKeywordWantarrayExpr ::= OpKeywordWantarray |
|
1253
|
|
|
|
|
|
|
|
|
1254
|
|
|
|
|
|
|
OpKeywordWarnExpr ::= OpKeywordWarn OpListKeywordArg |
|
1255
|
|
|
|
|
|
|
| OpKeywordWarn |
|
1256
|
|
|
|
|
|
|
|
|
1257
|
|
|
|
|
|
|
OpKeywordWriteExpr ::= OpKeywordWrite OpListKeywordArg |
|
1258
|
|
|
|
|
|
|
| OpKeywordWrite |
|
1259
|
|
|
|
|
|
|
|
|
1260
|
|
|
|
|
|
|
OpFile ::= |
|
1261
|
|
|
|
|
|
|
OpFileReadableEffective |
|
1262
|
|
|
|
|
|
|
| OpFileWritableEffective |
|
1263
|
|
|
|
|
|
|
| OpFileRExecutableEffective |
|
1264
|
|
|
|
|
|
|
| OpFileOwnedEffective |
|
1265
|
|
|
|
|
|
|
| OpFileReadableReal |
|
1266
|
|
|
|
|
|
|
| OpFileWritableReal |
|
1267
|
|
|
|
|
|
|
| OpFileRExecutableReal |
|
1268
|
|
|
|
|
|
|
| OpFileOwnedReal |
|
1269
|
|
|
|
|
|
|
| OpFileExists |
|
1270
|
|
|
|
|
|
|
| OpFileEmpty |
|
1271
|
|
|
|
|
|
|
| OpFileNonEmpty |
|
1272
|
|
|
|
|
|
|
| OpFilePlain |
|
1273
|
|
|
|
|
|
|
| OpFileDirectory |
|
1274
|
|
|
|
|
|
|
| OpFileSymbolic |
|
1275
|
|
|
|
|
|
|
| OpFileNamedPipe |
|
1276
|
|
|
|
|
|
|
| OpFileSocket |
|
1277
|
|
|
|
|
|
|
| OpFileBlock |
|
1278
|
|
|
|
|
|
|
| OpFileCharacter |
|
1279
|
|
|
|
|
|
|
| OpFileOpenedTty |
|
1280
|
|
|
|
|
|
|
| OpFileSetuid |
|
1281
|
|
|
|
|
|
|
| OpFileSetgid |
|
1282
|
|
|
|
|
|
|
| OpFileSticky |
|
1283
|
|
|
|
|
|
|
| OpFileAsciiUtf8 |
|
1284
|
|
|
|
|
|
|
| OpFileBinary |
|
1285
|
|
|
|
|
|
|
| OpFileStartTime |
|
1286
|
|
|
|
|
|
|
| OpFileAccessTime |
|
1287
|
|
|
|
|
|
|
| OpFileChangeTime |
|
1288
|
|
|
|
|
|
|
|
|
1289
|
|
|
|
|
|
|
OpFileExpr ::= OpFile OpFileArg |
|
1290
|
|
|
|
|
|
|
OpFileArg ::= OpUnaryKeywordArg |
|
1291
|
|
|
|
|
|
|
| BuiltinFilehandle |
|
1292
|
|
|
|
|
|
|
|
|
1293
|
|
|
|
|
|
|
QLikeValue ::= QLikeValueExpr | QLikeValueExprWithMods |
|
1294
|
|
|
|
|
|
|
|
|
1295
|
|
|
|
|
|
|
QLikeValueExpr |
|
1296
|
|
|
|
|
|
|
~ QLikeFunction '(' NonRParenOrEscapedParens_Any ')' |
|
1297
|
|
|
|
|
|
|
| QLikeFunction '{' NonRBraceOrEscapedBraces_Any '}' |
|
1298
|
|
|
|
|
|
|
| QLikeFunction '<' NonRAngleOrEscapedAngles_Any '>' |
|
1299
|
|
|
|
|
|
|
| QLikeFunction '[' NonRBracketOrEscapedBrackets_Any ']' |
|
1300
|
|
|
|
|
|
|
| QLikeFunction '/' NonForwardSlashOrEscapedForwardSlashes_Any '/' |
|
1301
|
|
|
|
|
|
|
| QLikeFunction '!' NonExclamPointOrEscapedExclamPoints_Any '!' |
|
1302
|
|
|
|
|
|
|
| QLikeFunction '|' NonPipeOrEscapedPipes_Any '|' |
|
1303
|
|
|
|
|
|
|
|
|
1304
|
|
|
|
|
|
|
QLikeFunction ~ OpKeywordQ |
|
1305
|
|
|
|
|
|
|
| OpKeywordQq |
|
1306
|
|
|
|
|
|
|
| OpKeywordQx |
|
1307
|
|
|
|
|
|
|
| OpKeywordQw |
|
1308
|
|
|
|
|
|
|
|
|
1309
|
|
|
|
|
|
|
# Here we begin with "qr//" and "m//" which can have parameters |
|
1310
|
|
|
|
|
|
|
# Then we continue with "s///", "tr///", and "y///" which have two args, not one |
|
1311
|
|
|
|
|
|
|
# "//" follow at the end |
|
1312
|
|
|
|
|
|
|
QLikeValueExprWithMods |
|
1313
|
|
|
|
|
|
|
~ QLikeFunctionWithMods '(' NonRParenOrEscapedParens_Any ')' RegexModifiers |
|
1314
|
|
|
|
|
|
|
| QLikeFunctionWithMods '{' NonRBraceOrEscapedBraces_Any '}' RegexModifiers |
|
1315
|
|
|
|
|
|
|
| QLikeFunctionWithMods '<' NonRAngleOrEscapedAngles_Any '>' RegexModifiers |
|
1316
|
|
|
|
|
|
|
| QLikeFunctionWithMods '[' NonRBracketOrEscapedBrackets_Any ']' RegexModifiers |
|
1317
|
|
|
|
|
|
|
| QLikeFunctionWithMods '/' NonForwardSlashOrEscapedForwardSlashes_Any '/' RegexModifiers |
|
1318
|
|
|
|
|
|
|
| QLikeFunctionWithMods '!' NonExclamPointOrEscapedExclamPoints_Any '!' RegexModifiers |
|
1319
|
|
|
|
|
|
|
| QLikeFunctionWithMods '|' NonPipeOrEscapedPipes_Any '|' RegexModifiers |
|
1320
|
|
|
|
|
|
|
| QLikeSubstWithMods '(' NonRParenOrEscapedParens_Any ')(' NonRParenOrEscapedParens_Any ')' RegexModifiers |
|
1321
|
|
|
|
|
|
|
| QLikeSubstWithMods '{' NonRBraceOrEscapedBraces_Any '}{' NonRBraceOrEscapedBraces_Any '}' RegexModifiers |
|
1322
|
|
|
|
|
|
|
| QLikeSubstWithMods '<' NonRAngleOrEscapedAngles_Any '><' NonRAngleOrEscapedAngles_Any '>' RegexModifiers |
|
1323
|
|
|
|
|
|
|
| QLikeSubstWithMods '[' NonRBracketOrEscapedBrackets_Any '][' NonRBracketOrEscapedBrackets_Any ']' RegexModifiers |
|
1324
|
|
|
|
|
|
|
| QLikeSubstWithMods '/' NonForwardSlashOrEscapedForwardSlashes_Any '/' NonForwardSlashOrEscapedForwardSlashes_Any '/' RegexModifiers |
|
1325
|
|
|
|
|
|
|
| QLikeSubstWithMods '!' NonExclamPointOrEscapedExclamPoints_Any '!' NonExclamPointOrEscapedExclamPoints_Any '!' RegexModifiers |
|
1326
|
|
|
|
|
|
|
| QLikeSubstWithMods '|' NonPipeOrEscapedPipes_Any '|' NonPipeOrEscapedPipes_Any '|' RegexModifiers |
|
1327
|
|
|
|
|
|
|
| '/' NonForwardSlashOrEscapedForwardSlashes_Any '/' RegexModifiers |
|
1328
|
|
|
|
|
|
|
| '`' NonBacktickOrEscapedBackticks_Any '`' |
|
1329
|
|
|
|
|
|
|
|
|
1330
|
|
|
|
|
|
|
QLikeFunctionWithMods ~ OpKeywordQr |
|
1331
|
|
|
|
|
|
|
| OpKeywordM |
|
1332
|
|
|
|
|
|
|
|
|
1333
|
|
|
|
|
|
|
QLikeSubstWithMods ~ OpKeywordS |
|
1334
|
|
|
|
|
|
|
| OpKeywordTr |
|
1335
|
|
|
|
|
|
|
| OpKeywordY |
|
1336
|
|
|
|
|
|
|
|
|
1337
|
|
|
|
|
|
|
RegexModifiers ~ [a-z]* |
|
1338
|
|
|
|
|
|
|
|
|
1339
|
|
|
|
|
|
|
### |
|
1340
|
|
|
|
|
|
|
|
|
1341
|
|
|
|
|
|
|
# Everything except: # q* / s / m / y / t* |
|
1342
|
|
|
|
|
|
|
# | | | | | |
|
1343
|
|
|
|
|
|
|
# a b c d e f g h i j k l m n o p q r s t u v w x y z |
|
1344
|
|
|
|
|
|
|
# a - l n - p r u - x z |
|
1345
|
|
|
|
|
|
|
# (Cannot begin with digit, so digits are out) |
|
1346
|
|
|
|
|
|
|
NonQLikeLetters ~ [a-ln-pru-xzA-Z_]+ |
|
1347
|
|
|
|
|
|
|
|
|
1348
|
|
|
|
|
|
|
# Everything except: q / w / r / x (qq, qw, qr, qx) |
|
1349
|
|
|
|
|
|
|
# | | | | |
|
1350
|
|
|
|
|
|
|
# a b c d e f g h i j k l m n o p q r s t u v w x y z |
|
1351
|
|
|
|
|
|
|
# a - p s - v y-z |
|
1352
|
|
|
|
|
|
|
# (digits also allowed at this point) |
|
1353
|
|
|
|
|
|
|
NonQRWXLetters ~ [a-ps-vy-zA-Z0-9_]+ |
|
1354
|
|
|
|
|
|
|
|
|
1355
|
|
|
|
|
|
|
# Everything except: r (tr) |
|
1356
|
|
|
|
|
|
|
# | |
|
1357
|
|
|
|
|
|
|
# a b c d e f g h i j k l m n o p q r s t u v w x y z |
|
1358
|
|
|
|
|
|
|
# a - q s - z |
|
1359
|
|
|
|
|
|
|
# (digits also allowed at this point) |
|
1360
|
|
|
|
|
|
|
NonRLetter ~ [a-qs-zA-Z0-9_] |
|
1361
|
|
|
|
|
|
|
|
|
1362
|
|
|
|
|
|
|
# Everything else allowed (including digits) |
|
1363
|
|
|
|
|
|
|
AllSubLetters ~ [a-zA-Z0-9_]+ |
|
1364
|
|
|
|
|
|
|
|
|
1365
|
|
|
|
|
|
|
IdentComp ~ [a-zA-Z_0-9]+ |
|
1366
|
|
|
|
|
|
|
PackageSep ~ '::' |
|
1367
|
|
|
|
|
|
|
|
|
1368
|
|
|
|
|
|
|
VersionExpr ::= VersionNumber |
|
1369
|
|
|
|
|
|
|
VersionNumber ~ VersionNumberSegments |
|
1370
|
|
|
|
|
|
|
| 'v' VersionNumberSegments |
|
1371
|
|
|
|
|
|
|
|
|
1372
|
|
|
|
|
|
|
VersionNumberSegments ~ VersionNumberSegment '.' VersionNumberSegment '.' VersionNumberSegment |
|
1373
|
|
|
|
|
|
|
| VersionNumberSegment '.' VersionNumberSegment |
|
1374
|
|
|
|
|
|
|
| VersionNumberSegment |
|
1375
|
|
|
|
|
|
|
|
|
1376
|
|
|
|
|
|
|
VersionNumberSegment ~ [0-9] [0-9] [0-9] |
|
1377
|
|
|
|
|
|
|
| [0-9] [0-9] |
|
1378
|
|
|
|
|
|
|
| [0-9] |
|
1379
|
|
|
|
|
|
|
|
|
1380
|
|
|
|
|
|
|
LitNumber ::= LitNumberDec |
|
1381
|
|
|
|
|
|
|
| LitNumberOct |
|
1382
|
|
|
|
|
|
|
| LitNumberHex |
|
1383
|
|
|
|
|
|
|
| LitNumberBin |
|
1384
|
|
|
|
|
|
|
|
|
1385
|
|
|
|
|
|
|
LitNumberDec ::= NumberDec |
|
1386
|
|
|
|
|
|
|
LitNumberOct ::= NumberOct |
|
1387
|
|
|
|
|
|
|
LitNumberHex ::= NumberHex |
|
1388
|
|
|
|
|
|
|
LitNumberBin ::= NumberBin |
|
1389
|
|
|
|
|
|
|
|
|
1390
|
|
|
|
|
|
|
NumberDec ~ NumberDecInt |
|
1391
|
|
|
|
|
|
|
| NumberDecInt ExpDec |
|
1392
|
|
|
|
|
|
|
| NumberDecInt '.' DigitsDec |
|
1393
|
|
|
|
|
|
|
| NumberDecInt '.' DigitsDec ExpDec |
|
1394
|
|
|
|
|
|
|
| '.' DigitDec DigitsDec |
|
1395
|
|
|
|
|
|
|
| '.' DigitDec DigitsDec ExpDec |
|
1396
|
|
|
|
|
|
|
|
|
1397
|
|
|
|
|
|
|
NumberDecInt ~ [1-9] DigitsDec |
|
1398
|
|
|
|
|
|
|
| '0' |
|
1399
|
|
|
|
|
|
|
|
|
1400
|
|
|
|
|
|
|
NumberOct ~ '0' Underbars DigitOct DigitsOct |
|
1401
|
|
|
|
|
|
|
| '0' Underbars DigitOct DigitsOct ExpHex |
|
1402
|
|
|
|
|
|
|
| '0' DigitsOct '.' DigitOct DigitsOct ExpHex |
|
1403
|
|
|
|
|
|
|
|
|
1404
|
|
|
|
|
|
|
NumberHex ~ '0' [xX] Underbars DigitHex DigitsHex |
|
1405
|
|
|
|
|
|
|
| '0' [xX] Underbars DigitHex DigitsHex ExpHex |
|
1406
|
|
|
|
|
|
|
| '0' [xX] DigitsHex '.' DigitHex DigitsHex ExpHex |
|
1407
|
|
|
|
|
|
|
|
|
1408
|
|
|
|
|
|
|
NumberBin ~ '0' [bB] Underbars DigitBin DigitsBin |
|
1409
|
|
|
|
|
|
|
| '0' [bB] Underbars DigitBin DigitsBin ExpHex |
|
1410
|
|
|
|
|
|
|
| '0' [bB] DigitsBin '.' DigitBin DigitsBin ExpHex |
|
1411
|
|
|
|
|
|
|
|
|
1412
|
|
|
|
|
|
|
ExpDec ~ [eE] [+-] ExpDecExp |
|
1413
|
|
|
|
|
|
|
| [eE] [_] [+-] ExpDecExp |
|
1414
|
|
|
|
|
|
|
| [eE] ExpDecExp |
|
1415
|
|
|
|
|
|
|
|
|
1416
|
|
|
|
|
|
|
ExpDecExp ~ Underbars DigitDec DigitsDec |
|
1417
|
|
|
|
|
|
|
Underbars ~ [_]* |
|
1418
|
|
|
|
|
|
|
|
|
1419
|
|
|
|
|
|
|
ExpHex ~ [pP] [+-] DigitDec DigitsDec |
|
1420
|
|
|
|
|
|
|
| [pP] DigitDec DigitsDec |
|
1421
|
|
|
|
|
|
|
|
|
1422
|
|
|
|
|
|
|
DigitDec ~ [0-9] |
|
1423
|
|
|
|
|
|
|
DigitsDec ~ [0-9_]* |
|
1424
|
|
|
|
|
|
|
|
|
1425
|
|
|
|
|
|
|
DigitOct ~ [0-7] |
|
1426
|
|
|
|
|
|
|
DigitsOct ~ [0-7_]* |
|
1427
|
|
|
|
|
|
|
DigitHex ~ [0-9a-fA-F] |
|
1428
|
|
|
|
|
|
|
DigitsHex ~ [0-9a-fA-F_]* |
|
1429
|
|
|
|
|
|
|
|
|
1430
|
|
|
|
|
|
|
DigitBin ~ [01] |
|
1431
|
|
|
|
|
|
|
DigitsBin ~ [01_]* |
|
1432
|
|
|
|
|
|
|
|
|
1433
|
|
|
|
|
|
|
Digits ~ [0-9]+ |
|
1434
|
|
|
|
|
|
|
SingleQuote ~ ['] |
|
1435
|
|
|
|
|
|
|
DoubleQuote ~ ["] |
|
1436
|
|
|
|
|
|
|
|
|
1437
|
|
|
|
|
|
|
NonDoubleOrEscapedQuote_Many ~ NonDoubleOrEscapedQuote+ |
|
1438
|
|
|
|
|
|
|
NonDoubleOrEscapedQuote ~ EscapedDoubleQuote | NonDoubleQuote |
|
1439
|
|
|
|
|
|
|
EscapedDoubleQuote ~ Escape ["] |
|
1440
|
|
|
|
|
|
|
NonDoubleQuote ~ [^"] |
|
1441
|
|
|
|
|
|
|
|
|
1442
|
|
|
|
|
|
|
NonSingleOrEscapedQuote_Many ~ NonSingleOrEscapedQuote+ |
|
1443
|
|
|
|
|
|
|
NonSingleOrEscapedQuote ~ EscapedSingleQuote | NonSingleQuote |
|
1444
|
|
|
|
|
|
|
EscapedSingleQuote ~ Escape ['] |
|
1445
|
|
|
|
|
|
|
NonSingleQuote ~ [^'] |
|
1446
|
|
|
|
|
|
|
|
|
1447
|
|
|
|
|
|
|
Colon ~ ':' |
|
1448
|
|
|
|
|
|
|
Semicolon ~ ';' |
|
1449
|
|
|
|
|
|
|
Escape ~ '\' |
|
1450
|
|
|
|
|
|
|
|
|
1451
|
|
|
|
|
|
|
SigilScalar ~ '$' |
|
1452
|
|
|
|
|
|
|
SigilArray ~ '@' |
|
1453
|
|
|
|
|
|
|
SigilHash ~ '%' |
|
1454
|
|
|
|
|
|
|
SigilCode ~ '&' |
|
1455
|
|
|
|
|
|
|
SigilGlob ~ '*' |
|
1456
|
|
|
|
|
|
|
SigilArrayTop ~ '$#' |
|
1457
|
|
|
|
|
|
|
|
|
1458
|
|
|
|
|
|
|
LParen ~ '(' |
|
1459
|
|
|
|
|
|
|
RParen ~ ')' |
|
1460
|
|
|
|
|
|
|
LBracket ~ '[' |
|
1461
|
|
|
|
|
|
|
RBracket ~ ']' |
|
1462
|
|
|
|
|
|
|
LBrace ~ '{' |
|
1463
|
|
|
|
|
|
|
RBrace ~ '}' |
|
1464
|
|
|
|
|
|
|
|
|
1465
|
|
|
|
|
|
|
NonRParenOrEscapedParens_Any ~ NonRParenOrEscapedParens* |
|
1466
|
|
|
|
|
|
|
NonRParenOrEscapedParens ~ EscapedParens | NonRParen |
|
1467
|
|
|
|
|
|
|
EscapedParens ~ EscapedLParen | EscapedRParen |
|
1468
|
|
|
|
|
|
|
EscapedLParen ~ Escape [(] |
|
1469
|
|
|
|
|
|
|
EscapedRParen ~ Escape [)] |
|
1470
|
|
|
|
|
|
|
NonRParen ~ [^)] |
|
1471
|
|
|
|
|
|
|
|
|
1472
|
|
|
|
|
|
|
NonRBracketOrEscapedBrackets_Any ~ NonRBracketOrEscapedBrackets* |
|
1473
|
|
|
|
|
|
|
NonRBracketOrEscapedBrackets ~ EscapedBrackets | NonRBracket |
|
1474
|
|
|
|
|
|
|
EscapedBrackets ~ EscapedLBracket | EscapedRBracket |
|
1475
|
|
|
|
|
|
|
EscapedLBracket ~ Escape [\[] |
|
1476
|
|
|
|
|
|
|
EscapedRBracket ~ Escape [\]] |
|
1477
|
|
|
|
|
|
|
NonRBracket ~ [^\]] |
|
1478
|
|
|
|
|
|
|
|
|
1479
|
|
|
|
|
|
|
NonRBraceOrEscapedBraces_Any ~ NonRBraceOrEscapedBraces* |
|
1480
|
|
|
|
|
|
|
NonRBraceOrEscapedBraces ~ EscapedBraces | NonRBrace |
|
1481
|
|
|
|
|
|
|
EscapedBraces ~ EscapedLBrace | EscapedRBrace |
|
1482
|
|
|
|
|
|
|
EscapedLBrace ~ Escape [\{] |
|
1483
|
|
|
|
|
|
|
EscapedRBrace ~ Escape [\}] |
|
1484
|
|
|
|
|
|
|
NonRBrace ~ [^\}] |
|
1485
|
|
|
|
|
|
|
|
|
1486
|
|
|
|
|
|
|
NonRAngleOrEscapedAngles_Any ~ NonRAngleOrEscapedAngles* |
|
1487
|
|
|
|
|
|
|
NonRAngleOrEscapedAngles ~ EscapedAngles | NonRAngle |
|
1488
|
|
|
|
|
|
|
EscapedAngles ~ EscapedLAngle | EscapedRAngle |
|
1489
|
|
|
|
|
|
|
EscapedLAngle ~ Escape [<] |
|
1490
|
|
|
|
|
|
|
EscapedRAngle ~ Escape [>] |
|
1491
|
|
|
|
|
|
|
NonRAngle ~ [^>] |
|
1492
|
|
|
|
|
|
|
|
|
1493
|
|
|
|
|
|
|
NonForwardSlashOrEscapedForwardSlashes_Any ~ NonForwardSlashOrEscapedForwardSlashes* |
|
1494
|
|
|
|
|
|
|
NonForwardSlashOrEscapedForwardSlashes ~ EscapedForwardSlash | NonForwardSlash |
|
1495
|
|
|
|
|
|
|
EscapedForwardSlash ~ Escape [/] |
|
1496
|
|
|
|
|
|
|
NonForwardSlash ~ [^\/] |
|
1497
|
|
|
|
|
|
|
|
|
1498
|
|
|
|
|
|
|
NonExclamPointOrEscapedExclamPoints_Any ~ NonExclamPointOrEscapedExclamPoints* |
|
1499
|
|
|
|
|
|
|
NonExclamPointOrEscapedExclamPoints ~ EscapedExclamPoint | NonExclamPoint |
|
1500
|
|
|
|
|
|
|
EscapedExclamPoint ~ Escape [!] |
|
1501
|
|
|
|
|
|
|
NonExclamPoint ~ [^\!] |
|
1502
|
|
|
|
|
|
|
|
|
1503
|
|
|
|
|
|
|
NonPipeOrEscapedPipes_Any ~ NonPipeOrEscapedPipes* |
|
1504
|
|
|
|
|
|
|
NonPipeOrEscapedPipes ~ EscapedPipe | NonPipe |
|
1505
|
|
|
|
|
|
|
EscapedPipe ~ Escape [\|] |
|
1506
|
|
|
|
|
|
|
NonPipe ~ [^\|] |
|
1507
|
|
|
|
|
|
|
|
|
1508
|
|
|
|
|
|
|
NonBacktickOrEscapedBackticks_Any ~ NonBacktickOrEscapedBackticks* |
|
1509
|
|
|
|
|
|
|
NonBacktickOrEscapedBackticks ~ EscapedBacktick | NonBacktick |
|
1510
|
|
|
|
|
|
|
EscapedBacktick ~ Escape [`] |
|
1511
|
|
|
|
|
|
|
NonBacktick ~ [^\`] |
|
1512
|
|
|
|
|
|
|
|
|
1513
|
|
|
|
|
|
|
Ellipsis ~ '...' |
|
1514
|
|
|
|
|
|
|
|
|
1515
|
|
|
|
|
|
|
UnderscorePackage ~ '__PACKAGE__' |
|
1516
|
|
|
|
|
|
|
UnderscoreFile ~ '__FILE__' |
|
1517
|
|
|
|
|
|
|
UnderscoreLine ~ '__LINE__' |
|
1518
|
|
|
|
|
|
|
UnderscoreSub ~ '__SUB__' |
|
1519
|
|
|
|
|
|
|
#UnderscoreData ~ '__DATA__' |
|
1520
|
|
|
|
|
|
|
#UnderscoreEnd ~ '__END__' |
|
1521
|
|
|
|
|
|
|
|
|
1522
|
|
|
|
|
|
|
PhaseName ~ 'BEGIN' | 'CHECK' | 'INIT' | 'UNITCHECK' | 'END' |
|
1523
|
|
|
|
|
|
|
|
|
1524
|
|
|
|
|
|
|
SubAttrArgs ~ '(' NonRParenOrEscapedParens_Any ')' |
|
1525
|
|
|
|
|
|
|
|
|
1526
|
|
|
|
|
|
|
OpArrow ~ '->' |
|
1527
|
|
|
|
|
|
|
OpInc ~ '++' | '--' |
|
1528
|
|
|
|
|
|
|
OpPower ~ '**' |
|
1529
|
|
|
|
|
|
|
OpUnary ~ '!' | '~' | '\' | '+' | '-' |
|
1530
|
|
|
|
|
|
|
OpRegex ~ '=~' | '!~' |
|
1531
|
|
|
|
|
|
|
OpMulti ~ '*' | '/' | '%' | 'x' |
|
1532
|
|
|
|
|
|
|
OpAdd ~ '+' | '-' | '.' |
|
1533
|
|
|
|
|
|
|
OpShift ~ '<<' | '>>' |
|
1534
|
|
|
|
|
|
|
OpInequal ~ '<' | '>' | '<=' | '>=' | 'lt' | 'gt' | 'le' | 'ge' |
|
1535
|
|
|
|
|
|
|
OpEqual ~ '==' | '!=' | '<=>' | 'eq' | 'ne' | 'cmp' |
|
1536
|
|
|
|
|
|
|
OpBinAnd ~ '&' |
|
1537
|
|
|
|
|
|
|
OpBinOr ~ '|' | '^' |
|
1538
|
|
|
|
|
|
|
OpLogAnd ~ '&&' |
|
1539
|
|
|
|
|
|
|
OpLogOr ~ '||' | '//' |
|
1540
|
|
|
|
|
|
|
OpRange ~ '..' | '...' |
|
1541
|
|
|
|
|
|
|
OpTriThen ~ '?' |
|
1542
|
|
|
|
|
|
|
OpTriElse ~ ':' |
|
1543
|
|
|
|
|
|
|
OpAssign ~ '=' | '*=' | '/=' | '%=' | 'x=' | '+=' | '-=' | '.=' | '<<=' | '>>=' | '&=' | '|=' | '^=' | '&&=' | '||=' | '//=' |
|
1544
|
|
|
|
|
|
|
OpComma ~ ',' | '=>' |
|
1545
|
|
|
|
|
|
|
OpNameNot ~ 'not' |
|
1546
|
|
|
|
|
|
|
OpNameAnd ~ 'and' |
|
1547
|
|
|
|
|
|
|
OpNameOr ~ 'or' | 'xor' |
|
1548
|
|
|
|
|
|
|
|
|
1549
|
|
|
|
|
|
|
OpKeywordAbs ~ 'abs' |
|
1550
|
|
|
|
|
|
|
OpKeywordAccept ~ 'accept' |
|
1551
|
|
|
|
|
|
|
OpKeywordAlarm ~ 'alarm' |
|
1552
|
|
|
|
|
|
|
OpKeywordAtan2 ~ 'atan2' |
|
1553
|
|
|
|
|
|
|
OpKeywordBind ~ 'bind' |
|
1554
|
|
|
|
|
|
|
OpKeywordBinmode ~ 'binmode' |
|
1555
|
|
|
|
|
|
|
OpKeywordBless ~ 'bless' |
|
1556
|
|
|
|
|
|
|
OpKeywordBreak ~ 'break' |
|
1557
|
|
|
|
|
|
|
OpKeywordCaller ~ 'caller' |
|
1558
|
|
|
|
|
|
|
OpKeywordChdir ~ 'chdir' |
|
1559
|
|
|
|
|
|
|
OpKeywordChmod ~ 'chmod' |
|
1560
|
|
|
|
|
|
|
OpKeywordChomp ~ 'chomp' |
|
1561
|
|
|
|
|
|
|
OpKeywordChop ~ 'chop' |
|
1562
|
|
|
|
|
|
|
OpKeywordChown ~ 'chown' |
|
1563
|
|
|
|
|
|
|
OpKeywordChr ~ 'chr' |
|
1564
|
|
|
|
|
|
|
OpKeywordChroot ~ 'chroot' |
|
1565
|
|
|
|
|
|
|
OpKeywordClose ~ 'close' |
|
1566
|
|
|
|
|
|
|
OpKeywordClosedir ~ 'closedir' |
|
1567
|
|
|
|
|
|
|
OpKeywordConnect ~ 'connect' |
|
1568
|
|
|
|
|
|
|
OpKeywordContinue ~ 'continue' |
|
1569
|
|
|
|
|
|
|
OpKeywordCos ~ 'cos' |
|
1570
|
|
|
|
|
|
|
OpKeywordCrypt ~ 'crypt' |
|
1571
|
|
|
|
|
|
|
OpKeywordDbmclose ~ 'dbmclose' |
|
1572
|
|
|
|
|
|
|
OpKeywordDbmopen ~ 'dbmopen' |
|
1573
|
|
|
|
|
|
|
OpKeywordDefined ~ 'defined' |
|
1574
|
|
|
|
|
|
|
OpKeywordDelete ~ 'delete' |
|
1575
|
|
|
|
|
|
|
OpKeywordDie ~ 'die' |
|
1576
|
|
|
|
|
|
|
OpKeywordDo ~ 'do' |
|
1577
|
|
|
|
|
|
|
OpKeywordDump ~ 'dump' |
|
1578
|
|
|
|
|
|
|
OpKeywordEach ~ 'each' |
|
1579
|
|
|
|
|
|
|
OpKeywordEof ~ 'eof' |
|
1580
|
|
|
|
|
|
|
OpKeywordEval ~ 'eval' |
|
1581
|
|
|
|
|
|
|
OpKeywordEvalbytes ~ 'evalbytes' |
|
1582
|
|
|
|
|
|
|
OpKeywordExec ~ 'exec' |
|
1583
|
|
|
|
|
|
|
OpKeywordExists ~ 'exists' |
|
1584
|
|
|
|
|
|
|
OpKeywordExit ~ 'exit' |
|
1585
|
|
|
|
|
|
|
OpKeywordExp ~ 'exp' |
|
1586
|
|
|
|
|
|
|
OpKeywordFc ~ 'fc' |
|
1587
|
|
|
|
|
|
|
OpKeywordFor ~ 'for' |
|
1588
|
|
|
|
|
|
|
OpKeywordForeach ~ 'foreach' |
|
1589
|
|
|
|
|
|
|
OpKeywordFcntl ~ 'fcntl' |
|
1590
|
|
|
|
|
|
|
OpKeywordFileno ~ 'fileno' |
|
1591
|
|
|
|
|
|
|
OpKeywordFlock ~ 'flock' |
|
1592
|
|
|
|
|
|
|
OpKeywordFork ~ 'fork' |
|
1593
|
|
|
|
|
|
|
OpKeywordGetc ~ 'getc' |
|
1594
|
|
|
|
|
|
|
OpKeywordGetlogin ~ 'getlogin' |
|
1595
|
|
|
|
|
|
|
OpKeywordGetpeername ~ 'getpeername' |
|
1596
|
|
|
|
|
|
|
OpKeywordGetpgrp ~ 'getpgrp' |
|
1597
|
|
|
|
|
|
|
OpKeywordGetppid ~ 'getppid' |
|
1598
|
|
|
|
|
|
|
OpKeywordGetpriority ~ 'getpriority' |
|
1599
|
|
|
|
|
|
|
OpKeywordGetpwnam ~ 'getpwnam' |
|
1600
|
|
|
|
|
|
|
OpKeywordGetgrnam ~ 'getgrnam' |
|
1601
|
|
|
|
|
|
|
OpKeywordGethostbyname ~ 'gethostbyname' |
|
1602
|
|
|
|
|
|
|
OpKeywordGetnetbyname ~ 'getnetbyname' |
|
1603
|
|
|
|
|
|
|
OpKeywordGetprotobyname ~ 'getprotobyname' |
|
1604
|
|
|
|
|
|
|
OpKeywordGetpwuid ~ 'getpwuid' |
|
1605
|
|
|
|
|
|
|
OpKeywordGetgrgid ~ 'getgrgid' |
|
1606
|
|
|
|
|
|
|
OpKeywordGetservbyname ~ 'getservbyname' |
|
1607
|
|
|
|
|
|
|
OpKeywordGethostbyaddr ~ 'gethostbyaddr' |
|
1608
|
|
|
|
|
|
|
OpKeywordGetnetbyaddr ~ 'getnetbyaddr' |
|
1609
|
|
|
|
|
|
|
OpKeywordGetprotobynumber ~ 'getprotobynumber' |
|
1610
|
|
|
|
|
|
|
OpKeywordGetservbyport ~ 'getservbyport' |
|
1611
|
|
|
|
|
|
|
OpKeywordGetpwent ~ 'getpwent' |
|
1612
|
|
|
|
|
|
|
OpKeywordGetgrent ~ 'getgrent' |
|
1613
|
|
|
|
|
|
|
OpKeywordGethostent ~ 'gethostent' |
|
1614
|
|
|
|
|
|
|
OpKeywordGetnetent ~ 'getnetent' |
|
1615
|
|
|
|
|
|
|
OpKeywordGetprotoent ~ 'getprotoent' |
|
1616
|
|
|
|
|
|
|
OpKeywordGetservent ~ 'getservent' |
|
1617
|
|
|
|
|
|
|
OpKeywordSetpwent ~ 'setpwent' |
|
1618
|
|
|
|
|
|
|
OpKeywordSetgrent ~ 'setgrent' |
|
1619
|
|
|
|
|
|
|
OpKeywordSethostent ~ 'sethostent' |
|
1620
|
|
|
|
|
|
|
OpKeywordSetnetent ~ 'setnetent' |
|
1621
|
|
|
|
|
|
|
OpKeywordSetprotoent ~ 'setprotoent' |
|
1622
|
|
|
|
|
|
|
OpKeywordSetservent ~ 'setservent' |
|
1623
|
|
|
|
|
|
|
OpKeywordEndpwent ~ 'endpwent' |
|
1624
|
|
|
|
|
|
|
OpKeywordEndgrent ~ 'endgrent' |
|
1625
|
|
|
|
|
|
|
OpKeywordEndhostent ~ 'endhostent' |
|
1626
|
|
|
|
|
|
|
OpKeywordEndnetent ~ 'endnetent' |
|
1627
|
|
|
|
|
|
|
OpKeywordEndprotoent ~ 'endprotoent' |
|
1628
|
|
|
|
|
|
|
OpKeywordEndservent ~ 'endservent' |
|
1629
|
|
|
|
|
|
|
OpKeywordGetsockname ~ 'getsockname' |
|
1630
|
|
|
|
|
|
|
OpKeywordGetsockopt ~ 'getsockopt' |
|
1631
|
|
|
|
|
|
|
OpKeywordGlob ~ 'glob' |
|
1632
|
|
|
|
|
|
|
OpKeywordGmtime ~ 'gmtime' |
|
1633
|
|
|
|
|
|
|
OpKeywordGoto ~ 'goto' |
|
1634
|
|
|
|
|
|
|
OpKeywordGrep ~ 'grep' |
|
1635
|
|
|
|
|
|
|
OpKeywordHex ~ 'hex' |
|
1636
|
|
|
|
|
|
|
OpKeywordIndex ~ 'index' |
|
1637
|
|
|
|
|
|
|
OpKeywordInt ~ 'int' |
|
1638
|
|
|
|
|
|
|
OpKeywordIoctl ~ 'ioctl' |
|
1639
|
|
|
|
|
|
|
OpKeywordJoin ~ 'join' |
|
1640
|
|
|
|
|
|
|
OpKeywordKeys ~ 'keys' |
|
1641
|
|
|
|
|
|
|
OpKeywordKill ~ 'kill' |
|
1642
|
|
|
|
|
|
|
OpKeywordLast ~ 'last' |
|
1643
|
|
|
|
|
|
|
OpKeywordLc ~ 'lc' |
|
1644
|
|
|
|
|
|
|
OpKeywordLcfirst ~ 'lcfirst' |
|
1645
|
|
|
|
|
|
|
OpKeywordLength ~ 'length' |
|
1646
|
|
|
|
|
|
|
OpKeywordLink ~ 'link' |
|
1647
|
|
|
|
|
|
|
OpKeywordListen ~ 'listen' |
|
1648
|
|
|
|
|
|
|
OpKeywordLocal ~ 'local' |
|
1649
|
|
|
|
|
|
|
OpKeywordLocaltime ~ 'localtime' |
|
1650
|
|
|
|
|
|
|
OpKeywordLock ~ 'lock' |
|
1651
|
|
|
|
|
|
|
OpKeywordLog ~ 'log' |
|
1652
|
|
|
|
|
|
|
OpKeywordLstat ~ 'lstat' |
|
1653
|
|
|
|
|
|
|
OpKeywordM ~ 'm' |
|
1654
|
|
|
|
|
|
|
OpKeywordMap ~ 'map' |
|
1655
|
|
|
|
|
|
|
OpKeywordMkdir ~ 'mkdir' |
|
1656
|
|
|
|
|
|
|
OpKeywordMsgctl ~ 'msgctl' |
|
1657
|
|
|
|
|
|
|
OpKeywordMsgget ~ 'msgget' |
|
1658
|
|
|
|
|
|
|
OpKeywordMsgrcv ~ 'msgrcv' |
|
1659
|
|
|
|
|
|
|
OpKeywordMsgsnd ~ 'msgsnd' |
|
1660
|
|
|
|
|
|
|
OpKeywordMy ~ 'my' |
|
1661
|
|
|
|
|
|
|
OpKeywordNext ~ 'next' |
|
1662
|
|
|
|
|
|
|
OpKeywordNo ~ 'no' |
|
1663
|
|
|
|
|
|
|
OpKeywordOct ~ 'oct' |
|
1664
|
|
|
|
|
|
|
OpKeywordOpen ~ 'open' |
|
1665
|
|
|
|
|
|
|
OpKeywordOpendir ~ 'opendir' |
|
1666
|
|
|
|
|
|
|
OpKeywordOrd ~ 'ord' |
|
1667
|
|
|
|
|
|
|
OpKeywordOur ~ 'our' |
|
1668
|
|
|
|
|
|
|
OpKeywordPack ~ 'pack' |
|
1669
|
|
|
|
|
|
|
OpKeywordPackage ~ 'package' |
|
1670
|
|
|
|
|
|
|
OpKeywordPipe ~ 'pipe' |
|
1671
|
|
|
|
|
|
|
OpKeywordPop ~ 'pop' |
|
1672
|
|
|
|
|
|
|
OpKeywordPos ~ 'pos' |
|
1673
|
|
|
|
|
|
|
OpKeywordPrint ~ 'print' |
|
1674
|
|
|
|
|
|
|
OpKeywordPrintf ~ 'printf' |
|
1675
|
|
|
|
|
|
|
OpKeywordPrototype ~ 'prototype' |
|
1676
|
|
|
|
|
|
|
OpKeywordPush ~ 'push' |
|
1677
|
|
|
|
|
|
|
OpKeywordQ ~ 'q' |
|
1678
|
|
|
|
|
|
|
OpKeywordQq ~ 'qq' |
|
1679
|
|
|
|
|
|
|
OpKeywordQx ~ 'qx' |
|
1680
|
|
|
|
|
|
|
OpKeywordQw ~ 'qw' |
|
1681
|
|
|
|
|
|
|
OpKeywordQr ~ 'qr' |
|
1682
|
|
|
|
|
|
|
OpKeywordQuotemeta ~ 'quotemeta' |
|
1683
|
|
|
|
|
|
|
OpKeywordRand ~ 'rand' |
|
1684
|
|
|
|
|
|
|
OpKeywordRead ~ 'read' |
|
1685
|
|
|
|
|
|
|
OpKeywordReaddir ~ 'readdir' |
|
1686
|
|
|
|
|
|
|
OpKeywordReadline ~ 'readline' |
|
1687
|
|
|
|
|
|
|
OpKeywordReadlink ~ 'readlink' |
|
1688
|
|
|
|
|
|
|
OpKeywordReadpipe ~ 'readpipe' |
|
1689
|
|
|
|
|
|
|
OpKeywordRecv ~ 'recv' |
|
1690
|
|
|
|
|
|
|
OpKeywordRedo ~ 'redo' |
|
1691
|
|
|
|
|
|
|
OpKeywordRef ~ 'ref' |
|
1692
|
|
|
|
|
|
|
OpKeywordRename ~ 'rename' |
|
1693
|
|
|
|
|
|
|
OpKeywordRequire ~ 'require' |
|
1694
|
|
|
|
|
|
|
OpKeywordReset ~ 'reset' |
|
1695
|
|
|
|
|
|
|
OpKeywordReturn ~ 'return' |
|
1696
|
|
|
|
|
|
|
OpKeywordReverse ~ 'reverse' |
|
1697
|
|
|
|
|
|
|
OpKeywordRewinddir ~ 'rewinddir' |
|
1698
|
|
|
|
|
|
|
OpKeywordRindex ~ 'rindex' |
|
1699
|
|
|
|
|
|
|
OpKeywordRmdir ~ 'rmdir' |
|
1700
|
|
|
|
|
|
|
OpKeywordS ~ 's' |
|
1701
|
|
|
|
|
|
|
OpKeywordSay ~ 'say' |
|
1702
|
|
|
|
|
|
|
OpKeywordScalar ~ 'scalar' |
|
1703
|
|
|
|
|
|
|
OpKeywordSeek ~ 'seek' |
|
1704
|
|
|
|
|
|
|
OpKeywordSeekdir ~ 'seekdir' |
|
1705
|
|
|
|
|
|
|
OpKeywordSelect ~ 'select' |
|
1706
|
|
|
|
|
|
|
OpKeywordSemctl ~ 'semctl' |
|
1707
|
|
|
|
|
|
|
OpKeywordSemget ~ 'semget' |
|
1708
|
|
|
|
|
|
|
OpKeywordSemop ~ 'semop' |
|
1709
|
|
|
|
|
|
|
OpKeywordSend ~ 'send' |
|
1710
|
|
|
|
|
|
|
OpKeywordSetpgrp ~ 'setpgrp' |
|
1711
|
|
|
|
|
|
|
OpKeywordSetpriority ~ 'setpriority' |
|
1712
|
|
|
|
|
|
|
OpKeywordSetsockopt ~ 'setsockopt' |
|
1713
|
|
|
|
|
|
|
OpKeywordShift ~ 'shift' |
|
1714
|
|
|
|
|
|
|
OpKeywordShmctl ~ 'shmctl' |
|
1715
|
|
|
|
|
|
|
OpKeywordShmget ~ 'shmget' |
|
1716
|
|
|
|
|
|
|
OpKeywordShmread ~ 'shmread' |
|
1717
|
|
|
|
|
|
|
OpKeywordShmwrite ~ 'shmwrite' |
|
1718
|
|
|
|
|
|
|
OpKeywordShutdown ~ 'shutdown' |
|
1719
|
|
|
|
|
|
|
OpKeywordSin ~ 'sin' |
|
1720
|
|
|
|
|
|
|
OpKeywordSleep ~ 'sleep' |
|
1721
|
|
|
|
|
|
|
OpKeywordSocket ~ 'socket' |
|
1722
|
|
|
|
|
|
|
OpKeywordSocketpair ~ 'socketpair' |
|
1723
|
|
|
|
|
|
|
OpKeywordSort ~ 'sort' |
|
1724
|
|
|
|
|
|
|
OpKeywordSplice ~ 'splice' |
|
1725
|
|
|
|
|
|
|
OpKeywordSplit ~ 'split' |
|
1726
|
|
|
|
|
|
|
OpKeywordSprintf ~ 'sprintf' |
|
1727
|
|
|
|
|
|
|
OpKeywordSqrt ~ 'sqrt' |
|
1728
|
|
|
|
|
|
|
OpKeywordSrand ~ 'srand' |
|
1729
|
|
|
|
|
|
|
OpKeywordStat ~ 'stat' |
|
1730
|
|
|
|
|
|
|
OpKeywordState ~ 'state' |
|
1731
|
|
|
|
|
|
|
OpKeywordStudy ~ 'study' |
|
1732
|
|
|
|
|
|
|
OpKeywordSub ~ 'sub' |
|
1733
|
|
|
|
|
|
|
OpKeywordSubstr ~ 'substr' |
|
1734
|
|
|
|
|
|
|
OpKeywordSymlink ~ 'symlink' |
|
1735
|
|
|
|
|
|
|
OpKeywordSyscall ~ 'syscall' |
|
1736
|
|
|
|
|
|
|
OpKeywordSysopen ~ 'sysopen' |
|
1737
|
|
|
|
|
|
|
OpKeywordSysread ~ 'sysread' |
|
1738
|
|
|
|
|
|
|
OpKeywordSysseek ~ 'sysseek' |
|
1739
|
|
|
|
|
|
|
OpKeywordSystem ~ 'system' |
|
1740
|
|
|
|
|
|
|
OpKeywordSyswrite ~ 'syswrite' |
|
1741
|
|
|
|
|
|
|
OpKeywordTr ~ 'tr' |
|
1742
|
|
|
|
|
|
|
OpKeywordTell ~ 'tell' |
|
1743
|
|
|
|
|
|
|
OpKeywordTelldir ~ 'telldir' |
|
1744
|
|
|
|
|
|
|
OpKeywordTie ~ 'tie' |
|
1745
|
|
|
|
|
|
|
OpKeywordTied ~ 'tied' |
|
1746
|
|
|
|
|
|
|
OpKeywordTime ~ 'time' |
|
1747
|
|
|
|
|
|
|
OpKeywordTimes ~ 'times' |
|
1748
|
|
|
|
|
|
|
OpKeywordTruncate ~ 'truncate' |
|
1749
|
|
|
|
|
|
|
OpKeywordUc ~ 'uc' |
|
1750
|
|
|
|
|
|
|
OpKeywordUcfirst ~ 'ucfirst' |
|
1751
|
|
|
|
|
|
|
OpKeywordUmask ~ 'umask' |
|
1752
|
|
|
|
|
|
|
OpKeywordUndef ~ 'undef' |
|
1753
|
|
|
|
|
|
|
OpKeywordUnlink ~ 'unlink' |
|
1754
|
|
|
|
|
|
|
OpKeywordUnpack ~ 'unpack' |
|
1755
|
|
|
|
|
|
|
OpKeywordUnshift ~ 'unshift' |
|
1756
|
|
|
|
|
|
|
OpKeywordUntie ~ 'untie' |
|
1757
|
|
|
|
|
|
|
OpKeywordUse ~ 'use' |
|
1758
|
|
|
|
|
|
|
OpKeywordUtime ~ 'utime' |
|
1759
|
|
|
|
|
|
|
OpKeywordValues ~ 'values' |
|
1760
|
|
|
|
|
|
|
OpKeywordVec ~ 'vec' |
|
1761
|
|
|
|
|
|
|
OpKeywordWait ~ 'wait' |
|
1762
|
|
|
|
|
|
|
OpKeywordWaitpid ~ 'waitpid' |
|
1763
|
|
|
|
|
|
|
OpKeywordWantarray ~ 'wantarray' |
|
1764
|
|
|
|
|
|
|
OpKeywordWarn ~ 'warn' |
|
1765
|
|
|
|
|
|
|
OpKeywordWrite ~ 'write' |
|
1766
|
|
|
|
|
|
|
OpKeywordY ~ 'y' |
|
1767
|
|
|
|
|
|
|
|
|
1768
|
|
|
|
|
|
|
OpFileReadableEffective ~ '-r' |
|
1769
|
|
|
|
|
|
|
OpFileWritableEffective ~ '-w' |
|
1770
|
|
|
|
|
|
|
OpFileRExecutableEffective ~ '-x' |
|
1771
|
|
|
|
|
|
|
OpFileOwnedEffective ~ '-o' |
|
1772
|
|
|
|
|
|
|
OpFileReadableReal ~ '-R' |
|
1773
|
|
|
|
|
|
|
OpFileWritableReal ~ '-W' |
|
1774
|
|
|
|
|
|
|
OpFileRExecutableReal ~ '-X' |
|
1775
|
|
|
|
|
|
|
OpFileOwnedReal ~ '-O' |
|
1776
|
|
|
|
|
|
|
OpFileExists ~ '-e' |
|
1777
|
|
|
|
|
|
|
OpFileEmpty ~ '-z' |
|
1778
|
|
|
|
|
|
|
OpFileNonEmpty ~ '-s' |
|
1779
|
|
|
|
|
|
|
OpFilePlain ~ '-f' |
|
1780
|
|
|
|
|
|
|
OpFileDirectory ~ '-d' |
|
1781
|
|
|
|
|
|
|
OpFileSymbolic ~ '-l' |
|
1782
|
|
|
|
|
|
|
OpFileNamedPipe ~ '-p' |
|
1783
|
|
|
|
|
|
|
OpFileSocket ~ '-S' |
|
1784
|
|
|
|
|
|
|
OpFileBlock ~ '-b' |
|
1785
|
|
|
|
|
|
|
OpFileCharacter ~ '-c' |
|
1786
|
|
|
|
|
|
|
OpFileOpenedTty ~ '-t' |
|
1787
|
|
|
|
|
|
|
OpFileSetuid ~ '-u' |
|
1788
|
|
|
|
|
|
|
OpFileSetgid ~ '-g' |
|
1789
|
|
|
|
|
|
|
OpFileSticky ~ '-k' |
|
1790
|
|
|
|
|
|
|
OpFileAsciiUtf8 ~ '-T' |
|
1791
|
|
|
|
|
|
|
OpFileBinary ~ '-B' |
|
1792
|
|
|
|
|
|
|
OpFileStartTime ~ '-M' |
|
1793
|
|
|
|
|
|
|
OpFileAccessTime ~ '-A' |
|
1794
|
|
|
|
|
|
|
OpFileChangeTime ~ '-C' |
|
1795
|
|
|
|
|
|
|
|
|
1796
|
|
|
|
|
|
|
ConditionIf ~ 'if' |
|
1797
|
|
|
|
|
|
|
ConditionElsif ~ 'elsif' |
|
1798
|
|
|
|
|
|
|
ConditionElse ~ 'else' |
|
1799
|
|
|
|
|
|
|
ConditionUnless ~ 'unless' |
|
1800
|
|
|
|
|
|
|
ConditionWhile ~ 'while' |
|
1801
|
|
|
|
|
|
|
ConditionUntil ~ 'until' |
|
1802
|
|
|
|
|
|
|
ConditionFor ~ 'for' |
|
1803
|
|
|
|
|
|
|
ConditionForeach ~ 'foreach' |
|
1804
|
|
|
|
|
|
|
|
|
1805
|
|
|
|
|
|
|
BuiltinFilehandle ~ 'STDIN' | 'STDOUT' | 'STDERR' | 'ARGV' | 'ARGVOUT' | 'DATA' |
|
1806
|
|
|
|
|
|
|
|
|
1807
|
|
|
|
|
|
|
# Ignore whitespace |
|
1808
|
|
|
|
|
|
|
:discard ~ whitespace |
|
1809
|
|
|
|
|
|
|
whitespace ~ [\s]+ |
|
1810
|
|
|
|
|
|
|
|
|
1811
|
|
|
|
|
|
|
# Comments |
|
1812
|
|
|
|
|
|
|
:discard ~ |
|
1813
|
|
|
|
|
|
|
~ | |
|
1814
|
|
|
|
|
|
|
~ '#' |
|
1815
|
|
|
|
|
|
|
~ '#' |
|
1816
|
|
|
|
|
|
|
~ * |
|
1817
|
|
|
|
|
|
|
~ [\x{A}\x{B}\x{C}\x{D}\x{2028}\x{2029}] |
|
1818
|
|
|
|
|
|
|
~ [^\x{A}\x{B}\x{C}\x{D}\x{2028}\x{2029}] |
|
1819
|
|
|
|
|
|
|
|
|
1820
|
|
|
|
|
|
|
# Recognize phases before subroutines |
|
1821
|
|
|
|
|
|
|
:lexeme ~ PhaseName priority => 1 |
|
1822
|
|
|
|
|
|
|
|
|
1823
|
|
|
|
|
|
|
# Recognize q* / s / m / y / tr before subroutines |
|
1824
|
|
|
|
|
|
|
:lexeme ~ QLikeValueExpr priority => 1 |
|
1825
|
|
|
|
|
|
|
:lexeme ~ QLikeValueExprWithMods priority => 1 |
|
1826
|
|
|
|
|
|
|
|
|
1827
|
|
|
|
|
|
|
:lexeme ~ VersionNumber priority => 1 |
|
1828
|
|
|
|
|
|
|
|
|
1829
|
|
|
|
|
|
|
# Prioritize keywords over functions |
|
1830
|
|
|
|
|
|
|
:lexeme ~ OpKeywordAbs priority => 1 |
|
1831
|
|
|
|
|
|
|
:lexeme ~ OpKeywordAccept priority => 1 |
|
1832
|
|
|
|
|
|
|
:lexeme ~ OpKeywordAlarm priority => 1 |
|
1833
|
|
|
|
|
|
|
:lexeme ~ OpKeywordAtan2 priority => 1 |
|
1834
|
|
|
|
|
|
|
:lexeme ~ OpKeywordBind priority => 1 |
|
1835
|
|
|
|
|
|
|
:lexeme ~ OpKeywordBinmode priority => 1 |
|
1836
|
|
|
|
|
|
|
:lexeme ~ OpKeywordBless priority => 1 |
|
1837
|
|
|
|
|
|
|
:lexeme ~ OpKeywordBreak priority => 1 |
|
1838
|
|
|
|
|
|
|
:lexeme ~ OpKeywordCaller priority => 1 |
|
1839
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChdir priority => 1 |
|
1840
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChmod priority => 1 |
|
1841
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChomp priority => 1 |
|
1842
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChop priority => 1 |
|
1843
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChown priority => 1 |
|
1844
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChr priority => 1 |
|
1845
|
|
|
|
|
|
|
:lexeme ~ OpKeywordChroot priority => 1 |
|
1846
|
|
|
|
|
|
|
:lexeme ~ OpKeywordClose priority => 1 |
|
1847
|
|
|
|
|
|
|
:lexeme ~ OpKeywordClosedir priority => 1 |
|
1848
|
|
|
|
|
|
|
:lexeme ~ OpKeywordConnect priority => 1 |
|
1849
|
|
|
|
|
|
|
:lexeme ~ OpKeywordContinue priority => 1 |
|
1850
|
|
|
|
|
|
|
:lexeme ~ OpKeywordCos priority => 1 |
|
1851
|
|
|
|
|
|
|
:lexeme ~ OpKeywordCrypt priority => 1 |
|
1852
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDbmclose priority => 1 |
|
1853
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDbmopen priority => 1 |
|
1854
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDefined priority => 1 |
|
1855
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDelete priority => 1 |
|
1856
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDie priority => 1 |
|
1857
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDo priority => 1 |
|
1858
|
|
|
|
|
|
|
:lexeme ~ OpKeywordDump priority => 1 |
|
1859
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEach priority => 1 |
|
1860
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEof priority => 1 |
|
1861
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEval priority => 1 |
|
1862
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEvalbytes priority => 1 |
|
1863
|
|
|
|
|
|
|
:lexeme ~ OpKeywordExec priority => 1 |
|
1864
|
|
|
|
|
|
|
:lexeme ~ OpKeywordExists priority => 1 |
|
1865
|
|
|
|
|
|
|
:lexeme ~ OpKeywordExit priority => 1 |
|
1866
|
|
|
|
|
|
|
:lexeme ~ OpKeywordExp priority => 1 |
|
1867
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFc priority => 1 |
|
1868
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFor priority => 1 |
|
1869
|
|
|
|
|
|
|
:lexeme ~ OpKeywordForeach priority => 1 |
|
1870
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFcntl priority => 1 |
|
1871
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFileno priority => 1 |
|
1872
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFlock priority => 1 |
|
1873
|
|
|
|
|
|
|
:lexeme ~ OpKeywordFork priority => 1 |
|
1874
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetc priority => 1 |
|
1875
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetlogin priority => 1 |
|
1876
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpeername priority => 1 |
|
1877
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpgrp priority => 1 |
|
1878
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetppid priority => 1 |
|
1879
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpriority priority => 1 |
|
1880
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpwnam priority => 1 |
|
1881
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetgrnam priority => 1 |
|
1882
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGethostbyname priority => 1 |
|
1883
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetnetbyname priority => 1 |
|
1884
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetprotobyname priority => 1 |
|
1885
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpwuid priority => 1 |
|
1886
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetgrgid priority => 1 |
|
1887
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetservbyname priority => 1 |
|
1888
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGethostbyaddr priority => 1 |
|
1889
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetnetbyaddr priority => 1 |
|
1890
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetprotobynumber priority => 1 |
|
1891
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetservbyport priority => 1 |
|
1892
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetpwent priority => 1 |
|
1893
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetgrent priority => 1 |
|
1894
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGethostent priority => 1 |
|
1895
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetnetent priority => 1 |
|
1896
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetprotoent priority => 1 |
|
1897
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetservent priority => 1 |
|
1898
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetpwent priority => 1 |
|
1899
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetgrent priority => 1 |
|
1900
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSethostent priority => 1 |
|
1901
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetnetent priority => 1 |
|
1902
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetprotoent priority => 1 |
|
1903
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetservent priority => 1 |
|
1904
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndpwent priority => 1 |
|
1905
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndgrent priority => 1 |
|
1906
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndhostent priority => 1 |
|
1907
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndnetent priority => 1 |
|
1908
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndprotoent priority => 1 |
|
1909
|
|
|
|
|
|
|
:lexeme ~ OpKeywordEndservent priority => 1 |
|
1910
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetsockname priority => 1 |
|
1911
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGetsockopt priority => 1 |
|
1912
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGlob priority => 1 |
|
1913
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGmtime priority => 1 |
|
1914
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGoto priority => 1 |
|
1915
|
|
|
|
|
|
|
:lexeme ~ OpKeywordGrep priority => 1 |
|
1916
|
|
|
|
|
|
|
:lexeme ~ OpKeywordHex priority => 1 |
|
1917
|
|
|
|
|
|
|
:lexeme ~ OpKeywordIndex priority => 1 |
|
1918
|
|
|
|
|
|
|
:lexeme ~ OpKeywordInt priority => 1 |
|
1919
|
|
|
|
|
|
|
:lexeme ~ OpKeywordIoctl priority => 1 |
|
1920
|
|
|
|
|
|
|
:lexeme ~ OpKeywordJoin priority => 1 |
|
1921
|
|
|
|
|
|
|
:lexeme ~ OpKeywordKeys priority => 1 |
|
1922
|
|
|
|
|
|
|
:lexeme ~ OpKeywordKill priority => 1 |
|
1923
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLast priority => 1 |
|
1924
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLc priority => 1 |
|
1925
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLcfirst priority => 1 |
|
1926
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLength priority => 1 |
|
1927
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLink priority => 1 |
|
1928
|
|
|
|
|
|
|
:lexeme ~ OpKeywordListen priority => 1 |
|
1929
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLocal priority => 1 |
|
1930
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLocaltime priority => 1 |
|
1931
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLock priority => 1 |
|
1932
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLog priority => 1 |
|
1933
|
|
|
|
|
|
|
:lexeme ~ OpKeywordLstat priority => 1 |
|
1934
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMap priority => 1 |
|
1935
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMkdir priority => 1 |
|
1936
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMsgctl priority => 1 |
|
1937
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMsgget priority => 1 |
|
1938
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMsgrcv priority => 1 |
|
1939
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMsgsnd priority => 1 |
|
1940
|
|
|
|
|
|
|
:lexeme ~ OpKeywordMy priority => 1 |
|
1941
|
|
|
|
|
|
|
:lexeme ~ OpKeywordNext priority => 1 |
|
1942
|
|
|
|
|
|
|
:lexeme ~ OpKeywordNo priority => 1 |
|
1943
|
|
|
|
|
|
|
:lexeme ~ OpKeywordOct priority => 1 |
|
1944
|
|
|
|
|
|
|
:lexeme ~ OpKeywordOpen priority => 1 |
|
1945
|
|
|
|
|
|
|
:lexeme ~ OpKeywordOpendir priority => 1 |
|
1946
|
|
|
|
|
|
|
:lexeme ~ OpKeywordOrd priority => 1 |
|
1947
|
|
|
|
|
|
|
:lexeme ~ OpKeywordOur priority => 1 |
|
1948
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPack priority => 1 |
|
1949
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPackage priority => 1 |
|
1950
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPipe priority => 1 |
|
1951
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPop priority => 1 |
|
1952
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPos priority => 1 |
|
1953
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPrint priority => 1 |
|
1954
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPrintf priority => 1 |
|
1955
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPrototype priority => 1 |
|
1956
|
|
|
|
|
|
|
:lexeme ~ OpKeywordPush priority => 1 |
|
1957
|
|
|
|
|
|
|
:lexeme ~ OpKeywordQuotemeta priority => 1 |
|
1958
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRand priority => 1 |
|
1959
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRead priority => 1 |
|
1960
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReaddir priority => 1 |
|
1961
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReadline priority => 1 |
|
1962
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReadlink priority => 1 |
|
1963
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReadpipe priority => 1 |
|
1964
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRecv priority => 1 |
|
1965
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRedo priority => 1 |
|
1966
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRef priority => 1 |
|
1967
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRename priority => 1 |
|
1968
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRequire priority => 1 |
|
1969
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReset priority => 1 |
|
1970
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReturn priority => 1 |
|
1971
|
|
|
|
|
|
|
:lexeme ~ OpKeywordReverse priority => 1 |
|
1972
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRewinddir priority => 1 |
|
1973
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRindex priority => 1 |
|
1974
|
|
|
|
|
|
|
:lexeme ~ OpKeywordRmdir priority => 1 |
|
1975
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSay priority => 1 |
|
1976
|
|
|
|
|
|
|
:lexeme ~ OpKeywordScalar priority => 1 |
|
1977
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSeek priority => 1 |
|
1978
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSeekdir priority => 1 |
|
1979
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSelect priority => 1 |
|
1980
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSemctl priority => 1 |
|
1981
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSemget priority => 1 |
|
1982
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSemop priority => 1 |
|
1983
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSend priority => 1 |
|
1984
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetpgrp priority => 1 |
|
1985
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetpriority priority => 1 |
|
1986
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSetsockopt priority => 1 |
|
1987
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShift priority => 1 |
|
1988
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShmctl priority => 1 |
|
1989
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShmget priority => 1 |
|
1990
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShmread priority => 1 |
|
1991
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShmwrite priority => 1 |
|
1992
|
|
|
|
|
|
|
:lexeme ~ OpKeywordShutdown priority => 1 |
|
1993
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSin priority => 1 |
|
1994
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSleep priority => 1 |
|
1995
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSocket priority => 1 |
|
1996
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSocketpair priority => 1 |
|
1997
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSort priority => 1 |
|
1998
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSplice priority => 1 |
|
1999
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSplit priority => 1 |
|
2000
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSprintf priority => 1 |
|
2001
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSqrt priority => 1 |
|
2002
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSrand priority => 1 |
|
2003
|
|
|
|
|
|
|
:lexeme ~ OpKeywordStat priority => 1 |
|
2004
|
|
|
|
|
|
|
:lexeme ~ OpKeywordState priority => 1 |
|
2005
|
|
|
|
|
|
|
:lexeme ~ OpKeywordStudy priority => 1 |
|
2006
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSub priority => 1 |
|
2007
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSubstr priority => 1 |
|
2008
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSymlink priority => 1 |
|
2009
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSyscall priority => 1 |
|
2010
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSysopen priority => 1 |
|
2011
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSysread priority => 1 |
|
2012
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSysseek priority => 1 |
|
2013
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSystem priority => 1 |
|
2014
|
|
|
|
|
|
|
:lexeme ~ OpKeywordSyswrite priority => 1 |
|
2015
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTell priority => 1 |
|
2016
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTelldir priority => 1 |
|
2017
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTie priority => 1 |
|
2018
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTied priority => 1 |
|
2019
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTime priority => 1 |
|
2020
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTimes priority => 1 |
|
2021
|
|
|
|
|
|
|
:lexeme ~ OpKeywordTruncate priority => 1 |
|
2022
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUc priority => 1 |
|
2023
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUcfirst priority => 1 |
|
2024
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUmask priority => 1 |
|
2025
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUndef priority => 1 |
|
2026
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUnlink priority => 1 |
|
2027
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUnpack priority => 1 |
|
2028
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUnshift priority => 1 |
|
2029
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUntie priority => 1 |
|
2030
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUse priority => 1 |
|
2031
|
|
|
|
|
|
|
:lexeme ~ OpKeywordUtime priority => 1 |
|
2032
|
|
|
|
|
|
|
:lexeme ~ OpKeywordValues priority => 1 |
|
2033
|
|
|
|
|
|
|
:lexeme ~ OpKeywordVec priority => 1 |
|
2034
|
|
|
|
|
|
|
:lexeme ~ OpKeywordWait priority => 1 |
|
2035
|
|
|
|
|
|
|
:lexeme ~ OpKeywordWaitpid priority => 1 |
|
2036
|
|
|
|
|
|
|
:lexeme ~ OpKeywordWantarray priority => 1 |
|
2037
|
|
|
|
|
|
|
:lexeme ~ OpKeywordWarn priority => 1 |
|
2038
|
|
|
|
|
|
|
:lexeme ~ OpKeywordWrite priority => 1 |
|
2039
|
|
|
|
|
|
|
|
|
2040
|
|
|
|
|
|
|
# This is the only Op that conflicts |
|
2041
|
|
|
|
|
|
|
# OpInc conflicts with OpUnary |
|
2042
|
|
|
|
|
|
|
# So when it's both, OpInc wins |
|
2043
|
|
|
|
|
|
|
# (such as: sort $x + $y |
|
2044
|
|
|
|
|
|
|
:lexeme ~ OpAdd priority => 1 |
|
2045
|
|
|
|
|
|
|
|
|
2046
|
|
|
|
|
|
|
}; |
|
2047
|
|
|
|
|
|
|
|
|
2048
|
|
|
|
|
|
|
our $grammar = Marpa::R2::Scanless::G->new({ source => \$grammar_source }); |
|
2049
|
|
|
|
|
|
|
|
|
2050
|
|
|
|
|
|
|
sub build_struct { |
|
2051
|
765
|
|
|
765
|
0
|
3635
|
my ( $rec, $initial_valueref ) = @_; |
|
2052
|
765
|
|
|
|
|
2857
|
my @values = ($initial_valueref); |
|
2053
|
|
|
|
|
|
|
|
|
2054
|
765
|
|
|
|
|
3960
|
while ( my $valueref = shift @values ) { |
|
2055
|
14335
|
100
|
|
|
|
18251
|
if ( ! ref ${$valueref} ) { |
|
|
14335
|
|
|
|
|
26698
|
|
|
2056
|
3596
|
|
|
|
|
5668
|
${$valueref} = { |
|
2057
|
|
|
|
|
|
|
'name' => '', |
|
2058
|
|
|
|
|
|
|
'type' => 'lexeme', |
|
2059
|
3596
|
|
|
|
|
5762
|
'value' => ${$valueref}, |
|
|
3596
|
|
|
|
|
11178
|
|
|
2060
|
|
|
|
|
|
|
}; |
|
2061
|
|
|
|
|
|
|
|
|
2062
|
3596
|
|
|
|
|
8670
|
next; |
|
2063
|
|
|
|
|
|
|
} |
|
2064
|
|
|
|
|
|
|
|
|
2065
|
10739
|
|
|
|
|
13529
|
my $name = shift @{ ${$valueref} }; |
|
|
10739
|
|
|
|
|
12354
|
|
|
|
10739
|
|
|
|
|
20627
|
|
|
2066
|
10739
|
|
|
|
|
13342
|
my $start_pos = shift @{ ${$valueref} }; |
|
|
10739
|
|
|
|
|
12713
|
|
|
|
10739
|
|
|
|
|
15117
|
|
|
2067
|
10739
|
|
|
|
|
13207
|
my $length = shift @{ ${$valueref} }; |
|
|
10739
|
|
|
|
|
12591
|
|
|
|
10739
|
|
|
|
|
14989
|
|
|
2068
|
10739
|
|
|
|
|
13261
|
my @children = @{ ${$valueref} }; |
|
|
10739
|
|
|
|
|
12694
|
|
|
|
10739
|
|
|
|
|
19729
|
|
|
2069
|
|
|
|
|
|
|
|
|
2070
|
10739
|
|
|
|
|
25256
|
my ( $line, $column ) = $rec->line_column($start_pos); |
|
2071
|
10739
|
|
|
|
|
118563
|
${$valueref} = { |
|
|
10739
|
|
|
|
|
17365
|
|
|
2072
|
|
|
|
|
|
|
'name' => $name, |
|
2073
|
|
|
|
|
|
|
'type' => 'rule', |
|
2074
|
|
|
|
|
|
|
'start_pos' => $start_pos, |
|
2075
|
|
|
|
|
|
|
'length' => $length, |
|
2076
|
|
|
|
|
|
|
'children' => \@children, |
|
2077
|
|
|
|
|
|
|
'line' => $line, |
|
2078
|
|
|
|
|
|
|
'column' => $column, |
|
2079
|
|
|
|
|
|
|
}; |
|
2080
|
|
|
|
|
|
|
|
|
2081
|
10739
|
|
|
|
|
14299
|
push @values, map \$_, @{ ${$valueref}->{'children'} } |
|
|
10739
|
|
|
|
|
12189
|
|
|
|
10739
|
|
|
|
|
37773
|
|
|
2082
|
|
|
|
|
|
|
} |
|
2083
|
|
|
|
|
|
|
} |
|
2084
|
|
|
|
|
|
|
|
|
2085
|
|
|
|
|
|
|
sub parse { |
|
2086
|
890
|
|
|
890
|
0
|
2997
|
my ($class, $text) = @_; |
|
2087
|
|
|
|
|
|
|
|
|
2088
|
890
|
|
|
|
|
3573
|
my %args = ( |
|
2089
|
|
|
|
|
|
|
'grammar' => $grammar, |
|
2090
|
|
|
|
|
|
|
|
|
2091
|
|
|
|
|
|
|
DEBUG() |
|
2092
|
|
|
|
|
|
|
? ( |
|
2093
|
|
|
|
|
|
|
'trace_terminals' => 1, |
|
2094
|
|
|
|
|
|
|
'trace_values' => 1, |
|
2095
|
|
|
|
|
|
|
) |
|
2096
|
|
|
|
|
|
|
: (), |
|
2097
|
|
|
|
|
|
|
); |
|
2098
|
|
|
|
|
|
|
|
|
2099
|
890
|
|
|
|
|
5863
|
my $rec = Marpa::R2::Scanless::R->new( \%args ); |
|
2100
|
|
|
|
|
|
|
|
|
2101
|
890
|
|
|
|
|
496757
|
my @values; |
|
2102
|
|
|
|
|
|
|
eval { |
|
2103
|
890
|
|
|
|
|
4876
|
my $res = $rec->read( \$text ); |
|
2104
|
769
|
|
|
|
|
1338247
|
while ( my $value = $rec->value() ) { |
|
2105
|
765
|
|
|
|
|
241995265
|
build_struct( $rec, $value ); |
|
2106
|
765
|
|
|
|
|
4510
|
push @values, $$value; |
|
2107
|
|
|
|
|
|
|
} |
|
2108
|
769
|
|
|
|
|
73058
|
1; |
|
2109
|
|
|
|
|
|
|
} |
|
2110
|
890
|
100
|
|
|
|
2139
|
or do { |
|
2111
|
121
|
|
|
|
|
177993
|
my $err = $@; |
|
2112
|
121
|
50
|
|
|
|
479
|
if (!@values) { |
|
2113
|
121
|
|
|
|
|
458
|
for my $nterm (reverse qw/Program BlockStatement Statement NonBraceExprComma BlockLevelExpression Expression SubCall VarIdentExpr SubNameExpr/) { |
|
2114
|
409
|
|
|
|
|
1749
|
my ($start, $length) = $rec->last_completed($nterm); |
|
2115
|
409
|
100
|
|
|
|
1368795
|
next unless defined $start; |
|
2116
|
109
|
|
|
|
|
578
|
my $range = $rec->substring($start, $length); |
|
2117
|
109
|
|
|
|
|
5659
|
my $expect = $rec->terminals_expected(); |
|
2118
|
109
|
|
|
|
|
26195
|
my $progress = $rec->show_progress(); |
|
2119
|
109
|
|
|
|
|
1384990
|
die "$err\nFailed to parse past: $range (char $start, length $length), expected " . ( join ',', @{$expect} );# . "\n$progress"; |
|
|
109
|
|
|
|
|
5123
|
|
|
2120
|
|
|
|
|
|
|
} |
|
2121
|
12
|
|
|
|
|
652
|
die "Failed to parse, dunno why."; |
|
2122
|
|
|
|
|
|
|
} |
|
2123
|
|
|
|
|
|
|
}; |
|
2124
|
|
|
|
|
|
|
|
|
2125
|
769
|
|
|
|
|
625466
|
return @values; |
|
2126
|
|
|
|
|
|
|
} |
|
2127
|
|
|
|
|
|
|
|
|
2128
|
|
|
|
|
|
|
1; |
|
2129
|
|
|
|
|
|
|
|
|
2130
|
|
|
|
|
|
|
__END__ |