| 85 | | (r'\s+', Text), |
| 86 | | (r'--.*?\n', Comment.Single), |
| 87 | | (r'/\*', Comment.Multiline, 'multiline-comments'), |
| 88 | | (r'(SELECT|FILTER|LIMIT|WHERE|' |
| 89 | | r'WITH|WITHOUT|WORK|WRITE|YEAR|ZONE)\b', Keyword), |
| 90 | | (r'(ARRAY|BIGINT|BINARY|BIT|BLOB|BOOLEAN|CHAR|CHARACTER|DATE|' |
| 91 | | r'DEC|DECIMAL|FLOAT|INT|INTEGER|INTERVAL|NUMBER|NUMERIC|REAL|' |
| 92 | | r'SERIAL|SMALLINT|VARCHAR|VARYING|INT8|SERIAL8|TEXT)\b', |
| 93 | | Name.Builtin), |
| 94 | | (r'[+*/<>=~!@#%^&|`?^-]', Operator), |
| 95 | | (r'[0-9]+', Number.Integer), |
| 96 | | (r"'(''|[^'])*'", String.Single), |
| 97 | | (r'"(""|[^"])*"', String.Symbol), |
| 98 | | (r"`(``|[^`])*`", String.Backtick), |
| 99 | | (r'[a-zA-Z_][a-zA-Z0-9_]*', Name), |
| 100 | | (r'[;:()\[\],\.]', Punctuation) |
| | 88 | (r'((?:SELECT|ASK|CONSTRUCT)\s*(?:DISTINCT|REDUCED)?\s*)((?:\?[a-zA-Z0-9_-]+\s*)+|\*)(\s*)',bygroups(Keyword,Name.Variable,Text)), |
| | 89 | (r'(FROM\s*(?:NAMED)?)(\s*.*)', bygroups(Keyword,Text)), |
| | 90 | (r'(WHERE)?\s*({)',bygroups(Keyword,Text),'graph'), |
| | 91 | (r'(LIMIT|OFFSET)(\s*[+-]?[0-9]+)',bygroups(Keyword,Literal.String)), |
| 102 | | 'multiline-comments': [ |
| 103 | | (r'/\*', Comment.Multiline, 'multiline-comments'), |
| 104 | | (r'\*/', Comment.Multiline, '#pop'), |
| 105 | | (r'[^/\*]+', Comment.Multiline), |
| 106 | | (r'[/*]', Comment.Multiline) |
| 107 | | ] |
| | 93 | 'graph':[ |
| | 94 | (r'\s*(<[^>]*\>)', Name.Class, ('triple','predObj')), |
| | 95 | (r'(\s*[a-zA-Z_0-9\-]*:[a-zA-Z0-9\-_]*\s)', Name.Class, ('triple','predObj')), |
| | 96 | (r'(\s*\?[a-zA-Z0-9_-]*)', Name.Variable, ('triple','predObj')), |
| | 97 | (r'\s*\[\]\s*', Name.Class, ('triple','predObj')), |
| | 98 | (r'\s*(FILTER\s*)((?:regex)?\()',bygroups(Keyword,Text),'filterExp'), |
| | 99 | (r'\s*}', Text, '#pop'), |
| | 100 | ], |
| | 101 | 'triple' : [ |
| | 102 | (r'(?=\s*})', Text, '#pop'), |
| | 103 | (r'\s*\.\s*', Text, '#pop'), |
| | 104 | ], |
| | 105 | 'predObj': [ |
| | 106 | include('comments'), |
| | 107 | (r'(\s*\?[a-zA-Z0-9_-]*\b\s*)', Name.Variable,'object'), |
| | 108 | (r'(\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\b\s*)', Operator, 'object'), |
| | 109 | (r'\s*(<[^>]*\>)', Operator, 'object'), |
| | 110 | (r'\s*\]\s*', Text, '#pop'), |
| | 111 | (r'(?=\s*\.\s*)', Keyword, '#pop'), |
| | 112 | ], |
| | 113 | 'objList': [ |
| | 114 | (r'\s*\)', Text, '#pop'), |
| | 115 | include('object'), |
| | 116 | ], |
| | 117 | 'object': [ |
| | 118 | include('variable'), |
| | 119 | (r'\s*\[', Text, 'predObj'), |
| | 120 | (r'\s*<[^> ]*>', Name.Attribute), |
| | 121 | (r'\s*("""(?:.|\n)*?""")(\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', bygroups(Literal.String,Text)), |
| | 122 | (r'\s*".*?[^\\]"(?:\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', Literal.String), |
| | 123 | (r'\s*[a-zA-Z0-9\-_\:]\s*', Name.Attribute), |
| | 124 | (r'\s*\(', Text, 'objList'), |
| | 125 | (r'\s*;\s*', Text, '#pop'), |
| | 126 | (r'(?=\])', Text, '#pop'), |
| | 127 | (r'(?=\.)', Text, '#pop'), |
| | 128 | ], |
| | 129 | 'variable':[ |
| | 130 | (r'(\?[a-zA-Z0-9\-_]+\s*)', Name.Variable), |
| | 131 | ], |
| | 132 | 'filterExp':[ |
| | 133 | include('variable'), |
| | 134 | include('object'), |
| | 135 | (r'[+*/<>=~!%&|-]+', Operator), |
| | 136 | (r'\s*\)', Text, '#pop'), |
| | 137 | ], |
| | 138 | |