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.007'; |
5
|
35
|
|
|
35
|
|
299
|
use strict; |
|
35
|
|
|
|
|
75
|
|
|
35
|
|
|
|
|
1176
|
|
6
|
35
|
|
|
35
|
|
209
|
use warnings; |
|
35
|
|
|
|
|
73
|
|
|
35
|
|
|
|
|
990
|
|
7
|
35
|
|
|
35
|
|
15883
|
use Marpa::R2; |
|
35
|
|
|
|
|
4989988
|
|
|
35
|
|
|
|
|
2137
|
|
8
|
|
|
|
|
|
|
use constant { |
9
|
35
|
|
|
|
|
50538
|
'DEBUG' => 0, |
10
|
35
|
|
|
35
|
|
351
|
}; |
|
35
|
|
|
|
|
81
|
|
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
|
3511
|
my ( $rec, $initial_valueref ) = @_; |
2052
|
765
|
|
|
|
|
2705
|
my @values = ($initial_valueref); |
2053
|
|
|
|
|
|
|
|
2054
|
765
|
|
|
|
|
4374
|
while ( my $valueref = shift @values ) { |
2055
|
14335
|
100
|
|
|
|
18910
|
if ( ! ref ${$valueref} ) { |
|
14335
|
|
|
|
|
27276
|
|
2056
|
3596
|
|
|
|
|
6023
|
${$valueref} = { |
2057
|
|
|
|
|
|
|
'name' => '', |
2058
|
|
|
|
|
|
|
'type' => 'lexeme', |
2059
|
3596
|
|
|
|
|
5854
|
'value' => ${$valueref}, |
|
3596
|
|
|
|
|
11144
|
|
2060
|
|
|
|
|
|
|
}; |
2061
|
|
|
|
|
|
|
|
2062
|
3596
|
|
|
|
|
8806
|
next; |
2063
|
|
|
|
|
|
|
} |
2064
|
|
|
|
|
|
|
|
2065
|
10739
|
|
|
|
|
13960
|
my $name = shift @{ ${$valueref} }; |
|
10739
|
|
|
|
|
12773
|
|
|
10739
|
|
|
|
|
21556
|
|
2066
|
10739
|
|
|
|
|
13450
|
my $start_pos = shift @{ ${$valueref} }; |
|
10739
|
|
|
|
|
13197
|
|
|
10739
|
|
|
|
|
15630
|
|
2067
|
10739
|
|
|
|
|
13392
|
my $length = shift @{ ${$valueref} }; |
|
10739
|
|
|
|
|
12582
|
|
|
10739
|
|
|
|
|
15395
|
|
2068
|
10739
|
|
|
|
|
13866
|
my @children = @{ ${$valueref} }; |
|
10739
|
|
|
|
|
12589
|
|
|
10739
|
|
|
|
|
20377
|
|
2069
|
|
|
|
|
|
|
|
2070
|
10739
|
|
|
|
|
25284
|
my ( $line, $column ) = $rec->line_column($start_pos); |
2071
|
10739
|
|
|
|
|
119553
|
${$valueref} = { |
|
10739
|
|
|
|
|
17617
|
|
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
|
|
|
|
|
14774
|
push @values, map \$_, @{ ${$valueref}->{'children'} } |
|
10739
|
|
|
|
|
12594
|
|
|
10739
|
|
|
|
|
38767
|
|
2082
|
|
|
|
|
|
|
} |
2083
|
|
|
|
|
|
|
} |
2084
|
|
|
|
|
|
|
|
2085
|
|
|
|
|
|
|
sub parse { |
2086
|
890
|
|
|
890
|
0
|
3064
|
my ($class, $text) = @_; |
2087
|
|
|
|
|
|
|
|
2088
|
890
|
|
|
|
|
3785
|
my %args = ( |
2089
|
|
|
|
|
|
|
'grammar' => $grammar, |
2090
|
|
|
|
|
|
|
|
2091
|
|
|
|
|
|
|
DEBUG() |
2092
|
|
|
|
|
|
|
? ( |
2093
|
|
|
|
|
|
|
'trace_terminals' => 1, |
2094
|
|
|
|
|
|
|
'trace_values' => 1, |
2095
|
|
|
|
|
|
|
) |
2096
|
|
|
|
|
|
|
: (), |
2097
|
|
|
|
|
|
|
); |
2098
|
|
|
|
|
|
|
|
2099
|
890
|
|
|
|
|
5894
|
my $rec = Marpa::R2::Scanless::R->new( \%args ); |
2100
|
|
|
|
|
|
|
|
2101
|
890
|
|
|
|
|
507025
|
my @values; |
2102
|
|
|
|
|
|
|
eval { |
2103
|
890
|
|
|
|
|
4916
|
my $res = $rec->read( \$text ); |
2104
|
769
|
|
|
|
|
1362744
|
while ( my $value = $rec->value() ) { |
2105
|
765
|
|
|
|
|
244524616
|
build_struct( $rec, $value ); |
2106
|
765
|
|
|
|
|
4511
|
push @values, $$value; |
2107
|
|
|
|
|
|
|
} |
2108
|
769
|
|
|
|
|
73573
|
1; |
2109
|
|
|
|
|
|
|
} |
2110
|
890
|
100
|
|
|
|
2282
|
or do { |
2111
|
121
|
|
|
|
|
191432
|
my $err = $@; |
2112
|
121
|
50
|
|
|
|
467
|
if (!@values) { |
2113
|
121
|
|
|
|
|
486
|
for my $nterm (reverse qw/Program BlockStatement Statement NonBraceExprComma BlockLevelExpression Expression SubCall VarIdentExpr SubNameExpr/) { |
2114
|
409
|
|
|
|
|
1830
|
my ($start, $length) = $rec->last_completed($nterm); |
2115
|
409
|
100
|
|
|
|
1441274
|
next unless defined $start; |
2116
|
109
|
|
|
|
|
707
|
my $range = $rec->substring($start, $length); |
2117
|
109
|
|
|
|
|
5545
|
my $expect = $rec->terminals_expected(); |
2118
|
109
|
|
|
|
|
28613
|
my $progress = $rec->show_progress(); |
2119
|
109
|
|
|
|
|
1469567
|
die "$err\nFailed to parse past: $range (char $start, length $length), expected " . ( join ',', @{$expect} );# . "\n$progress"; |
|
109
|
|
|
|
|
6068
|
|
2120
|
|
|
|
|
|
|
} |
2121
|
12
|
|
|
|
|
705
|
die "Failed to parse, dunno why."; |
2122
|
|
|
|
|
|
|
} |
2123
|
|
|
|
|
|
|
}; |
2124
|
|
|
|
|
|
|
|
2125
|
769
|
|
|
|
|
667268
|
return @values; |
2126
|
|
|
|
|
|
|
} |
2127
|
|
|
|
|
|
|
|
2128
|
|
|
|
|
|
|
1; |
2129
|
|
|
|
|
|
|
|
2130
|
|
|
|
|
|
|
__END__ |