-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlexer.py
More file actions
62 lines (57 loc) · 2.49 KB
/
Copy pathlexer.py
File metadata and controls
62 lines (57 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# -*- coding: utf-8 -*-
"""
pygments.lexers.1C
~~~~~~~~~~~~~~~~~~~~~~~~
Lexers for language: 1C.
:license: BSD, see LICENSE for more details.
"""
#import re
from pygments.lexer import RegexLexer
from pygments.token import *
class Lang1CLexer(RegexLexer):
name = 'Language 1C lexer'
aliases = ['1c']
filenames = ['*.bsl', '*.os']
mimetypes = ['text/x-1c']
tokens = {
'root': [
(r'\s', Whitespace),
# Описание строки.
(r'(\".*?\"|\|.*?\"|\".*|\|.*)', String),
# Описание коментария.
(r'//.*?\n', Comment),
# Описание знаков пунктуации
(r'[,.!:;()\[\]]', Punctuation),
# Описание операторов.
(r'[%^&*+=|<>/?-]', Operator),
# Описание ключевых слов
(ur'(?i)(Var|Val|New|Return|Goto|Continue|Break|Execute)\b|'
ur'(?iu)(Перем|Знач|Новый|Возврат|Перейти|Продолжить|Прервать|Выполнить)\b|'
# Условие Если
ur'(?i)(EndIf|If|Then|ElsIf|Else)\b|'
ur'(?iu)(КонецЕсли|Если|Тогда|ИначеЕсли|Иначе)\b|'
# Циклы
ur'(?i)(EndDo|Do|For|Each|In|While|To)\b|'
ur'(?iu)(КонецЦикла|Цикл|Для|Каждого|Из|Пока|По)\b|'
# Процедура и Функция
ur'(?i)(EndProcedure|Procedure|EndFunction|Function)\b|'
ur'(?iu)(КонецПроцедуры|Процедура|КонецФункции|Функция)\b|'
# Попытка
ur'(?i)(EndTry|Try|Raise|Except)\b|'
ur'(?iu)(КонецПопытки|Попытка|ВызватьИсключение|Исключение)\b|'
# Условия: И, Или, Не
ur'(?i)(And|Or|Not)\b|'
ur'(?iu)(И|Или|Не)\b'
, Keyword.Reserved),
# Литералы Истина, Ложь
(ur'(?i)(True|False|Null)\b|'
ur'(?iu)(Истина|Ложь)\b'
, Literal),
# Описание чисел
(r'\d*\.\d\b', Number),
# Описание дат
(r'\'\d*\'', Literal.Date),
# Описание имён переменных и функций
(ur'(?iu)\w*\b', Name),
]
}