1С 8.3 Раскрасить код в синтаксис 1С
Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Перейти в раздел примеры кода 1С 8.3:
Код от DrAku1а (https://forum.infostart.ru/forum9/topic276558/#message2783950)
Раскраска строк кода в синтаксис 1С 8.3:
Процедура ДобавитьСлово(Код, Слово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, ТипСлова=Неопределено)Если ПустаяСтрока(Слово) ТогдаКод = Код + СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, " ", " "), Символы.НПП, " "), Символы.Таб, " ");Возврат;ИначеЕсли ТипСлова=Неопределено Тогдансл = НРег(СокрП(Слово));Если Найти(СписокКлючевыхСлов, нсл)>0 ТогдаТипСлова = "<keywrd>";ИначеЕсли Слово = "0" или мОписаниеТипаЧисло.ПривестиЗначение(Слово)<>0 ТогдаТипСлова = "<num>";ИначеТипСлова = "<text>";ЭтоЧисло = Истина;Для сч=1 по СтрДлина(нсл) ЦиклТекСимв=Сред(нсл, сч, 1);Если Найти(ДопустимыеЗнаки, ТекСимв)=0 ТогдаТипСлова="<unwn>";Прервать;ИначеЕсли ТекСимв<>"0" ТогдаЭтоЧисло = Ложь;КонецЕсли;КонецЦикла;Если ЭтоЧисло ТогдаТипСлова = "<num>";КонецЕсли;КонецЕсли;КонецЕсли;Код = Код + ?(ТекТипСлова=ТипСлова, "", ТипСлова) + СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, "<", "<"), ">", ">"), " ", " "), Символы.НПП, " "), Символы.Таб, " ");ТекТипСлова = ТипСлова;Слово = "";КонецПроцедуры//Реализует функционал "Оформить фрагмент кода"Функция РаскраситьКод1С8(ТекстКод) ЭкспортмОписаниеТипаЧисло = Новый ОписаниеТипов("Число");Таб = Символы.Таб;НПП = Символы.НПП;ДопустимыеЗнаки = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789abcdefghijklmnopqrstyvwxyz_";СписокКлючевыхСлов = "асинх|async|ждать|await|if|если|then|тогда|elsif|иначеесли|else|иначе|endif|конецесли|do|цикл|for|для|to|по|each|каждого|in|из|while|пока|enddo|конеццикла|procedure|процедура|endprocedure|конецпроцедуры|function|функция|endfunction|конецфункции|var|перем|export|экспорт|goto|перейти|and|и|or|или|not|не|val|знач|break|прервать|continue|продолжить|return|возврат|try|попытка|except|исключение|endtry|конецпопытки|raise|вызватьисключение|false|ложь|true|истина|undefined|неопределено|null|new|новый|execute|выполнить|";Ответ = "<span style=""text-align: left; font-family: courier new,courier; color: blue; font-size: 10pt; white-space: pre; display: inline-block; ""><font>";ТекТипСлова = "<text>";Для нс=1 По СтрЧислоСтрок(ТекстКод) ЦиклТекСтрока = СокрП(СтрПолучитьСтроку(ТекстКод, нс));дл = СтрДлина(ТекСтрока);сч = 0;ТекСлово = "";КодНеНачался = Истина;Пока сч<дл Циклсч = сч + 1;ТекущийСимвол = Сред(ТекСтрока, сч, 1);Если КодНеНачался ТогдаЕсли ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП Тогда//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", " ");Ответ = Ответ + ТекущийСимвол;Продолжить;ИначеЕсли ТекущийСимвол="#" или ТекущийСимвол="&" ТогдаТекСлово = "";ДобавитьСлово(Ответ, Сред(ТекСтрока, сч), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<dir>");Прервать;КонецЕсли;КонецЕсли;КодНеНачался = Ложь;Если ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП ТогдаЕсли КодНеНачался ТогдаОтвет = Ответ + ТекущийСимвол;Продолжить;КонецЕсли;//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", " ");ДобавитьСлово(Ответ, ТекСлово+ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);ТекСлово = "";Продолжить;ИначеЕсли Найти("():;.,=+-*<>?[]%/", ТекущийСимвол) > 0 ТогдаДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);ТекСлово = "";//Проверяем на комментарийЕсли ТекущийСимвол="/" и Сред(ТекСтрока, сч+1, 1)="/" ТогдаТекСлово = "";ДобавитьСлово(Ответ, СокрП(Сред(ТекСтрока, сч)), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<cmnt>");Прервать;КонецЕсли;ДобавитьСлово(Ответ, ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<symb>");Продолжить;ИначеЕсли ТекущийСимвол="""" или ТекущийСимвол="|" ТогдаДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);// найти закрывающую кавычкунач = сч;сч = сч + 1;СледующийСимвол = Сред(ТекСтрока, сч, 1);Пока сч<дл Циклсч = сч + 1;ТекущийСимвол = СледующийСимвол;СледующийСимвол = Сред(ТекСтрока, сч, 1);Если ТекущийСимвол="""" ТогдаЕсли СледующийСимвол="""" Тогдасч = сч + 1;СледующийСимвол = Сред(ТекСтрока, сч, 1);ИначеПрервать;КонецЕсли;КонецЕсли;КонецЦикла;ТекСлово = "";ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");сч = сч - 1;Продолжить;ИначеЕсли ТекущийСимвол="'" Тогданач = сч;сч = сч + 1;СледующийСимвол = Сред(ТекСтрока, сч, 1);Пока сч<дл Циклсч = сч + 1;ТекущийСимвол = СледующийСимвол;СледующийСимвол = Сред(ТекСтрока, сч, 1);Если ТекущийСимвол="'" ТогдаЕсли СледующийСимвол="'" Тогдасч = сч + 1;СледующийСимвол = Сред(ТекСтрока, сч, 1);ИначеПрервать;КонецЕсли;КонецЕсли;КонецЦикла;ТекСлово = "";ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");сч = сч - 1;Продолжить;КонецЕсли;ТекСлово = ТекСлово + ТекущийСимвол;КонецЦикла;Если Не ПустаяСтрока(ТекСлово) ТогдаДобавитьСлово(Ответ,СокрП(ТекСлово), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);КонецЕсли;Ответ = Ответ + "";КонецЦикла;Ответ = Ответ + Символы.ПС+"</font></span>";Ответ = СтрЗаменить(Ответ, "<keywrd>", "</font><font color=red>");Ответ = СтрЗаменить(Ответ, "<text>", "</font><font color=blue>");Ответ = СтрЗаменить(Ответ, "<str>", "</font><font color=black>");Ответ = СтрЗаменить(Ответ, "<num>", "</font><font color=black>");Ответ = СтрЗаменить(Ответ, "<unwn>", "</font><font color=black>");Ответ = СтрЗаменить(Ответ, "<symb>", "</font><font color=red>");Ответ = СтрЗаменить(Ответ, "<cmnt>", "</font><font color=green>");Ответ = СтрЗаменить(Ответ, "<dir>", "</font><font color=brown>");Ответ = СтрЗаменить(Ответ, Символы.Таб, " ");Возврат Ответ;КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник