mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 23:13:02 +01:00
Add Scheme language
This commit is contained in:
parent
781bcdd267
commit
817ca5bd99
6 changed files with 236 additions and 0 deletions
124
src/scheme/scheme.ts
Normal file
124
src/scheme/scheme.ts
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
|
||||
import ILanguage = monaco.languages.IMonarchLanguage;
|
||||
|
||||
export const conf: IRichLanguageConfiguration = {
|
||||
comments: {
|
||||
lineComment: ';',
|
||||
blockComment: ['#|', '|#'],
|
||||
},
|
||||
|
||||
brackets: [['(', ')'], ['{', '}'], ['[', ']']],
|
||||
|
||||
autoClosingPairs: [
|
||||
{ open: '{', close: '}' },
|
||||
{ open: '[', close: ']' },
|
||||
{ open: '(', close: ')' },
|
||||
{ open: '"', close: '"' },
|
||||
],
|
||||
|
||||
surroundingPairs: [
|
||||
{ open: '{', close: '}' },
|
||||
{ open: '[', close: ']' },
|
||||
{ open: '(', close: ')' },
|
||||
{ open: '"', close: '"' },
|
||||
],
|
||||
};
|
||||
|
||||
export const language = <ILanguage>{
|
||||
defaultToken: '',
|
||||
ignoreCase: true,
|
||||
tokenPostfix: '.scheme',
|
||||
|
||||
brackets: [
|
||||
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
|
||||
{ open: '{', close: '}', token: 'delimiter.curly' },
|
||||
{ open: '[', close: ']', token: 'delimiter.square' },
|
||||
],
|
||||
|
||||
keywords: [
|
||||
'case',
|
||||
'do',
|
||||
'let',
|
||||
'loop',
|
||||
'if',
|
||||
'else',
|
||||
'when',
|
||||
'cons',
|
||||
'car',
|
||||
'cdr',
|
||||
'cond',
|
||||
'lambda',
|
||||
'lambda*',
|
||||
'syntax-rules',
|
||||
'format',
|
||||
'set!',
|
||||
'quote',
|
||||
'eval',
|
||||
'append',
|
||||
'list',
|
||||
'list?',
|
||||
'member?',
|
||||
'load',
|
||||
],
|
||||
|
||||
constants: ['#t', '#f'],
|
||||
|
||||
operators: ['eq?', 'eqv?', 'equal?', 'and', 'or', 'not', 'null?'],
|
||||
|
||||
tokenizer: {
|
||||
root: [
|
||||
[/#[xXoObB][0-9a-fA-F]+/, 'number.hex'],
|
||||
[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'],
|
||||
|
||||
[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/, ['keyword', 'white', 'variable']],
|
||||
|
||||
[
|
||||
/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
|
||||
{
|
||||
cases: {
|
||||
'@keywords': 'keyword',
|
||||
'@constants': 'constant',
|
||||
'@operators': 'operators',
|
||||
'@default': 'identifier',
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
{ include: '@whitespace' },
|
||||
{ include: '@strings' },
|
||||
],
|
||||
|
||||
comment: [
|
||||
[/[^\|#]+/, 'comment'],
|
||||
[/\|\#/, 'comment', '@push'],
|
||||
[/#\|/, 'comment', '@pop'],
|
||||
[/[\|#]/, 'comment'],
|
||||
],
|
||||
|
||||
whitespace: [
|
||||
[/[ \t\r\n]+/, 'white'],
|
||||
[/\|\#/, 'comment', '@comment'],
|
||||
[/;.*$/, 'comment'],
|
||||
],
|
||||
|
||||
strings: [
|
||||
[/"$/, 'string', '@popall'],
|
||||
[/"(?=.)/, 'string', '@multiLineString'],
|
||||
],
|
||||
|
||||
multiLineString: [
|
||||
[/\\./, 'string.escape'],
|
||||
[/"/, 'string', '@popall'],
|
||||
[/.(?=.*")/, 'string'],
|
||||
[/.*\\$/, 'string'],
|
||||
[/.*$/, 'string', '@popall'],
|
||||
],
|
||||
},
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue