1c.js 5.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. Language: 1C
  3. Author: Yuri Ivanov <[email protected]>
  4. Contributors: Sergey Baranov <[email protected]>
  5. Category: enterprise
  6. */
  7. function(hljs){
  8. var IDENT_RE_RU = '[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*';
  9. var OneS_KEYWORDS = 'возврат дата для если и или иначе иначеесли исключение конецесли ' +
  10. 'конецпопытки конецпроцедуры конецфункции конеццикла константа не перейти перем ' +
  11. 'перечисление по пока попытка прервать продолжить процедура строка тогда фс функция цикл ' +
  12. 'число экспорт';
  13. var OneS_BUILT_IN = 'ansitooem oemtoansi ввестивидсубконто ввестидату ввестизначение ' +
  14. 'ввестиперечисление ввестипериод ввестиплансчетов ввестистроку ввестичисло вопрос ' +
  15. 'восстановитьзначение врег выбранныйплансчетов вызватьисключение датагод датамесяц ' +
  16. 'датачисло добавитьмесяц завершитьработусистемы заголовоксистемы записьжурналарегистрации ' +
  17. 'запуститьприложение зафиксироватьтранзакцию значениевстроку значениевстрокувнутр ' +
  18. 'значениевфайл значениеизстроки значениеизстрокивнутр значениеизфайла имякомпьютера ' +
  19. 'имяпользователя каталогвременныхфайлов каталогиб каталогпользователя каталогпрограммы ' +
  20. 'кодсимв командасистемы конгода конецпериодаби конецрассчитанногопериодаби ' +
  21. 'конецстандартногоинтервала конквартала конмесяца коннедели лев лог лог10 макс ' +
  22. 'максимальноеколичествосубконто мин монопольныйрежим названиеинтерфейса названиенабораправ ' +
  23. 'назначитьвид назначитьсчет найти найтипомеченныенаудаление найтиссылки началопериодаби ' +
  24. 'началостандартногоинтервала начатьтранзакцию начгода начквартала начмесяца начнедели ' +
  25. 'номерднягода номерднянедели номернеделигода нрег обработкаожидания окр описаниеошибки ' +
  26. 'основнойжурналрасчетов основнойплансчетов основнойязык открытьформу открытьформумодально ' +
  27. 'отменитьтранзакцию очиститьокносообщений периодстр полноеимяпользователя получитьвремята ' +
  28. 'получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта ' +
  29. 'получитьпустоезначение получитьта прав праводоступа предупреждение префиксавтонумерации ' +
  30. 'пустаястрока пустоезначение рабочаядаттьпустоезначение рабочаядата разделительстраниц ' +
  31. 'разделительстрок разм разобратьпозициюдокумента рассчитатьрегистрына ' +
  32. 'рассчитатьрегистрыпо сигнал симв символтабуляции создатьобъект сокрл сокрлп сокрп ' +
  33. 'сообщить состояние сохранитьзначение сред статусвозврата стрдлина стрзаменить ' +
  34. 'стрколичествострок стрполучитьстроку стрчисловхождений сформироватьпозициюдокумента ' +
  35. 'счетпокоду текущаядата текущеевремя типзначения типзначениястр удалитьобъекты ' +
  36. 'установитьтана установитьтапо фиксшаблон формат цел шаблон';
  37. var DQUOTE = {begin: '""'};
  38. var STR_START = {
  39. className: 'string',
  40. begin: '"', end: '"|$',
  41. contains: [DQUOTE]
  42. };
  43. var STR_CONT = {
  44. className: 'string',
  45. begin: '\\|', end: '"|$',
  46. contains: [DQUOTE]
  47. };
  48. return {
  49. case_insensitive: true,
  50. lexemes: IDENT_RE_RU,
  51. keywords: {keyword: OneS_KEYWORDS, built_in: OneS_BUILT_IN},
  52. contains: [
  53. hljs.C_LINE_COMMENT_MODE,
  54. hljs.NUMBER_MODE,
  55. STR_START, STR_CONT,
  56. {
  57. className: 'function',
  58. begin: '(процедура|функция)', end: '$',
  59. lexemes: IDENT_RE_RU,
  60. keywords: 'процедура функция',
  61. contains: [
  62. {
  63. begin: 'экспорт', endsWithParent: true,
  64. lexemes: IDENT_RE_RU,
  65. keywords: 'экспорт',
  66. contains: [hljs.C_LINE_COMMENT_MODE]
  67. },
  68. {
  69. className: 'params',
  70. begin: '\\(', end: '\\)',
  71. lexemes: IDENT_RE_RU,
  72. keywords: 'знач',
  73. contains: [STR_START, STR_CONT]
  74. },
  75. hljs.C_LINE_COMMENT_MODE,
  76. hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE_RU})
  77. ]
  78. },
  79. {className: 'meta', begin: '#', end: '$'},
  80. {className: 'number', begin: '\'\\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4})\''} // date
  81. ]
  82. };
  83. }