Completed
Push — master ( aee4a1...066343 )
by Nico
01:30
created

JavaScript::getDefinition()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 34
Code Lines 31

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 30
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 34
ccs 30
cts 30
cp 1
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 31
nc 1
nop 0
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * @license     http://opensource.org/licenses/mit-license.php MITnamespace nicoSWD\Rules\Grammar;
7
 * @link        https://github.com/nicoSWD
8
 * @author      Nicolas Oelgart <[email protected]>use nicoSWD\Rules\Tokenizer;
9
 */
10
namespace nicoSWD\Rules\Grammar\JavaScript;
11
12
use nicoSWD\Rules\Grammar;
13
use nicoSWD\Rules\Grammar\JavaScript\Functions\ParseFloat;
14
use nicoSWD\Rules\Grammar\JavaScript\Functions\ParseInt;
15
use nicoSWD\Rules\Token;
16
17
class JavaScript implements Grammar
18
{
19 238
    public function getDefinition(): array
20
    {
21
        return [
22 238
            [Token::AND, '&&', 145],
23 238
            [Token::OR, '\|\|', 140],
24 238
            [Token::NOT_EQUAL_STRICT, '!==', 135],
25 238
            [Token::NOT_EQUAL, '<>|!=', 130],
26 238
            [Token::EQUAL_STRICT, '===', 125],
27 238
            [Token::EQUAL, '==', 120],
28 238
            [Token::IN, '\bin\b', 115],
29 238
            [Token::BOOL, '\b(?:true|false)\b', 110],
30 238
            [Token::NULL, '\bnull\b', 105],
31 238
            [Token::METHOD, '\.\s*[a-zA-Z_]\w*\s*\(', 100],
32 238
            [Token::FUNCTION, '[a-zA-Z_]\w*\s*\(', 95],
33 238
            [Token::FLOAT, '-?\d+(?:\.\d+)', 90],
34 238
            [Token::INTEGER, '-?\d+', 85],
35 238
            [Token::ENCAPSED_STRING, '"[^"]*"|\'[^\']*\'', 80],
36 238
            [Token::SMALLER_EQUAL, '<=', 75],
37 238
            [Token::GREATER_EQUAL, '>=', 70],
38 238
            [Token::SMALLER, '<', 65],
39 238
            [Token::GREATER, '>', 60],
40 238
            [Token::OPENING_PARENTHESIS, '\(', 55],
41 238
            [Token::CLOSING_PARENTHESIS, '\)', 50],
42 238
            [Token::OPENING_ARRAY, '\[', 45],
43 238
            [Token::CLOSING_ARRAY, '\]', 40],
44 238
            [Token::COMMA, ',', 35],
45 238
            [Token::REGEX, '/[^/\*].*/[igm]{0,3}', 30],
46 238
            [Token::COMMENT, '//[^\r\n]*|/\*.*?\*/', 25],
47 238
            [Token::NEWLINE, '\r?\n', 20],
48 238
            [Token::SPACE, '\s+', 15],
49 238
            [Token::TOKEN_VARIABLE, '[a-zA-Z_]\w*', 10],
50 238
            [Token::UNKNOWN, '.', 5],
51
        ];
52
    }
53
54
    public function getInternalFunctions()
55
    {
56
        return [
57
            ParseInt::class,
58
            ParseFloat::class
59
        ];
60
    }
61
}