| 2559 | |
| 2560 | // 语法分析器 |
| 2561 | class Parser { |
| 2562 | constructor(tokens) { |
| 2563 | this.tokens = tokens |
| 2564 | this.position = 0 |
| 2565 | |
| 2566 | // 定义逻辑运算符及其元数 |
| 2567 | this.LOGICAL_OPERATORS = { |
| 2568 | AND: 'n', |
| 2569 | OR: 'n', |
| 2570 | NOT: 1, |
| 2571 | } |
| 2572 | |
| 2573 | // 定义值运算符 |
| 2574 | this.VALUE_OPERATORS = [ |
| 2575 | 'DOMAIN', |
| 2576 | 'DOMAIN-SUFFIX', |
| 2577 | 'DOMAIN-KEYWORD', |
| 2578 | 'DOMAIN-SET', |
| 2579 | 'DOMAIN-WILDCARD', |
| 2580 | 'IP-CIDR', |
| 2581 | 'IP-CIDR6', |
| 2582 | 'GEOIP', |
| 2583 | 'IP-ASN', |
| 2584 | 'RULE-SET', |
| 2585 | 'URL-REGEX', |
| 2586 | 'USER-AGENT', |
| 2587 | 'PROCESS-NAME', |
| 2588 | 'SUBNET', |
| 2589 | 'DEST-PORT', |
| 2590 | 'DST-PORT', |
| 2591 | 'IN-PORT', |
| 2592 | 'SRC-PORT', |
| 2593 | 'SRC-IP', |
| 2594 | 'PROTOCOL', |
| 2595 | 'NETWORK', |
| 2596 | 'SCRIPT', |
| 2597 | 'CELLULAR-RADIO', |
| 2598 | 'HOSTNAME-TYPE', |
| 2599 | 'DEVICE-NAME', |
| 2600 | 'DOMAIN-REGEX', |
| 2601 | 'GEOSITE', |
| 2602 | 'IP-SUFFIX', |
| 2603 | 'SRC-GEOIP', |
| 2604 | 'SRC-IP-ASN', |
| 2605 | 'SRC-IP-CIDR', |
| 2606 | 'SRC-IP-SUFFIX', |
| 2607 | 'IN-TYPE', |
| 2608 | 'IN-USER', |
| 2609 | 'IN-NAME', |
| 2610 | 'PROCESS-PATH', |
| 2611 | 'PROCESS-PATH-REGEX', |
| 2612 | 'PROCESS-NAME-REGEX', |
| 2613 | 'UID', |
| 2614 | 'DSCP', |
| 2615 | 'SUB-RULE', |
| 2616 | 'MATCH', |
| 2617 | ] |
| 2618 |
nothing calls this directly
no outgoing calls
no test coverage detected