1 | import * as util from '../util';
|
2 |
|
3 |
|
4 | const tokens = {
|
5 | metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]',
|
6 | comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=',
|
7 | boolOp: '\\?|\\!|\\^',
|
8 | string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'",
|
9 | number: util.regex.number,
|
10 | meta: 'degree|indegree|outdegree',
|
11 | separator: '\\s*,\\s*',
|
12 | descendant: '\\s+',
|
13 | child: '\\s+>\\s+',
|
14 | subject: '\\$',
|
15 | group: 'node|edge|\\*',
|
16 | directedEdge: '\\s+->\\s+',
|
17 | undirectedEdge: '\\s+<->\\s+'
|
18 | };
|
19 | tokens.variable = '(?:[\\w-.]|(?:\\\\' + tokens.metaChar + '))+';
|
20 | tokens.className = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+';
|
21 | tokens.value = tokens.string + '|' + tokens.number;
|
22 | tokens.id = tokens.variable;
|
23 |
|
24 | (function(){
|
25 | let ops, op, i;
|
26 |
|
27 |
|
28 | ops = tokens.comparatorOp.split( '|' );
|
29 | for( i = 0; i < ops.length; i++ ){
|
30 | op = ops[ i ];
|
31 | tokens.comparatorOp += '|@' + op;
|
32 | }
|
33 |
|
34 |
|
35 | ops = tokens.comparatorOp.split( '|' );
|
36 | for( i = 0; i < ops.length; i++ ){
|
37 | op = ops[ i ];
|
38 |
|
39 | if( op.indexOf( '!' ) >= 0 ){ continue; }
|
40 | if( op === '=' ){ continue; }
|
41 |
|
42 | tokens.comparatorOp += '|\\!' + op;
|
43 | }
|
44 | })();
|
45 |
|
46 | export default tokens;
|