Skip to content

Commit 36ea1c8

Browse files
authored
Merge pull request #5 from qsharp-community/modernize
fixed tuple destructuring, set with variable index and added basic incremental keyword highlighting
2 parents 7e89b55 + 0857894 commit 36ea1c8

8 files changed

Lines changed: 418 additions & 124 deletions

grammars/qsharp.tmLanguage

Lines changed: 140 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@
116116
<key>include</key>
117117
<string>#expression-operators</string>
118118
</dict>
119+
<dict>
120+
<key>include</key>
121+
<string>#declaration-keywords</string>
122+
</dict>
119123
<dict>
120124
<key>include</key>
121125
<string>#identifier</string>
@@ -226,6 +230,48 @@
226230
</dict>
227231
</array>
228232
</dict>
233+
<key>declaration-keywords</key>
234+
<dict>
235+
<key>patterns</key>
236+
<array>
237+
<dict>
238+
<key>name</key>
239+
<string>keyword.other.callable.qsharp</string>
240+
<key>match</key>
241+
<string>\b(operation|function)\b</string>
242+
</dict>
243+
<dict>
244+
<key>name</key>
245+
<string>keyword.other.let.qsharp</string>
246+
<key>match</key>
247+
<string>\b(let)\b</string>
248+
</dict>
249+
<dict>
250+
<key>name</key>
251+
<string>keyword.other.mutable.qsharp</string>
252+
<key>match</key>
253+
<string>\b(mutable)\b</string>
254+
</dict>
255+
<dict>
256+
<key>name</key>
257+
<string>keyword.other.set.qsharp</string>
258+
<key>match</key>
259+
<string>\b(set)\b</string>
260+
</dict>
261+
<dict>
262+
<key>name</key>
263+
<string>keyword.other.use.qsharp</string>
264+
<key>match</key>
265+
<string>\b(use)\b</string>
266+
</dict>
267+
<dict>
268+
<key>name</key>
269+
<string>keyword.other.borrow.qsharp</string>
270+
<key>match</key>
271+
<string>\b(borrow)\b</string>
272+
</dict>
273+
</array>
274+
</dict>
229275
<key>operations</key>
230276
<dict>
231277
<key>patterns</key>
@@ -575,6 +621,10 @@
575621
<key>include</key>
576622
<string>#expression-operators</string>
577623
</dict>
624+
<dict>
625+
<key>include</key>
626+
<string>#declaration-keywords</string>
627+
</dict>
578628
<dict>
579629
<key>include</key>
580630
<string>#identifier</string>
@@ -1327,6 +1377,10 @@
13271377
<key>include</key>
13281378
<string>#expression-operators</string>
13291379
</dict>
1380+
<dict>
1381+
<key>include</key>
1382+
<string>#declaration-keywords</string>
1383+
</dict>
13301384
<dict>
13311385
<key>include</key>
13321386
<string>#identifier</string>
@@ -1758,55 +1812,103 @@
17581812
</dict>
17591813
<key>tuple-binding</key>
17601814
<dict>
1815+
<key>begin</key>
1816+
<string>(?x)
1817+
\b(?:(let)|(mutable)|(set)|(use)|(borrow))\b\s*
1818+
(?=\()</string>
1819+
<key>beginCaptures</key>
1820+
<dict>
1821+
<key>1</key>
1822+
<dict>
1823+
<key>name</key>
1824+
<string>keyword.other.let.qsharp</string>
1825+
</dict>
1826+
<key>2</key>
1827+
<dict>
1828+
<key>name</key>
1829+
<string>keyword.other.mutable.qsharp</string>
1830+
</dict>
1831+
<key>3</key>
1832+
<dict>
1833+
<key>name</key>
1834+
<string>keyword.other.set.qsharp</string>
1835+
</dict>
1836+
<key>4</key>
1837+
<dict>
1838+
<key>name</key>
1839+
<string>keyword.other.use.qsharp</string>
1840+
</dict>
1841+
<key>5</key>
1842+
<dict>
1843+
<key>name</key>
1844+
<string>keyword.other.borrow.qsharp</string>
1845+
</dict>
1846+
</dict>
1847+
<key>end</key>
1848+
<string>(?=;|\bin\b)</string>
17611849
<key>patterns</key>
17621850
<array>
17631851
<dict>
1764-
<key>match</key>
1765-
<string>\b(let|mutable|set)\b(?=\s*\()</string>
1766-
<key>captures</key>
1767-
<dict>
1768-
<key>1</key>
1769-
<dict>
1770-
<key>name</key>
1771-
<string>keyword.other.qsharp</string>
1772-
</dict>
1773-
</dict>
1852+
<key>include</key>
1853+
<string>#tuple-pattern</string>
17741854
</dict>
17751855
<dict>
1776-
<key>match</key>
1777-
<string>\b(use)\b(?=\s*\()</string>
1778-
<key>captures</key>
1779-
<dict>
1780-
<key>1</key>
1781-
<dict>
1782-
<key>name</key>
1783-
<string>keyword.other.use.qsharp</string>
1784-
</dict>
1785-
</dict>
1856+
<key>include</key>
1857+
<string>#variable-initializer</string>
1858+
</dict>
1859+
<dict>
1860+
<key>include</key>
1861+
<string>#expression</string>
1862+
</dict>
1863+
</array>
1864+
</dict>
1865+
<key>tuple-pattern</key>
1866+
<dict>
1867+
<key>begin</key>
1868+
<string>\(</string>
1869+
<key>beginCaptures</key>
1870+
<dict>
1871+
<key>0</key>
1872+
<dict>
1873+
<key>name</key>
1874+
<string>punctuation.parenthesis.open.qsharp</string>
1875+
</dict>
1876+
</dict>
1877+
<key>end</key>
1878+
<string>\)</string>
1879+
<key>endCaptures</key>
1880+
<dict>
1881+
<key>0</key>
1882+
<dict>
1883+
<key>name</key>
1884+
<string>punctuation.parenthesis.close.qsharp</string>
1885+
</dict>
1886+
</dict>
1887+
<key>patterns</key>
1888+
<array>
1889+
<dict>
1890+
<key>include</key>
1891+
<string>#tuple-pattern</string>
17861892
</dict>
17871893
<dict>
1894+
<key>name</key>
1895+
<string>entity.name.variable.local.qsharp</string>
17881896
<key>match</key>
1789-
<string>\b(borrow)\b(?=\s*\()</string>
1790-
<key>captures</key>
1791-
<dict>
1792-
<key>1</key>
1793-
<dict>
1794-
<key>name</key>
1795-
<string>keyword.other.borrow.qsharp</string>
1796-
</dict>
1797-
</dict>
1897+
<string>\b[_[:alpha:]][_[:alnum:]]*\b</string>
1898+
</dict>
1899+
<dict>
1900+
<key>include</key>
1901+
<string>#punctuation-comma</string>
17981902
</dict>
17991903
</array>
18001904
</dict>
18011905
<key>array-assignment</key>
18021906
<dict>
18031907
<key>begin</key>
18041908
<string>(?x)
1805-
(?:\b(set)\b\s*)
1909+
\b(set)\b\s*
18061910
([_[:alpha:]][_[:alnum:]]*)\b\s*
1807-
(?:(=)\s*([_[:alpha:]][_[:alnum:]]*)\b\s*(w\/)\s*|\b(w\/=)\s*)?
1808-
(\d+)\s*
1809-
(&lt;-)\s*</string>
1911+
(?:(=)\s*([_[:alpha:]][_[:alnum:]]*)\b\s*(w\/)|(w\/=))</string>
18101912
<key>beginCaptures</key>
18111913
<dict>
18121914
<key>1</key>
@@ -1839,40 +1941,20 @@
18391941
<key>name</key>
18401942
<string>keyword.operator.assignment.qsharp</string>
18411943
</dict>
1842-
<key>7</key>
1843-
<dict>
1844-
<key>name</key>
1845-
<string>constant.numeric.decimal.qsharp</string>
1846-
</dict>
1847-
<key>8</key>
1848-
<dict>
1849-
<key>name</key>
1850-
<string>keyword.operator.assignment.qsharp</string>
1851-
</dict>
18521944
</dict>
18531945
<key>end</key>
18541946
<string>(?=;|\))</string>
18551947
<key>patterns</key>
18561948
<array>
18571949
<dict>
1858-
<key>include</key>
1859-
<string>#callable-invocation</string>
1860-
</dict>
1861-
<dict>
1862-
<key>include</key>
1863-
<string>#strings</string>
1864-
</dict>
1865-
<dict>
1866-
<key>include</key>
1867-
<string>#types</string>
1868-
</dict>
1869-
<dict>
1870-
<key>include</key>
1871-
<string>#literals</string>
1950+
<key>name</key>
1951+
<string>keyword.operator.assignment.qsharp</string>
1952+
<key>match</key>
1953+
<string>&lt;-</string>
18721954
</dict>
18731955
<dict>
18741956
<key>include</key>
1875-
<string>#identifier</string>
1957+
<string>#expression</string>
18761958
</dict>
18771959
</array>
18781960
</dict>

0 commit comments

Comments
 (0)