| 2971 | |
| 2972 | // 语法分析器 |
| 2973 | class Parser { |
| 2974 | constructor(tokens) { |
| 2975 | this.tokens = tokens |
| 2976 | this.position = 0 |
| 2977 | |
| 2978 | // 定义逻辑运算符及其元数 |
| 2979 | this.LOGICAL_OPERATORS = { |
| 2980 | AND: 'n', |
| 2981 | OR: 'n', |
| 2982 | NOT: 1, |
| 2983 | } |
| 2984 | |
| 2985 | // 定义值运算符 |
| 2986 | this.VALUE_OPERATORS = [ |
| 2987 | 'DOMAIN', |
| 2988 | 'DOMAIN-SUFFIX', |
| 2989 | 'DOMAIN-KEYWORD', |
| 2990 | 'DOMAIN-SET', |
| 2991 | 'DOMAIN-WILDCARD', |
| 2992 | 'IP-CIDR', |
| 2993 | 'IP-CIDR6', |
| 2994 | 'GEOIP', |
| 2995 | 'IP-ASN', |
| 2996 | 'RULE-SET', |
| 2997 | 'URL-REGEX', |
| 2998 | 'USER-AGENT', |
| 2999 | 'PROCESS-NAME', |
| 3000 | 'SUBNET', |
| 3001 | 'DEST-PORT', |
| 3002 | 'DST-PORT', |
| 3003 | 'IN-PORT', |
| 3004 | 'SRC-PORT', |
| 3005 | 'SRC-IP', |
| 3006 | 'PROTOCOL', |
| 3007 | 'NETWORK', |
| 3008 | 'SCRIPT', |
| 3009 | 'CELLULAR-RADIO', |
| 3010 | 'HOSTNAME-TYPE', |
| 3011 | 'DEVICE-NAME', |
| 3012 | 'DOMAIN-REGEX', |
| 3013 | 'GEOSITE', |
| 3014 | 'IP-SUFFIX', |
| 3015 | 'SRC-GEOIP', |
| 3016 | 'SRC-IP-ASN', |
| 3017 | 'SRC-IP-CIDR', |
| 3018 | 'SRC-IP-SUFFIX', |
| 3019 | 'IN-TYPE', |
| 3020 | 'IN-USER', |
| 3021 | 'IN-NAME', |
| 3022 | 'PROCESS-PATH', |
| 3023 | 'PROCESS-PATH-REGEX', |
| 3024 | 'PROCESS-NAME-REGEX', |
| 3025 | 'UID', |
| 3026 | 'DSCP', |
| 3027 | 'SUB-RULE', |
| 3028 | 'MATCH', |
| 3029 | ] |
| 3030 |
nothing calls this directly
no outgoing calls
no test coverage detected