|
import * as util from '../util'; |
|
|
|
|
|
const tokens = { |
|
metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]', |
|
comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=', |
|
boolOp: '\\?|\\!|\\^', |
|
string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'", |
|
number: util.regex.number, |
|
meta: 'degree|indegree|outdegree', |
|
separator: '\\s*,\\s*', |
|
descendant: '\\s+', |
|
child: '\\s+>\\s+', |
|
subject: '\\$', |
|
group: 'node|edge|\\*', |
|
directedEdge: '\\s+->\\s+', |
|
undirectedEdge: '\\s+<->\\s+' |
|
}; |
|
tokens.variable = '(?:[\\w-.]|(?:\\\\' + tokens.metaChar + '))+'; |
|
tokens.className = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; |
|
tokens.value = tokens.string + '|' + tokens.number; |
|
tokens.id = tokens.variable; |
|
|
|
(function(){ |
|
let ops, op, i; |
|
|
|
|
|
ops = tokens.comparatorOp.split( '|' ); |
|
for( i = 0; i < ops.length; i++ ){ |
|
op = ops[ i ]; |
|
tokens.comparatorOp += '|@' + op; |
|
} |
|
|
|
|
|
ops = tokens.comparatorOp.split( '|' ); |
|
for( i = 0; i < ops.length; i++ ){ |
|
op = ops[ i ]; |
|
|
|
if( op.indexOf( '!' ) >= 0 ){ continue; } |
|
if( op === '=' ){ continue; } |
|
|
|
tokens.comparatorOp += '|\\!' + op; |
|
} |
|
})(); |
|
|
|
export default tokens; |
|
|