@@ -40,47 +40,73 @@ var PrqlHighlightRules = function() {
40
40
var bidi = "[\\u202A\\u202B\\u202D\\u202E\\u2066\\u2067\\u2068\\u202C\\u2069]" ;
41
41
42
42
this . $rules = {
43
- start : [ {
43
+ start : [
44
+ {
44
45
token : "string.start" ,
45
- regex : '"' ,
46
+ regex : 's? "' ,
46
47
next : "string"
48
+ } , {
49
+ token : "string.start" ,
50
+ regex : 'f"' ,
51
+ next : "fstring"
52
+ } , {
53
+ token : "string.start" ,
54
+ regex : 'r"' ,
55
+ next : "rstring"
56
+ } , {
57
+ token : "string" ,
58
+ start : "'" ,
59
+ end : "'"
47
60
} , {
48
61
token : "string.character" ,
49
62
regex : "'(?:" + escapeRe . source + "|.)'?"
50
63
} , {
51
- token : "constant.language" ,
52
- regex : "^" + identifierRe + "*"
64
+ token : "constant.language" ,
65
+ regex : "^" + identifierRe + "*"
53
66
} , {
54
- token : "constant.numeric" , // hexadecimal, octal and binary
55
- regex : / 0 (?: [ x X ] [ 0 - 9 a - f A - F ] + | [ o O ] [ 0 - 7 ] + | [ b B ] [ 0 1 ] + ) \b /
67
+ token : "constant.numeric" , // hexadecimal, octal and binary
68
+ regex : / 0 (?: [ x X ] [ 0 - 9 a - f A - F ] + | [ o O ] [ 0 - 7 ] + | [ b B ] [ 0 1 ] + ) \b /
56
69
} , {
57
- token : "constant.numeric" , // decimal integers and floats
58
- regex : / (?: \d \d * (?: \. \d * ) ? | \. \d + ) (?: [ e E ] [ + - ] ? \d + \b ) ? /
70
+ token : "constant.numeric" , // decimal integers and floats
71
+ regex : / (?: \d \d * (?: \. \d * ) ? | \. \d + ) (?: [ e E ] [ + - ] ? \d + \b ) ? /
59
72
} , {
60
73
token : "comment.block" ,
61
74
regex : "#!.*"
62
75
} , {
63
76
token : "comment.line" ,
64
77
regex : "#.*"
65
78
} , {
66
- token : "keyword.operator" ,
67
- regex : / - > | = > | = = | ! = | > = | < = | ~ = | & & | \| \| | \? \? | \/ \/ | @ /
79
+ token : "keyword.operator" ,
80
+ regex : / \| \s * / ,
81
+ next : "pipe"
82
+ } , {
83
+ token : "keyword.operator" ,
84
+ regex : / - > | = > | = = | ! = | > = | < = | ~ = | & & | \| \| | \? \? | \/ \/ | @ /
68
85
} , {
69
86
token : "invalid.illegal" ,
70
87
regex : bidi
71
88
} , {
72
- token : "punctuation.operator" ,
73
- regex : / [ , ` ] /
89
+ token : "punctuation.operator" ,
90
+ regex : / [ , ` ] /
74
91
} , {
75
- token : keywordMapper ,
76
- regex : "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"
92
+ token : keywordMapper ,
93
+ regex : "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"
77
94
} , {
78
95
token : "paren.lparen" ,
79
- regex : / [ \[ ( { ] /
96
+ regex : / [ \[ ( { ] /
80
97
} , {
81
98
token : "paren.rparen" ,
82
99
regex : / [ \] ) } ] /
83
100
} ] ,
101
+ pipe : [ {
102
+ token : "constant.language" ,
103
+ regex : identifierRe + "*" ,
104
+ next : "pop"
105
+ } , {
106
+ token : "error" ,
107
+ regex : "" ,
108
+ next : "pop"
109
+ } ] ,
84
110
string : [ {
85
111
token : "constant.character.escape" ,
86
112
regex : escapeRe
@@ -106,6 +132,44 @@ var PrqlHighlightRules = function() {
106
132
token : "error" ,
107
133
regex : "" ,
108
134
next : "start"
135
+ } ] ,
136
+ fstring : [ {
137
+ token : "constant.character.escape" ,
138
+ regex : escapeRe
139
+ } , {
140
+ token : "string.end" ,
141
+ regex : '"' ,
142
+ next : "start"
143
+ } , {
144
+ token : "invalid.illegal" ,
145
+ regex : bidi
146
+ } , {
147
+ token : "paren.lparen" ,
148
+ regex : "{" ,
149
+ push : "fstringParenRules"
150
+ } , {
151
+ token : "invalid.illegal" ,
152
+ regex : bidi
153
+ } , {
154
+ defaultToken : "string"
155
+ } ] ,
156
+ fstringParenRules : [ {
157
+ token : "constant.language" ,
158
+ regex : "^" + identifierRe + "*"
159
+ } , {
160
+ token : "paren.rparen" ,
161
+ regex : "}" ,
162
+ next : "pop"
163
+ } ] ,
164
+ rstring : [ {
165
+ token : "string.end" ,
166
+ regex : '"' ,
167
+ next : "start"
168
+ } , {
169
+ token : "invalid.illegal" ,
170
+ regex : bidi
171
+ } , {
172
+ defaultToken : "string"
109
173
} ]
110
174
} ;
111
175
0 commit comments