Completed
Push — master ( 4cc554...e2bb59 )
by Nico
01:55
created

JavaScript   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 0
dl 0
loc 37
ccs 30
cts 30
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B getDefinition() 0 34 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;
11
12
use nicoSWD\Rules\Grammar;
13
use nicoSWD\Rules\Token;
14
15
class JavaScript implements Grammar
16
{
17 240
    public function getDefinition(): array
18
    {
19
        return [
20 240
            [Token::AND, '&&', 145],
21 240
            [Token::OR, '\|\|', 140],
22 240
            [Token::NOT_EQUAL_STRICT, '!==', 135],
23 240
            [Token::NOT_EQUAL, '<>|!=', 130],
24 240
            [Token::EQUAL_STRICT, '===', 125],
25 240
            [Token::EQUAL, '==', 120],
26 240
            [Token::IN, '\bin\b', 115],
27 240
            [Token::BOOL, '\b(?:true|false)\b', 110],
28 240
            [Token::NULL, '\bnull\b', 105],
29 240
            [Token::METHOD, '\.\s*[a-zA-Z_]\w*\s*\(', 100],
30 240
            [Token::FUNCTION, '[a-zA-Z_]\w*\s*\(', 95],
31 240
            [Token::FLOAT, '-?\d+(?:\.\d+)', 90],
32 240
            [Token::INTEGER, '-?\d+', 85],
33 240
            [Token::ENCAPSED_STRING, '"[^"]*"|\'[^\']*\'', 80],
34 240
            [Token::SMALLER_EQUAL, '<=', 75],
35 240
            [Token::GREATER_EQUAL, '>=', 70],
36 240
            [Token::SMALLER, '<', 65],
37 240
            [Token::GREATER, '>', 60],
38 240
            [Token::OPENING_PARENTHESIS, '\(', 55],
39 240
            [Token::CLOSING_PARENTHESIS, '\)', 50],
40 240
            [Token::OPENING_ARRAY, '\[', 45],
41 240
            [Token::CLOSING_ARRAY, '\]', 40],
42 240
            [Token::COMMA, ',', 35],
43 240
            [Token::REGEX, '/[^/\*].*/[igm]{0,3}', 30],
44 240
            [Token::COMMENT, '//[^\r\n]*|/\*.*?\*/', 25],
45 240
            [Token::NEWLINE, '\r?\n', 20],
46 240
            [Token::SPACE, '\s+', 15],
47 240
            [Token::TOKEN_VARIABLE, '[a-zA-Z_]\w*', 10],
48 240
            [Token::UNKNOWN, '.', 5],
49
        ];
50
    }
51
}