123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- /*---------------------------------------------------------------------------------------------
- * ABAP Language
- *
- * Based on SAP ABAP Application Server 7.55
- *
- * Definition:
- * https://github.com/microsoft/monaco-languages/blob/master/src/abap/abap.ts
- *
- * Reference:
- * https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abenabap_words.htm
- * https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abenabap_index.htm
- *
- * Playground:
- * https://microsoft.github.io/monaco-editor/monarch.html
- *
- * Themes:
- * https://github.com/Microsoft/vscode/blob/master/src/vs/editor/standalone/common/themes.ts
- *--------------------------------------------------------------------------------------------*/
- import type { languages } from '../fillers/monaco-editor-core';
- export const conf: languages.LanguageConfiguration = {
- comments: {
- lineComment: '*'
- },
- brackets: [
- ['[', ']'],
- ['(', ')']
- ]
- };
- export const language = <languages.IMonarchLanguage>{
- defaultToken: 'invalid',
- ignoreCase: true,
- tokenPostfix: '.abap',
- keywords: [
- 'abap-source',
- 'abbreviated',
- 'abstract',
- 'accept',
- 'accepting',
- 'according',
- 'activation',
- 'actual',
- 'add',
- 'add-corresponding',
- 'adjacent',
- 'after',
- 'alias',
- 'aliases',
- 'align',
- 'all',
- 'allocate',
- 'alpha',
- 'analysis',
- 'analyzer',
- 'and', // also an operator
- 'append',
- 'appendage',
- 'appending',
- 'application',
- 'archive',
- 'area',
- 'arithmetic',
- 'as',
- 'ascending',
- 'aspect',
- 'assert',
- 'assign',
- 'assigned',
- 'assigning',
- 'association',
- 'asynchronous',
- 'at',
- 'attributes',
- 'authority',
- 'authority-check',
- 'avg',
- 'back',
- 'background',
- 'backup',
- 'backward',
- 'badi',
- 'base',
- 'before',
- 'begin',
- 'between', // also an operator
- 'big',
- 'binary',
- 'bintohex',
- 'bit',
- 'black',
- 'blank',
- 'blanks',
- 'blob',
- 'block',
- 'blocks',
- 'blue',
- 'bound',
- 'boundaries',
- 'bounds',
- 'boxed',
- 'break-point',
- 'buffer',
- 'by',
- 'bypassing',
- 'byte',
- 'byte-order',
- 'call',
- 'calling',
- 'case',
- 'cast',
- 'casting',
- 'catch',
- 'center',
- 'centered',
- 'chain',
- 'chain-input',
- 'chain-request',
- 'change',
- 'changing',
- 'channels',
- 'character',
- 'char-to-hex',
- 'check',
- 'checkbox',
- 'ci_',
- 'circular',
- 'class',
- 'class-coding',
- 'class-data',
- 'class-events',
- 'class-methods',
- 'class-pool',
- 'cleanup',
- 'clear',
- 'client',
- 'clob',
- 'clock',
- 'close',
- 'coalesce',
- 'code',
- 'coding',
- 'col_background',
- 'col_group',
- 'col_heading',
- 'col_key',
- 'col_negative',
- 'col_normal',
- 'col_positive',
- 'col_total',
- 'collect',
- 'color',
- 'column',
- 'columns',
- 'comment',
- 'comments',
- 'commit',
- 'common',
- 'communication',
- 'comparing',
- 'component',
- 'components',
- 'compression',
- 'compute',
- 'concat',
- 'concat_with_space',
- 'concatenate',
- 'cond',
- 'condense', // also a built-in
- 'condition',
- 'connect',
- 'connection',
- 'constants',
- 'context',
- 'contexts',
- 'continue',
- 'control',
- 'controls',
- 'conv',
- 'conversion',
- 'convert',
- 'copies',
- 'copy',
- 'corresponding',
- 'country',
- 'cover',
- 'cpi',
- 'create',
- 'creating',
- 'critical',
- 'currency',
- 'currency_conversion',
- 'current',
- 'cursor',
- 'cursor-selection',
- 'customer',
- 'customer-function',
- 'dangerous',
- 'data',
- 'database',
- 'datainfo',
- 'dataset',
- 'date',
- 'dats_add_days',
- 'dats_add_months',
- 'dats_days_between',
- 'dats_is_valid',
- 'daylight',
- 'dd/mm/yy',
- 'dd/mm/yyyy',
- 'ddmmyy',
- 'deallocate',
- 'decimal_shift',
- 'decimals',
- 'declarations',
- 'deep',
- 'default',
- 'deferred',
- 'define',
- 'defining',
- 'definition',
- 'delete',
- 'deleting',
- 'demand',
- 'department',
- 'descending',
- 'describe',
- 'destination',
- 'detail',
- 'dialog',
- 'directory',
- 'disconnect',
- 'display',
- 'display-mode',
- 'distinct',
- 'divide',
- 'divide-corresponding',
- 'division',
- 'do',
- 'dummy',
- 'duplicate',
- 'duplicates',
- 'duration',
- 'during',
- 'dynamic',
- 'dynpro',
- 'edit',
- 'editor-call',
- 'else',
- 'elseif',
- 'empty',
- 'enabled',
- 'enabling',
- 'encoding',
- 'end',
- 'endat',
- 'endcase',
- 'endcatch',
- 'endchain',
- 'endclass',
- 'enddo',
- 'endenhancement',
- 'end-enhancement-section',
- 'endexec',
- 'endform',
- 'endfunction',
- 'endian',
- 'endif',
- 'ending',
- 'endinterface',
- 'end-lines',
- 'endloop',
- 'endmethod',
- 'endmodule',
- 'end-of-definition',
- 'end-of-editing',
- 'end-of-file',
- 'end-of-page',
- 'end-of-selection',
- 'endon',
- 'endprovide',
- 'endselect',
- 'end-test-injection',
- 'end-test-seam',
- 'endtry',
- 'endwhile',
- 'endwith',
- 'engineering',
- 'enhancement',
- 'enhancement-point',
- 'enhancements',
- 'enhancement-section',
- 'entries',
- 'entry',
- 'enum',
- 'environment',
- 'equiv', // also an operator
- 'errormessage',
- 'errors',
- 'escaping',
- 'event',
- 'events',
- 'exact',
- 'except',
- 'exception',
- 'exceptions',
- 'exception-table',
- 'exclude',
- 'excluding',
- 'exec',
- 'execute',
- 'exists',
- 'exit',
- 'exit-command',
- 'expand',
- 'expanding',
- 'expiration',
- 'explicit',
- 'exponent',
- 'export',
- 'exporting',
- 'extend',
- 'extended',
- 'extension',
- 'extract',
- 'fail',
- 'fetch',
- 'field',
- 'field-groups',
- 'fields',
- 'field-symbol',
- 'field-symbols',
- 'file',
- 'filter',
- 'filters',
- 'filter-table',
- 'final',
- 'find', // also a built-in
- 'first',
- 'first-line',
- 'fixed-point',
- 'fkeq',
- 'fkge',
- 'flush',
- 'font',
- 'for',
- 'form',
- 'format',
- 'forward',
- 'found',
- 'frame',
- 'frames',
- 'free',
- 'friends',
- 'from',
- 'function',
- 'functionality',
- 'function-pool',
- 'further',
- 'gaps',
- 'generate',
- 'get',
- 'giving',
- 'gkeq',
- 'gkge',
- 'global',
- 'grant',
- 'green',
- 'group',
- 'groups',
- 'handle',
- 'handler',
- 'harmless',
- 'hashed', // also a table type
- 'having',
- 'hdb',
- 'header',
- 'headers',
- 'heading',
- 'head-lines',
- 'help-id',
- 'help-request',
- 'hextobin',
- 'hide',
- 'high',
- 'hint',
- 'hold',
- 'hotspot',
- 'icon',
- 'id',
- 'identification',
- 'identifier',
- 'ids',
- 'if',
- 'ignore',
- 'ignoring',
- 'immediately',
- 'implementation',
- 'implementations',
- 'implemented',
- 'implicit',
- 'import',
- 'importing',
- 'in', // also an operator
- 'inactive',
- 'incl',
- 'include',
- 'includes',
- 'including',
- 'increment',
- 'index', // also a table type
- 'index-line',
- 'infotypes',
- 'inheriting',
- 'init',
- 'initial',
- 'initialization',
- 'inner',
- 'inout',
- 'input',
- 'insert', // also a built-in
- 'instance',
- 'instances',
- 'instr',
- 'intensified',
- 'interface',
- 'interface-pool',
- 'interfaces',
- 'internal',
- 'intervals',
- 'into',
- 'inverse',
- 'inverted-date',
- 'is',
- 'iso',
- 'job',
- 'join',
- 'keep',
- 'keeping',
- 'kernel',
- 'key',
- 'keys',
- 'keywords',
- 'kind',
- 'language',
- 'last',
- 'late',
- 'layout',
- 'leading',
- 'leave',
- 'left',
- 'left-justified',
- 'leftplus',
- 'leftspace',
- 'legacy',
- 'length',
- 'let',
- 'level',
- 'levels',
- 'like',
- 'line',
- 'lines', // also a built-in
- 'line-count',
- 'linefeed',
- 'line-selection',
- 'line-size',
- 'list',
- 'listbox',
- 'list-processing',
- 'little',
- 'llang',
- 'load',
- 'load-of-program',
- 'lob',
- 'local',
- 'locale',
- 'locator',
- 'logfile',
- 'logical',
- 'log-point',
- 'long',
- 'loop',
- 'low',
- 'lower',
- 'lpad',
- 'lpi',
- 'ltrim',
- 'mail',
- 'main',
- 'major-id',
- 'mapping',
- 'margin',
- 'mark',
- 'mask',
- 'match', // also a built-in
- 'matchcode',
- 'max',
- 'maximum',
- 'medium',
- 'members',
- 'memory',
- 'mesh',
- 'message',
- 'message-id',
- 'messages',
- 'messaging',
- 'method',
- 'methods',
- 'min',
- 'minimum',
- 'minor-id',
- 'mm/dd/yy',
- 'mm/dd/yyyy',
- 'mmddyy',
- 'mode',
- 'modif',
- 'modifier',
- 'modify',
- 'module',
- 'move',
- 'move-corresponding',
- 'multiply',
- 'multiply-corresponding',
- 'name',
- 'nametab',
- 'native',
- 'nested',
- 'nesting',
- 'new',
- 'new-line',
- 'new-page',
- 'new-section',
- 'next',
- 'no',
- 'no-display',
- 'no-extension',
- 'no-gap',
- 'no-gaps',
- 'no-grouping',
- 'no-heading',
- 'no-scrolling',
- 'no-sign',
- 'no-title',
- 'no-topofpage',
- 'no-zero',
- 'node',
- 'nodes',
- 'non-unicode',
- 'non-unique',
- 'not', // also an operator
- 'null',
- 'number',
- 'object', // also a data type
- 'objects',
- 'obligatory',
- 'occurrence',
- 'occurrences',
- 'occurs',
- 'of',
- 'off',
- 'offset',
- 'ole',
- 'on',
- 'only',
- 'open',
- 'option',
- 'optional',
- 'options',
- 'or', // also an operator
- 'order',
- 'other',
- 'others',
- 'out',
- 'outer',
- 'output',
- 'output-length',
- 'overflow',
- 'overlay',
- 'pack',
- 'package',
- 'pad',
- 'padding',
- 'page',
- 'pages',
- 'parameter',
- 'parameters',
- 'parameter-table',
- 'part',
- 'partially',
- 'pattern',
- 'percentage',
- 'perform',
- 'performing',
- 'person',
- 'pf1',
- 'pf10',
- 'pf11',
- 'pf12',
- 'pf13',
- 'pf14',
- 'pf15',
- 'pf2',
- 'pf3',
- 'pf4',
- 'pf5',
- 'pf6',
- 'pf7',
- 'pf8',
- 'pf9',
- 'pf-status',
- 'pink',
- 'places',
- 'pool',
- 'pos_high',
- 'pos_low',
- 'position',
- 'pragmas',
- 'precompiled',
- 'preferred',
- 'preserving',
- 'primary',
- 'print',
- 'print-control',
- 'priority',
- 'private',
- 'procedure',
- 'process',
- 'program',
- 'property',
- 'protected',
- 'provide',
- 'public',
- 'push',
- 'pushbutton',
- 'put',
- 'queue-only',
- 'quickinfo',
- 'radiobutton',
- 'raise',
- 'raising',
- 'range',
- 'ranges',
- 'read',
- 'reader',
- 'read-only',
- 'receive',
- 'received',
- 'receiver',
- 'receiving',
- 'red',
- 'redefinition',
- 'reduce',
- 'reduced',
- 'ref',
- 'reference',
- 'refresh',
- 'regex',
- 'reject',
- 'remote',
- 'renaming',
- 'replace', // also a built-in
- 'replacement',
- 'replacing',
- 'report',
- 'request',
- 'requested',
- 'reserve',
- 'reset',
- 'resolution',
- 'respecting',
- 'responsible',
- 'result',
- 'results',
- 'resumable',
- 'resume',
- 'retry',
- 'return',
- 'returncode',
- 'returning',
- 'returns',
- 'right',
- 'right-justified',
- 'rightplus',
- 'rightspace',
- 'risk',
- 'rmc_communication_failure',
- 'rmc_invalid_status',
- 'rmc_system_failure',
- 'role',
- 'rollback',
- 'rows',
- 'rpad',
- 'rtrim',
- 'run',
- 'sap',
- 'sap-spool',
- 'saving',
- 'scale_preserving',
- 'scale_preserving_scientific',
- 'scan',
- 'scientific',
- 'scientific_with_leading_zero',
- 'scroll',
- 'scroll-boundary',
- 'scrolling',
- 'search',
- 'secondary',
- 'seconds',
- 'section',
- 'select',
- 'selection',
- 'selections',
- 'selection-screen',
- 'selection-set',
- 'selection-sets',
- 'selection-table',
- 'select-options',
- 'send',
- 'separate',
- 'separated',
- 'set',
- 'shared',
- 'shift',
- 'short',
- 'shortdump-id',
- 'sign_as_postfix',
- 'single',
- 'size',
- 'skip',
- 'skipping',
- 'smart',
- 'some',
- 'sort',
- 'sortable',
- 'sorted', // also a table type
- 'source',
- 'specified',
- 'split',
- 'spool',
- 'spots',
- 'sql',
- 'sqlscript',
- 'stable',
- 'stamp',
- 'standard', // also a table type
- 'starting',
- 'start-of-editing',
- 'start-of-selection',
- 'state',
- 'statement',
- 'statements',
- 'static',
- 'statics',
- 'statusinfo',
- 'step-loop',
- 'stop',
- 'structure',
- 'structures',
- 'style',
- 'subkey',
- 'submatches',
- 'submit',
- 'subroutine',
- 'subscreen',
- 'subtract',
- 'subtract-corresponding',
- 'suffix',
- 'sum',
- 'summary',
- 'summing',
- 'supplied',
- 'supply',
- 'suppress',
- 'switch',
- 'switchstates',
- 'symbol',
- 'syncpoints',
- 'syntax',
- 'syntax-check',
- 'syntax-trace',
- 'system-call',
- 'system-exceptions',
- 'system-exit',
- 'tab',
- 'tabbed',
- 'table',
- 'tables',
- 'tableview',
- 'tabstrip',
- 'target',
- 'task',
- 'tasks',
- 'test',
- 'testing',
- 'test-injection',
- 'test-seam',
- 'text',
- 'textpool',
- 'then',
- 'throw',
- 'time',
- 'times',
- 'timestamp',
- 'timezone',
- 'tims_is_valid',
- 'title',
- 'titlebar',
- 'title-lines',
- 'to',
- 'tokenization',
- 'tokens',
- 'top-lines',
- 'top-of-page',
- 'trace-file',
- 'trace-table',
- 'trailing',
- 'transaction',
- 'transfer',
- 'transformation',
- 'translate', // also a built-in
- 'transporting',
- 'trmac',
- 'truncate',
- 'truncation',
- 'try',
- 'tstmp_add_seconds',
- 'tstmp_current_utctimestamp',
- 'tstmp_is_valid',
- 'tstmp_seconds_between',
- 'type',
- 'type-pool',
- 'type-pools',
- 'types',
- 'uline',
- 'unassign',
- 'under',
- 'unicode',
- 'union',
- 'unique',
- 'unit_conversion',
- 'unix',
- 'unpack',
- 'until',
- 'unwind',
- 'up',
- 'update',
- 'upper',
- 'user',
- 'user-command',
- 'using',
- 'utf-8',
- 'valid',
- 'value',
- 'value-request',
- 'values',
- 'vary',
- 'varying',
- 'verification-message',
- 'version',
- 'via',
- 'view',
- 'visible',
- 'wait',
- 'warning',
- 'when',
- 'whenever',
- 'where',
- 'while',
- 'width',
- 'window',
- 'windows',
- 'with',
- 'with-heading',
- 'without',
- 'with-title',
- 'word',
- 'work',
- 'write',
- 'writer',
- 'xml',
- 'xsd',
- 'yellow',
- 'yes',
- 'yymmdd',
- 'zero',
- 'zone',
- // since 7.55:
- 'abap_system_timezone',
- 'abap_user_timezone',
- 'access',
- 'action',
- 'adabas',
- 'adjust_numbers',
- 'allow_precision_loss',
- 'allowed',
- 'amdp',
- 'applicationuser',
- 'as_geo_json',
- 'as400',
- 'associations',
- 'balance',
- 'behavior',
- 'breakup',
- 'bulk',
- 'cds',
- 'cds_client',
- 'check_before_save',
- 'child',
- 'clients',
- 'corr',
- 'corr_spearman',
- 'cross',
- 'cycles',
- 'datn_add_days',
- 'datn_add_months',
- 'datn_days_between',
- 'dats_from_datn',
- 'dats_tims_to_tstmp',
- 'dats_to_datn',
- 'db2',
- 'db6',
- 'ddl',
- 'dense_rank',
- 'depth',
- 'deterministic',
- 'discarding',
- 'entities',
- 'entity',
- 'error',
- 'failed',
- 'finalize',
- 'first_value',
- 'fltp_to_dec',
- 'following',
- 'fractional',
- 'full',
- 'graph',
- 'grouping',
- 'hierarchy',
- 'hierarchy_ancestors',
- 'hierarchy_ancestors_aggregate',
- 'hierarchy_descendants',
- 'hierarchy_descendants_aggregate',
- 'hierarchy_siblings',
- 'incremental',
- 'indicators',
- 'lag',
- 'last_value',
- 'lead',
- 'leaves',
- 'like_regexpr',
- 'link',
- 'locale_sap',
- 'lock',
- 'locks',
- 'many',
- 'mapped',
- 'matched',
- 'measures',
- 'median',
- 'mssqlnt',
- 'multiple',
- 'nodetype',
- 'ntile',
- 'nulls',
- 'occurrences_regexpr',
- 'one',
- 'operations',
- 'oracle',
- 'orphans',
- 'over',
- 'parent',
- 'parents',
- 'partition',
- 'pcre',
- 'period',
- 'pfcg_mapping',
- 'preceding',
- 'privileged',
- 'product',
- 'projection',
- 'rank',
- 'redirected',
- 'replace_regexpr',
- 'reported',
- 'response',
- 'responses',
- 'root',
- 'row',
- 'row_number',
- 'sap_system_date',
- 'save',
- 'schema',
- 'session',
- 'sets',
- 'shortdump',
- 'siblings',
- 'spantree',
- 'start',
- 'stddev',
- 'string_agg',
- 'subtotal',
- 'sybase',
- 'tims_from_timn',
- 'tims_to_timn',
- 'to_blob',
- 'to_clob',
- 'total',
- 'trace-entry',
- 'tstmp_to_dats',
- 'tstmp_to_dst',
- 'tstmp_to_tims',
- 'tstmpl_from_utcl',
- 'tstmpl_to_utcl',
- 'unbounded',
- 'utcl_add_seconds',
- 'utcl_current',
- 'utcl_seconds_between',
- 'uuid',
- 'var',
- 'verbatim'
- ],
- //
- // Built-in Functions
- //
- // Functions that are also statements have been moved to keywords
- //
- builtinFunctions: [
- 'abs',
- 'acos',
- 'asin',
- 'atan',
- 'bit-set',
- 'boolc',
- 'boolx',
- 'ceil',
- 'char_off',
- 'charlen',
- 'cmax',
- 'cmin',
- 'concat_lines_of',
- // 'condense', // moved to keywords
- 'contains',
- 'contains_any_not_of',
- 'contains_any_of',
- 'cos',
- 'cosh',
- 'count',
- 'count_any_not_of',
- 'count_any_of',
- 'dbmaxlen',
- 'distance',
- 'escape',
- 'exp',
- // 'find', // moved to keywords
- 'find_any_not_of',
- 'find_any_of',
- 'find_end',
- 'floor',
- 'frac',
- 'from_mixed',
- // 'insert', // moved to keywords
- 'ipow',
- 'line_exists',
- 'line_index',
- // 'lines', // moved to keywords
- 'log',
- 'log10',
- // 'match', // moved to keywords
- 'matches',
- 'nmax',
- 'nmin',
- 'numofchar',
- 'repeat',
- // 'replace', // moved to keywords
- 'rescale',
- 'reverse',
- 'round',
- 'segment',
- 'shift_left',
- 'shift_right',
- 'sign',
- 'sin',
- 'sinh',
- 'sqrt',
- 'strlen',
- 'substring',
- 'substring_after',
- 'substring_before',
- 'substring_from',
- 'substring_to',
- 'tan',
- 'tanh',
- 'to_lower',
- 'to_mixed',
- 'to_upper',
- // 'translate', // moved to keywords
- 'trunc',
- 'utclong_add', // since 7.54
- 'utclong_current', // since 7.54
- 'utclong_diff', // since 7.54
- 'xsdbool',
- 'xstrlen'
- ],
- //
- // Data Types
- //
- // Data types that are also part of statements have been moved to keywords
- //
- typeKeywords: [
- // built-in abap types
- 'b',
- 'c',
- 'd',
- 'decfloat16',
- 'decfloat34',
- 'f',
- 'i',
- 'int8', // since 7.54
- 'n',
- 'p',
- 's',
- 'string',
- 't',
- 'utclong', // since 7.54
- 'x',
- 'xstring',
- // generic data types
- 'any',
- 'clike',
- 'csequence',
- 'decfloat',
- // 'object', // moved to keywords
- 'numeric',
- 'simple',
- 'xsequence',
- // ddic/sql data types
- 'accp',
- 'char',
- 'clnt',
- 'cuky',
- 'curr',
- 'datn', // since 7.55
- 'dats',
- 'd16d', // since 7.55
- 'd16n', // since 7.55
- 'd16r', // since 7.55
- 'd34d', // since 7.55
- 'd34n', // since 7.55
- 'd34r', // since 7.55
- 'dec',
- 'df16_dec',
- 'df16_raw',
- 'df34_dec',
- 'df34_raw',
- 'fltp',
- 'geom_ewkb', // since 7.55
- 'int1',
- 'int2',
- 'int4',
- 'lang',
- 'lchr',
- 'lraw',
- 'numc',
- 'quan',
- 'raw',
- 'rawstring',
- 'sstring',
- 'timn', // since 7.55
- 'tims',
- 'unit',
- 'utcl', // since 7.55
- // ddic data types (obsolete)
- 'df16_scl',
- 'df34_scl',
- 'prec',
- 'varc',
- // special data types and constants
- 'abap_bool',
- 'abap_false',
- 'abap_true',
- 'abap_undefined',
- 'me',
- 'screen',
- 'space',
- 'super',
- 'sy',
- 'syst',
- 'table_line',
- // obsolete data object
- '*sys*'
- ],
- builtinMethods: ['class_constructor', 'constructor'],
- derivedTypes: [
- '%CID',
- '%CID_REF',
- '%CONTROL',
- '%DATA',
- '%ELEMENT',
- '%FAIL',
- '%KEY',
- '%MSG',
- '%PARAM',
- '%PID',
- '%PID_ASSOC',
- '%PID_PARENT',
- '%_HINTS'
- ],
- cdsLanguage: [
- '@AbapAnnotation',
- '@AbapCatalog',
- '@AccessControl',
- '@API',
- '@ClientDependent',
- '@ClientHandling',
- '@CompatibilityContract',
- '@DataAging',
- '@EndUserText',
- '@Environment',
- '@LanguageDependency',
- '@MappingRole',
- '@Metadata',
- '@MetadataExtension',
- '@ObjectModel',
- '@Scope',
- '@Semantics',
- '$EXTENSION',
- '$SELF'
- ],
- selectors: ['->', '->*', '=>', '~', '~*'],
- //
- // Operators
- //
- // Operators that can be part of statements have been moved to keywords
- //
- operators: [
- // arithmetic operators
- ' +',
- ' -',
- '/',
- '*',
- '**',
- 'div',
- 'mod',
- // assignment operators
- '=',
- '#',
- '@',
- '+=',
- '-=',
- '*=',
- '/=',
- '**=',
- '&&=',
- // casting operator
- '?=',
- // concat operators
- '&',
- '&&',
- // bit operators
- 'bit-and',
- 'bit-not',
- 'bit-or',
- 'bit-xor',
- 'm',
- 'o',
- 'z',
- // boolean operators
- // 'and', // moved to keywords
- // 'equiv', // moved to keywords
- // 'not', // moved to keywords
- // 'or', // moved to keywords
- // comparison operators
- '<',
- ' >', // todo: separate from -> and =>
- '<=',
- '>=',
- '<>',
- '><', // obsolete
- '=<', // obsolete
- '=>', // obsolete
- // 'between', // moved to keywords
- 'bt',
- 'byte-ca',
- 'byte-cn',
- 'byte-co',
- 'byte-cs',
- 'byte-na',
- 'byte-ns',
- 'ca',
- 'cn',
- 'co',
- 'cp',
- 'cs',
- 'eq', // obsolete
- 'ge', // obsolete
- 'gt', // obsolete
- // 'in', // moved to keywords
- 'le', // obsolete
- 'lt', // obsolete
- 'na',
- 'nb',
- 'ne', // obsolete
- 'np',
- 'ns',
- // cds
- '*/',
- '*:',
- '--',
- '/*',
- '//'
- ],
- symbols: /[=><!~?&+\-*\/\^%#@]+/,
- tokenizer: {
- root: [
- [
- /[a-z_\/$%@]([\w\/$%]|-(?!>))*/, // exclude '->' selector
- {
- cases: {
- '@typeKeywords': 'type',
- '@keywords': 'keyword',
- '@cdsLanguage': 'annotation',
- '@derivedTypes': 'type',
- '@builtinFunctions': 'type',
- '@builtinMethods': 'type',
- '@operators': 'key',
- '@default': 'identifier'
- }
- }
- ],
- [/<[\w]+>/, 'identifier'], // field symbols
- [/##[\w|_]+/, 'comment'], // pragmas
- { include: '@whitespace' },
- [/[:,.]/, 'delimiter'],
- [/[{}()\[\]]/, '@brackets'],
- [
- /@symbols/,
- {
- cases: {
- '@selectors': 'tag',
- '@operators': 'key',
- '@default': ''
- }
- }
- ],
- [/'/, { token: 'string', bracket: '@open', next: '@stringquote' }],
- [/`/, { token: 'string', bracket: '@open', next: '@stringping' }],
- [/\|/, { token: 'string', bracket: '@open', next: '@stringtemplate' }],
- [/\d+/, 'number']
- ],
- stringtemplate: [
- [/[^\\\|]+/, 'string'],
- [/\\\|/, 'string'],
- [/\|/, { token: 'string', bracket: '@close', next: '@pop' }]
- ],
- stringping: [
- [/[^\\`]+/, 'string'],
- [/`/, { token: 'string', bracket: '@close', next: '@pop' }]
- ],
- stringquote: [
- [/[^\\']+/, 'string'],
- [/'/, { token: 'string', bracket: '@close', next: '@pop' }]
- ],
- whitespace: [
- [/[ \t\r\n]+/, ''],
- [/^\*.*$/, 'comment'],
- [/\".*$/, 'comment']
- ]
- }
- };
|