1package Perl::Lint::Constants::Type;
2use strict;
3use warnings;
4use Compiler::Lexer::Constants;
5use parent qw/Exporter/;
6
7our @EXPORT = qw(
8    VAR_DECL OUR_DECL LOCAL_DECL FUNCTION_DECL FORMAT_DECL STATE_DECL
9    USE_DECL REQUIRE_DECL
10    USED_NAME REQUIRED_NAME
11    CALL FUNCTION
12    VAR CODE_VAR ARRAY_VAR HASH_VAR
13    GLOBAL_VAR GLOBAL_ARRAY_VAR GLOBAL_HASH_VAR
14    LOCAL_VAR LOCAL_ARRAY_VAR LOCAL_HASH_VAR
15    PROGRAM_ARGUMENT LIBRARY_DIRECTORIES ARGUMENT_ARRAY
16    INCLUDE ENVIRONMENT SIGNAL
17    SEMI_COLON COMMA ARROW COLON POINTER
18    ASSIGN REG_OK REG_NOT
19    DOUBLE
20    RIGHT_BRACE LEFT_BRACE
21    RIGHT_PAREN LEFT_PAREN
22    RIGHT_BRACKET LEFT_BRACKET
23    KEY METHOD
24    STRING RAW_STRING EXEC_STRING VERSION_STRING
25    INT
26    HERE_DOCUMENT RAW_HERE_DOCUMENT HERE_DOCUMENT_END HERE_DOCUMENT_TAG HERE_DOCUMENT_RAW_TAG HERE_DOCUMENT_BARE_TAG
27    REG_QUOTE REG_DOUBLE_QUOTE
28    REG_DELIM REG_OPT
29    REG_EXP REG_EXEC REG_LIST REG_ALL_REPLACE REG_MATCH REG_REPLACE REG_REPLACE_TO REG_REPLACE_FROM REG_DECL
30    IF_STATEMENT ELSE_STATEMENT ELSIF_STATEMENT UNLESS_STATEMENT FOR_STATEMENT FOREACH_STATEMENT WHILE_STATEMENT UNTIL_STATEMENT WHEN_STATEMENT
31    CONTINUE
32    BUILTIN_FUNC GOTO RETURN NEXT LAST REDO
33    PACKAGE CLASS NAMESPACE NAMESPACE_RESOLVER
34    AND OR ALPHABET_AND ALPHABET_OR ALPHABET_XOR BIT_AND BIT_OR BIT_XOR OR_EQUAL AND_EQUAL EQUAL_EQUAL NOT ALPHABET_NOT NOT_EQUAL
35    RIGHT_SHIFT_EQUAL LEFT_SHIFT_EQUAL
36    SHORT_SCALAR_DEREFERENCE SHORT_ARRAY_DEREFERENCE SHORT_HASH_DEREFERENCE SHORT_CODE_DEREFERENCE
37    THREE_TERM_OP DEFAULT_OP
38    DO
39    RIGHT_SHIFT LEFT_SHIFT
40    GLOB REF PROTOTYPE
41    MOD_WORD
42    TYPE_STDIN TYPE_STDOUT TYPE_STDERR
43    HANDLE HANDLE_DELIM DIAMOND
44    LESS LESS_EQUAL GREATER GREATER_EQUAL COMPARE
45    STRING_LESS STRING_GREATER STRING_COMPARE STRING_NOT_EQUAL
46    STRING_LESS_EQUAL STRING_GREATER_EQUAL
47    MUL MOD STRING_ADD STRING_MUL
48    SPECIFIC_VALUE SPECIFIC_KEYWORD ARRAY_SIZE
49    DEFAULT
50    PROTOTYPE
51    SCALAR_DEREFERENCE HASH_DEREFERENCE ARRAY_DEREFERENCE ARRAY_SIZE_DEREFERENCE
52
53    POWER_EQUAL ADD_EQUAL MUL_EQUAL AND_BIT_EQUAL SUB_EQUAL DIV_EQUAL
54    OR_BIT_EQUAL MOD_EQUAL NOT_BIT_EQUAL DEFAULT_EQUAL STRING_ADD_EQUAL
55
56    PLUSPLUS MINUSMINUS
57
58    SLICE
59);
60
61use constant {
62    VAR_DECL      => Compiler::Lexer::TokenType::T_VarDecl,
63    OUR_DECL      => Compiler::Lexer::TokenType::T_OurDecl,
64    LOCAL_DECL    => Compiler::Lexer::TokenType::T_LocalDecl,
65    FUNCTION_DECL => Compiler::Lexer::TokenType::T_FunctionDecl,
66    FORMAT_DECL   => Compiler::Lexer::TokenType::T_FormatDecl,
67    STATE_DECL    => Compiler::Lexer::TokenType::T_StateDecl,
68
69    USE_DECL     => Compiler::Lexer::TokenType::T_UseDecl,
70    REQUIRE_DECL => Compiler::Lexer::TokenType::T_RequireDecl,
71
72    USED_NAME     => Compiler::Lexer::TokenType::T_UsedName,
73    REQUIRED_NAME => Compiler::Lexer::TokenType::T_RequiredName,
74
75    CALL     => Compiler::Lexer::TokenType::T_Call,
76    FUNCTION => Compiler::Lexer::TokenType::T_Function,
77
78    VAR       => Compiler::Lexer::TokenType::T_Var,
79    CODE_VAR  => Compiler::Lexer::TokenType::T_CodeVar,
80    ARRAY_VAR => Compiler::Lexer::TokenType::T_ArrayVar,
81    HASH_VAR  => Compiler::Lexer::TokenType::T_HashVar,
82
83    GLOBAL_VAR       => Compiler::Lexer::TokenType::T_GlobalVar,
84    GLOBAL_ARRAY_VAR => Compiler::Lexer::TokenType::T_GlobalArrayVar,
85    GLOBAL_HASH_VAR  => Compiler::Lexer::TokenType::T_GlobalHashVar,
86
87    LOCAL_VAR       => Compiler::Lexer::TokenType::T_LocalVar,
88    LOCAL_ARRAY_VAR => Compiler::Lexer::TokenType::T_LocalArrayVar,
89    LOCAL_HASH_VAR  => Compiler::Lexer::TokenType::T_LocalHashVar,
90
91    PROGRAM_ARGUMENT    => Compiler::Lexer::TokenType::T_ProgramArgument,
92    LIBRARY_DIRECTORIES => Compiler::Lexer::TokenType::T_LibraryDirectories,
93    ARGUMENT_ARRAY      => Compiler::Lexer::TokenType::T_ArgumentArray,
94    INCLUDE             => Compiler::Lexer::TokenType::T_Include,
95    ENVIRONMENT         => Compiler::Lexer::TokenType::T_Environment,
96    SIGNAL              => Compiler::Lexer::TokenType::T_Signal,
97
98    IF_STATEMENT      => Compiler::Lexer::TokenType::T_IfStmt,
99    ELSE_STATEMENT    => Compiler::Lexer::TokenType::T_ElseStmt,
100    ELSIF_STATEMENT   => Compiler::Lexer::TokenType::T_ElsifStmt,
101    UNLESS_STATEMENT  => Compiler::Lexer::TokenType::T_UnlessStmt,
102    WHILE_STATEMENT   => Compiler::Lexer::TokenType::T_WhileStmt,
103    FOR_STATEMENT     => Compiler::Lexer::TokenType::T_ForStmt,
104    FOREACH_STATEMENT => Compiler::Lexer::TokenType::T_ForeachStmt,
105    UNTIL_STATEMENT   => Compiler::Lexer::TokenType::T_UntilStmt,
106    WHEN_STATEMENT   => Compiler::Lexer::TokenType::T_WhenStmt,
107
108    CONTINUE => Compiler::Lexer::TokenType::T_Continue,
109
110    BUILTIN_FUNC => Compiler::Lexer::TokenType::T_BuiltinFunc,
111    GOTO         => Compiler::Lexer::TokenType::T_Goto,
112    RETURN       => Compiler::Lexer::TokenType::T_Return,
113    NEXT         => Compiler::Lexer::TokenType::T_Next,
114    LAST         => Compiler::Lexer::TokenType::T_Last,
115    REDO         => Compiler::Lexer::TokenType::T_Redo,
116
117    RIGHT_BRACE => Compiler::Lexer::TokenType::T_RightBrace,
118    LEFT_BRACE  => Compiler::Lexer::TokenType::T_LeftBrace,
119    RIGHT_PAREN => Compiler::Lexer::TokenType::T_RightParenthesis,
120    LEFT_PAREN  => Compiler::Lexer::TokenType::T_LeftParenthesis,
121    RIGHT_BRACKET => Compiler::Lexer::TokenType::T_RightBracket,
122    LEFT_BRACKET  => Compiler::Lexer::TokenType::T_LeftBracket,
123
124    METHOD         => Compiler::Lexer::TokenType::T_Method,
125    KEY            => Compiler::Lexer::TokenType::T_Key,
126    STRING         => Compiler::Lexer::TokenType::T_String,
127    RAW_STRING     => Compiler::Lexer::TokenType::T_RawString,
128    EXEC_STRING    => Compiler::Lexer::TokenType::T_ExecString,
129    VERSION_STRING => Compiler::Lexer::TokenType::T_VersionString,
130
131    INT => Compiler::Lexer::TokenType::T_Int,
132
133    HERE_DOCUMENT          => Compiler::Lexer::TokenType::T_HereDocument,
134    RAW_HERE_DOCUMENT      => Compiler::Lexer::TokenType::T_RawHereDocument,
135    HERE_DOCUMENT_TAG      => Compiler::Lexer::TokenType::T_HereDocumentTag,
136    HERE_DOCUMENT_RAW_TAG  => Compiler::Lexer::TokenType::T_HereDocumentRawTag,
137    HERE_DOCUMENT_BARE_TAG => Compiler::Lexer::TokenType::T_HereDocumentBareTag,
138    HERE_DOCUMENT_END      => Compiler::Lexer::TokenType::T_HereDocumentEnd,
139
140    REG_QUOTE        => Compiler::Lexer::TokenType::T_RegQuote,
141    REG_DOUBLE_QUOTE => Compiler::Lexer::TokenType::T_RegDoubleQuote,
142
143    REG_DELIM => Compiler::Lexer::TokenType::T_RegDelim,
144    REG_OPT   => Compiler::Lexer::TokenType::T_RegOpt,
145
146    REG_EXP  => Compiler::Lexer::TokenType::T_RegExp,
147    REG_EXEC => Compiler::Lexer::TokenType::T_RegExec,
148    REG_LIST => Compiler::Lexer::TokenType::T_RegList,
149    REG_MATCH => Compiler::Lexer::TokenType::T_RegMatch,
150    REG_REPLACE => Compiler::Lexer::TokenType::T_RegReplace,
151    REG_REPLACE_TO => Compiler::Lexer::TokenType::T_RegReplaceTo,
152    REG_REPLACE_FROM => Compiler::Lexer::TokenType::T_RegReplaceFrom,
153    REG_ALL_REPLACE => Compiler::Lexer::TokenType::T_RegAllReplace,
154    REG_DECL => Compiler::Lexer::TokenType::T_RegDecl,
155
156    THREE_TERM_OP => Compiler::Lexer::TokenType::T_ThreeTermOperator,
157
158    DEFAULT_OP => Compiler::Lexer::TokenType::T_DefaultOperator,
159
160    COMMA      => Compiler::Lexer::TokenType::T_Comma,
161    SEMI_COLON => Compiler::Lexer::TokenType::T_SemiColon,
162    COLON      => Compiler::Lexer::TokenType::T_Colon,
163    ARROW      => Compiler::Lexer::TokenType::T_Arrow,
164    ASSIGN     => Compiler::Lexer::TokenType::T_Assign,
165    REG_OK     => Compiler::Lexer::TokenType::T_RegOK,
166    REG_NOT    => Compiler::Lexer::TokenType::T_RegNot,
167    POINTER    => Compiler::Lexer::TokenType::T_Pointer,
168
169    DOUBLE => Compiler::Lexer::TokenType::T_Double,
170
171    AND => Compiler::Lexer::TokenType::T_And,
172    OR  => Compiler::Lexer::TokenType::T_Or,
173    NOT => Compiler::Lexer::TokenType::T_Not,
174    ALPHABET_AND => Compiler::Lexer::TokenType::T_AlphabetAnd,
175    ALPHABET_OR  => Compiler::Lexer::TokenType::T_AlphabetOr,
176    ALPHABET_NOT => Compiler::Lexer::TokenType::T_AlphabetNot,
177    ALPHABET_XOR => Compiler::Lexer::TokenType::T_AlphabetXOr,
178    BIT_AND => Compiler::Lexer::TokenType::T_BitAnd,
179    BIT_OR  => Compiler::Lexer::TokenType::T_BitOr,
180    BIT_XOR => Compiler::Lexer::TokenType::T_BitXOr,
181    OR_EQUAL => Compiler::Lexer::TokenType::T_OrEqual,
182    AND_EQUAL => Compiler::Lexer::TokenType::T_AndEqual,
183    EQUAL_EQUAL => Compiler::Lexer::TokenType::T_EqualEqual,
184    NOT_EQUAL => Compiler::Lexer::TokenType::T_NotEqual,
185
186    RIGHT_SHIFT_EQUAL => Compiler::Lexer::TokenType::T_RightShiftEqual,
187    LEFT_SHIFT_EQUAL  => Compiler::Lexer::TokenType::T_LeftShiftEqual,
188
189    SHORT_SCALAR_DEREFERENCE => Compiler::Lexer::TokenType::T_ShortScalarDereference,
190    SHORT_ARRAY_DEREFERENCE  => Compiler::Lexer::TokenType::T_ShortArrayDereference,
191    SHORT_HASH_DEREFERENCE   => Compiler::Lexer::TokenType::T_ShortHashDereference,
192    SHORT_CODE_DEREFERENCE   => Compiler::Lexer::TokenType::T_ShortCodeDereference,
193
194    PACKAGE   => Compiler::Lexer::TokenType::T_Package,
195    CLASS     => Compiler::Lexer::TokenType::T_Class,
196    NAMESPACE => Compiler::Lexer::TokenType::T_Namespace,
197    NAMESPACE_RESOLVER => Compiler::Lexer::TokenType::T_NamespaceResolver,
198
199    GLOB => Compiler::Lexer::TokenType::T_Glob,
200    REF  => Compiler::Lexer::TokenType::T_Ref,
201    PROTOTYPE => Compiler::Lexer::TokenType::T_Prototype,
202
203    DO => Compiler::Lexer::TokenType::T_Do,
204
205    RIGHT_SHIFT => Compiler::Lexer::TokenType::T_RightShift,
206    LEFT_SHIFT => Compiler::Lexer::TokenType::T_LeftShift,
207
208    MOD_WORD => Compiler::Lexer::TokenType::T_ModWord,
209
210    TYPE_STDIN => Compiler::Lexer::TokenType::T_STDIN, # STDIN is reserved by main::
211    TYPE_STDOUT => Compiler::Lexer::TokenType::T_STDOUT, # STDOUT is reserved by main::
212    TYPE_STDERR => Compiler::Lexer::TokenType::T_STDERR, # STDERR is reserved by main::
213
214    HANDLE => Compiler::Lexer::TokenType::T_Handle,
215    HANDLE_DELIM => Compiler::Lexer::TokenType::T_HandleDelim,
216    DIAMOND => Compiler::Lexer::TokenType::T_Diamond,
217
218    LESS => Compiler::Lexer::TokenType::T_Less,
219    LESS_EQUAL => Compiler::Lexer::TokenType::T_LessEqual,
220    GREATER => Compiler::Lexer::TokenType::T_Greater,
221    GREATER_EQUAL => Compiler::Lexer::TokenType::T_GreaterEqual,
222    COMPARE => Compiler::Lexer::TokenType::T_Compare,
223
224    STRING_LESS      => Compiler::Lexer::TokenType::T_StringLess,
225    STRING_GREATER   => Compiler::Lexer::TokenType::T_StringGreater,
226    STRING_COMPARE   => Compiler::Lexer::TokenType::T_StringCompare,
227    STRING_NOT_EQUAL => Compiler::Lexer::TokenType::T_StringNotEqual,
228    STRING_LESS_EQUAL    => Compiler::Lexer::TokenType::T_StringLessEqual,
229    STRING_GREATER_EQUAL => Compiler::Lexer::TokenType::T_StringGreaterEqual,
230
231    MUL => Compiler::Lexer::TokenType::T_Mul,
232    MOD => Compiler::Lexer::TokenType::T_Mod,
233    STRING_ADD => Compiler::Lexer::TokenType::T_StringAdd,
234    STRING_MUL => Compiler::Lexer::TokenType::T_StringMul,
235
236    SPECIFIC_VALUE   => Compiler::Lexer::TokenType::T_SpecificValue,
237    SPECIFIC_KEYWORD => Compiler::Lexer::TokenType::T_SpecificKeyword,
238    ARRAY_SIZE => Compiler::Lexer::TokenType::T_ArraySize,
239
240    DEFAULT => Compiler::Lexer::TokenType::T_Default,
241
242    PROTOTYPE => Compiler::Lexer::TokenType::T_Prototype,
243
244    SCALAR_DEREFERENCE => Compiler::Lexer::TokenType::T_ScalarDereference,
245    HASH_DEREFERENCE   => Compiler::Lexer::TokenType::T_HashDereference,
246    ARRAY_DEREFERENCE  => Compiler::Lexer::TokenType::T_ArrayDereference,
247    ARRAY_SIZE_DEREFERENCE  => Compiler::Lexer::TokenType::T_ArraySizeDereference,
248
249    POWER_EQUAL   => Compiler::Lexer::TokenType::T_PowerEqual,
250    ADD_EQUAL     => Compiler::Lexer::TokenType::T_AddEqual,
251    MUL_EQUAL     => Compiler::Lexer::TokenType::T_MulEqual,
252    AND_BIT_EQUAL => Compiler::Lexer::TokenType::T_AndBitEqual,
253    SUB_EQUAL     => Compiler::Lexer::TokenType::T_SubEqual,
254    DIV_EQUAL     => Compiler::Lexer::TokenType::T_DivEqual,
255    OR_BIT_EQUAL  => Compiler::Lexer::TokenType::T_OrBitEqual,
256    MOD_EQUAL     => Compiler::Lexer::TokenType::T_ModEqual,
257    NOT_BIT_EQUAL => Compiler::Lexer::TokenType::T_NotBitEqual,
258    DEFAULT_EQUAL => Compiler::Lexer::TokenType::T_DefaultEqual,
259    STRING_ADD_EQUAL => Compiler::Lexer::TokenType::T_StringAddEqual,
260
261    PLUSPLUS => Compiler::Lexer::TokenType::T_Inc,
262    MINUSMINUS => Compiler::Lexer::TokenType::T_Dec,
263
264    SLICE => Compiler::Lexer::TokenType::T_Slice,
265};
266
2671;
268
269