1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2024-11-30 08:57:08 +02:00

Начало разработки отдельного описания синтаксиса языка запросов

This commit is contained in:
salexdv 2020-09-27 21:15:06 +03:00
parent b0a8e48b71
commit 0a6253ce0e
2 changed files with 102 additions and 0 deletions

View File

@ -267,4 +267,51 @@ define([], function () {
}
}
query_language = {
id: 'bsl_query',
rules: {
defaultToken: '',
tokenPostfix: 'bsl',
ignoreCase: true,
keywords: [
'Выбрать', 'Из', 'Как', 'Значение', 'Различные', 'Тип', 'СгруппированоПо',
'Разрешенные', 'Первые', 'Поместить', 'Уничтожить', 'Упорядочить', 'По',
'Итоги', 'Общие', 'Автоупорядочивание', 'Сгруппировать', 'Объединить', 'Все',
],
expressions: [
'Выбор', 'Когда', 'Тогда', 'Иначе', 'Конец', 'Ложь', 'Истина', 'И', 'ИЛИ', 'НЕ',
'ЕстьNull', 'В', 'Секунда', 'Минута', 'Час', 'День', 'Неделя', 'Месяц',
'Квартал', 'Год', 'Декада', 'Полугодие', 'Подстрока', 'ДеньГода', 'ДеньНедели',
'НачалоПериода', 'КонецПериода', 'ДобавитьКДате', 'РазностьДат', 'Сумма',
'Минимум', 'Максимум', 'Среднее', 'Количество', 'Представление',
'ПредставлениеСсылки', 'ТипЗначения', 'АвтономерЗаписи', 'Подобно', 'ВИерархии',
'Есть', 'Null', 'Ссылка', 'Выразить', 'ДатаВремя', '', '', '',
'', '', '', '', '', '', '', '',
'Сумма', 'Максимум', 'Минимум',
],
operators: ['/', '[', ']', '=', '<', '>', '+', '-', '*', '%'],
tokenizer: {
root: [
[/"".*""/, 'query.string'],
[/[a-zA-Z\u0410-\u044F_][a-zA-Z\u0410-\u044F_0-9]*/, { cases: {
'@keywords': 'query.keyword',
'@operators': 'query.keyword',
'@expressions': 'query.exp',
'@default': 'query'
}}],
[/&[a-zA-Z\u0410-\u044F_][a-zA-Z\u0410-\u044F_0-9]*/, 'query.param'],
[/&/, 'query.param'],
[/[()]/, 'query.brackets'],
[/\/\/.*$/, 'comment'],
[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/, 'query.float'],
[/[0-9_]+/, 'query.int'],
[/\|/, 'query'],
[/[?!@#$^*_]+/, 'query']
]
},
},
themes: language.themes
}
});

55
src/query.html Normal file
View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html>
<head>
<title>BSL-editor</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link href="./decorations.css" rel="stylesheet">
<style>
html,
body {
height: 100%;
margin: 0px;
}
#container {
height: 100%;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
function getCode() {
setTimeout(function() {
setTheme('bsl-white-query');
}, 1000);
return [
'ВЫБРАТЬ',
' АвансовыйОтчет.ВалютаДокумента КАК ВалютаДокумента,',
' АвансовыйОтчет.ВидОперации КАК ВидОперации,',
' АвансовыйОтчет.Комментарий КАК Комментарий,',
' АвансовыйОтчет.КурсДокумента КАК КурсДокумента,',
' "ИСТИНА" КАК Поле1,',
' ВЫБОР',
' КОГДА АвансовыйОтчет.ФизЛицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)',
' ТОГДА ИСТИНА',
' ИНАЧЕ "ЛОЖЬ"',
' КОНЕЦ КАК Поле2',
'ИЗ',
' Документ.АвансовыйОтчет КАК АвансовыйОтчет',
'ГДЕ',
' АвансовыйОтчет.Ссылка = &Ссылка',
].join('\n');
}
</script>
<script src="./vs/loader.js"></script>
<script src="./bsl_helper.js"></script>
<script src="./init.js"></script>
</body>
</html>