From 16850dd85ac8834857e0f7ed5f9a20221e89f377 Mon Sep 17 00:00:00 2001 From: "REDMOND\\anburton" Date: Fri, 25 Jun 2021 21:28:07 -0700 Subject: [PATCH] onboard qsharp --- src/monaco.contribution.ts | 1 + src/qsharp/qsharp.contribution.ts | 13 ++ src/qsharp/qsharp.test.ts | 10 ++ src/qsharp/qsharp.ts | 279 ++++++++++++++++++++++++++++++ 4 files changed, 303 insertions(+) create mode 100644 src/qsharp/qsharp.contribution.ts create mode 100644 src/qsharp/qsharp.test.ts create mode 100644 src/qsharp/qsharp.ts diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 3a633c2f..7675f1c4 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -50,6 +50,7 @@ import './powerquery/powerquery.contribution'; import './powershell/powershell.contribution'; import './pug/pug.contribution'; import './python/python.contribution'; +import './qsharp/qsharp.contribution'; import './r/r.contribution'; import './razor/razor.contribution'; import './redis/redis.contribution'; diff --git a/src/qsharp/qsharp.contribution.ts b/src/qsharp/qsharp.contribution.ts new file mode 100644 index 00000000..09c59b38 --- /dev/null +++ b/src/qsharp/qsharp.contribution.ts @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { registerLanguage } from '../_.contribution'; + +registerLanguage({ + id: 'qsharp', + extensions: ['.qs'], + aliases: ['Q#', 'qsharp'], + loader: () => import('./qsharp') +}); diff --git a/src/qsharp/qsharp.test.ts b/src/qsharp/qsharp.test.ts new file mode 100644 index 00000000..f24f344d --- /dev/null +++ b/src/qsharp/qsharp.test.ts @@ -0,0 +1,10 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { testTokenization } from '../test/testRunner'; + +testTokenization('qsharp', [ + +]); diff --git a/src/qsharp/qsharp.ts b/src/qsharp/qsharp.ts new file mode 100644 index 00000000..f5c2eb32 --- /dev/null +++ b/src/qsharp/qsharp.ts @@ -0,0 +1,279 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import type { languages } from '../fillers/monaco-editor-core'; + + +export const language = { + // Set defaultToken to invalid to see what you do not tokenize yet + defaultToken: 'invalid', + + keywords: [ + 'namespace', + 'open', + 'as', + 'operation', + 'function', + 'body', + 'adjoint', + 'newtype', + 'controlled', + 'if', + 'elif', + 'else', + 'repeat', + 'until', + 'fixup', + 'for', + 'in', + 'while', + 'return', + 'fail', + 'within', + 'apply', + 'Adjoint', + 'Controlled', + 'Adj', + 'Ctl', + 'is', + 'self', + 'auto', + 'distribute', + 'invert', + 'intrinsic', + 'let', + 'set', + 'w\/', + 'new', + 'not', + 'and', + 'or', + 'use', + 'borrow', + 'using', + 'borrowing', + 'mutable' + ], + + typeKeywords: [ + 'Unit', + 'Int', + 'BigInt', + 'Double', + 'Bool', + 'String', + 'Qubit', + 'Result', + 'Pauli', + 'Range' + ], + + invalidKeywords: [ + 'abstract', + 'base', + 'bool', + 'break', + 'byte', + 'case', + 'catch', + 'char', + 'checked', + 'class', + 'const', + 'continue', + 'decimal', + 'default', + 'delegate', + 'do', + 'double', + 'enum', + 'event', + 'explicit', + 'extern', + 'finally', + 'fixed', + 'float', + 'foreach', + 'goto', + 'implicit', + 'int', + 'interface', + 'lock', + 'long', + 'null', + 'object', + 'operator', + 'out', + 'override', + 'params', + 'private', + 'protected', + 'public', + 'readonly', + 'ref', + 'sbyte', + 'sealed', + 'short', + 'sizeof', + 'stackalloc', + 'static', + 'string', + 'struct', + 'switch', + 'this', + 'throw', + 'try', + 'typeof', + 'unit', + 'ulong', + 'unchecked', + 'unsafe', + 'ushort', + 'virtual', + 'void', + 'volatile' + ], + + constants: [ + 'true', + 'false', + 'PauliI', + 'PauliX', + 'PauliY', + 'PauliZ', + 'One', + 'Zero' + ], + + builtin: [ + 'X', + 'Y', + 'Z', + 'H', + 'HY', + 'S', + 'T', + 'SWAP', + 'CNOT', + 'CCNOT', + 'MultiX', + 'R', + 'RFrac', + 'Rx', + 'Ry', + 'Rz', + 'R1', + 'R1Frac', + 'Exp', + 'ExpFrac', + 'Measure', + 'M', + 'MultiM', + 'Message', + 'Length', + 'Assert', + 'AssertProb', + 'AssertEqual' + ], + + operators: [ + 'and=', + '<-', + '->', + '*', + '*=', + '@', + '!', + '^', + '^=', + ':', + '::', + '..', + '==', + '...', + '=', + '=>', + '>', + '>=', + '<', + '<=', + '-', + '-=', + '!=', + 'or=', + '%', + '%=', + '|', + '+', + '+=', + '?', + '/', + '/=', + '&&&', + '&&&=', + '^^^', + '^^^=', + '>>>', + '>>>=', + '<<<', + '<<<=', + '|||', + '|||=', + '~~~', + '_', + 'w/', + 'w/=' + ], + + symbols: /[=>