|
|
|
@ -51,32 +51,32 @@ export const conf: IRichLanguageConfiguration = {
|
|
|
|
|
{ open: '/*', close: '*/' },
|
|
|
|
|
{ open: '\'', close: '\'', notIn: ['string_sq'] },
|
|
|
|
|
{ open: '"', close: '"', notIn: ['string_dq'] },
|
|
|
|
|
{ open: 'var', close: 'end_var'},
|
|
|
|
|
{ open: 'var_input', close: 'end_var'},
|
|
|
|
|
{ open: 'var_output', close: 'end_var'},
|
|
|
|
|
{ open: 'var_in_out', close: 'end_var'},
|
|
|
|
|
{ open: 'var_temp', close: 'end_var'},
|
|
|
|
|
{ open: 'var_global', close: 'end_var'},
|
|
|
|
|
{ open: 'var_access', close: 'end_var'},
|
|
|
|
|
{ open: 'var_external', close: 'end_var'},
|
|
|
|
|
{ open: 'type', close: 'end_type'},
|
|
|
|
|
{ open: 'struct', close: 'end_struct'},
|
|
|
|
|
{ open: 'program', close: 'end_program'},
|
|
|
|
|
{ open: 'function', close: 'end_function'},
|
|
|
|
|
{ open: 'function_block', close: 'end_function_block'},
|
|
|
|
|
{ open: 'action', close: 'end_action'},
|
|
|
|
|
{ open: 'step', close: 'end_step'},
|
|
|
|
|
{ open: 'initial_step', close: 'end_step'},
|
|
|
|
|
{ open: 'transaction', close: 'end_transaction'},
|
|
|
|
|
{ open: 'configuration', close: 'end_configuration'},
|
|
|
|
|
{ open: 'tcp', close: 'end_tcp'},
|
|
|
|
|
{ open: 'recource', close: 'end_recource'},
|
|
|
|
|
{ open: 'channel', close: 'end_channel'},
|
|
|
|
|
{ open: 'library', close: 'end_library'},
|
|
|
|
|
{ open: 'folder', close: 'end_folder'},
|
|
|
|
|
{ open: 'binaries', close: 'end_binaries'},
|
|
|
|
|
{ open: 'includes', close: 'end_includes'},
|
|
|
|
|
{ open: 'sources', close: 'end_sources'}
|
|
|
|
|
{ open: 'var', close: 'end_var' },
|
|
|
|
|
{ open: 'var_input', close: 'end_var' },
|
|
|
|
|
{ open: 'var_output', close: 'end_var' },
|
|
|
|
|
{ open: 'var_in_out', close: 'end_var' },
|
|
|
|
|
{ open: 'var_temp', close: 'end_var' },
|
|
|
|
|
{ open: 'var_global', close: 'end_var' },
|
|
|
|
|
{ open: 'var_access', close: 'end_var' },
|
|
|
|
|
{ open: 'var_external', close: 'end_var' },
|
|
|
|
|
{ open: 'type', close: 'end_type' },
|
|
|
|
|
{ open: 'struct', close: 'end_struct' },
|
|
|
|
|
{ open: 'program', close: 'end_program' },
|
|
|
|
|
{ open: 'function', close: 'end_function' },
|
|
|
|
|
{ open: 'function_block', close: 'end_function_block' },
|
|
|
|
|
{ open: 'action', close: 'end_action' },
|
|
|
|
|
{ open: 'step', close: 'end_step' },
|
|
|
|
|
{ open: 'initial_step', close: 'end_step' },
|
|
|
|
|
{ open: 'transaction', close: 'end_transaction' },
|
|
|
|
|
{ open: 'configuration', close: 'end_configuration' },
|
|
|
|
|
{ open: 'tcp', close: 'end_tcp' },
|
|
|
|
|
{ open: 'recource', close: 'end_recource' },
|
|
|
|
|
{ open: 'channel', close: 'end_channel' },
|
|
|
|
|
{ open: 'library', close: 'end_library' },
|
|
|
|
|
{ open: 'folder', close: 'end_folder' },
|
|
|
|
|
{ open: 'binaries', close: 'end_binaries' },
|
|
|
|
|
{ open: 'includes', close: 'end_includes' },
|
|
|
|
|
{ open: 'sources', close: 'end_sources' }
|
|
|
|
|
],
|
|
|
|
|
surroundingPairs: [
|
|
|
|
|
{ open: '{', close: '}' },
|
|
|
|
@ -84,32 +84,32 @@ export const conf: IRichLanguageConfiguration = {
|
|
|
|
|
{ open: '(', close: ')' },
|
|
|
|
|
{ open: '"', close: '"' },
|
|
|
|
|
{ open: '\'', close: '\'' },
|
|
|
|
|
{ open: 'var', close: 'end_var'},
|
|
|
|
|
{ open: 'var_input', close: 'end_var'},
|
|
|
|
|
{ open: 'var_output', close: 'end_var'},
|
|
|
|
|
{ open: 'var_in_out', close: 'end_var'},
|
|
|
|
|
{ open: 'var_temp', close: 'end_var'},
|
|
|
|
|
{ open: 'var_global', close: 'end_var'},
|
|
|
|
|
{ open: 'var_access', close: 'end_var'},
|
|
|
|
|
{ open: 'var_external', close: 'end_var'},
|
|
|
|
|
{ open: 'type', close: 'end_type'},
|
|
|
|
|
{ open: 'struct', close: 'end_struct'},
|
|
|
|
|
{ open: 'program', close: 'end_program'},
|
|
|
|
|
{ open: 'function', close: 'end_function'},
|
|
|
|
|
{ open: 'function_block', close: 'end_function_block'},
|
|
|
|
|
{ open: 'action', close: 'end_action'},
|
|
|
|
|
{ open: 'step', close: 'end_step'},
|
|
|
|
|
{ open: 'initial_step', close: 'end_step'},
|
|
|
|
|
{ open: 'transaction', close: 'end_transaction'},
|
|
|
|
|
{ open: 'configuration', close: 'end_configuration'},
|
|
|
|
|
{ open: 'tcp', close: 'end_tcp'},
|
|
|
|
|
{ open: 'recource', close: 'end_recource'},
|
|
|
|
|
{ open: 'channel', close: 'end_channel'},
|
|
|
|
|
{ open: 'library', close: 'end_library'},
|
|
|
|
|
{ open: 'folder', close: 'end_folder'},
|
|
|
|
|
{ open: 'binaries', close: 'end_binaries'},
|
|
|
|
|
{ open: 'includes', close: 'end_includes'},
|
|
|
|
|
{ open: 'sources', close: 'end_sources'}
|
|
|
|
|
{ open: 'var', close: 'end_var' },
|
|
|
|
|
{ open: 'var_input', close: 'end_var' },
|
|
|
|
|
{ open: 'var_output', close: 'end_var' },
|
|
|
|
|
{ open: 'var_in_out', close: 'end_var' },
|
|
|
|
|
{ open: 'var_temp', close: 'end_var' },
|
|
|
|
|
{ open: 'var_global', close: 'end_var' },
|
|
|
|
|
{ open: 'var_access', close: 'end_var' },
|
|
|
|
|
{ open: 'var_external', close: 'end_var' },
|
|
|
|
|
{ open: 'type', close: 'end_type' },
|
|
|
|
|
{ open: 'struct', close: 'end_struct' },
|
|
|
|
|
{ open: 'program', close: 'end_program' },
|
|
|
|
|
{ open: 'function', close: 'end_function' },
|
|
|
|
|
{ open: 'function_block', close: 'end_function_block' },
|
|
|
|
|
{ open: 'action', close: 'end_action' },
|
|
|
|
|
{ open: 'step', close: 'end_step' },
|
|
|
|
|
{ open: 'initial_step', close: 'end_step' },
|
|
|
|
|
{ open: 'transaction', close: 'end_transaction' },
|
|
|
|
|
{ open: 'configuration', close: 'end_configuration' },
|
|
|
|
|
{ open: 'tcp', close: 'end_tcp' },
|
|
|
|
|
{ open: 'recource', close: 'end_recource' },
|
|
|
|
|
{ open: 'channel', close: 'end_channel' },
|
|
|
|
|
{ open: 'library', close: 'end_library' },
|
|
|
|
|
{ open: 'folder', close: 'end_folder' },
|
|
|
|
|
{ open: 'binaries', close: 'end_binaries' },
|
|
|
|
|
{ open: 'includes', close: 'end_includes' },
|
|
|
|
|
{ open: 'sources', close: 'end_sources' }
|
|
|
|
|
],
|
|
|
|
|
folding: {
|
|
|
|
|
markers: {
|
|
|
|
@ -182,13 +182,27 @@ export const language = <ILanguage>{
|
|
|
|
|
// The main tokenizer for our languages
|
|
|
|
|
tokenizer: {
|
|
|
|
|
root: [
|
|
|
|
|
[/(T|DT|TOD)#[0-9:-_shmyd]*/, 'tag'],
|
|
|
|
|
[/[A-Za-z]{1,6}#[0-9]*/, 'tag'],
|
|
|
|
|
[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]*/, 'tag'],
|
|
|
|
|
[/(\.\.)/, 'delimiter'],
|
|
|
|
|
|
|
|
|
|
[/\b(16#[0-9A-Fa-f\_]*)+\b/, 'number.hex'],
|
|
|
|
|
[/\b(2#[01\_]+)+\b/, 'number.binary'],
|
|
|
|
|
[/\b(8#[0-9\_]*)+\b/, 'number.octal'],
|
|
|
|
|
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
|
|
|
|
|
[/\b(L?REAL)#[0-9\_\.e]+\b/, 'number.float'],
|
|
|
|
|
[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/, 'number'],
|
|
|
|
|
[/\d+/, 'number'],
|
|
|
|
|
|
|
|
|
|
[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/, 'tag'],
|
|
|
|
|
[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/, 'tag'],
|
|
|
|
|
[/\%(I|Q|M)[0-9\.]*/, 'tag'],
|
|
|
|
|
[/[A-Za-z]{1,6}#[0-9]*/, 'tag'],
|
|
|
|
|
|
|
|
|
|
[/(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]*/, 'predefined'],
|
|
|
|
|
[/[A_Za-z]*(_TO_)[A_Za-z]*/, 'predefined'],
|
|
|
|
|
|
|
|
|
|
[/[;]/, 'delimiter'],
|
|
|
|
|
[/[.]/, { token: 'delimiter', next: '@params' }],
|
|
|
|
|
|
|
|
|
|
// identifiers and keywords
|
|
|
|
|
[/[a-zA-Z_]\w*/, {
|
|
|
|
|
cases: {
|
|
|
|
@ -205,14 +219,7 @@ export const language = <ILanguage>{
|
|
|
|
|
|
|
|
|
|
{ include: '@whitespace' },
|
|
|
|
|
|
|
|
|
|
[/[;.]/, 'delimiter'],
|
|
|
|
|
[/[{}()\[\]]/, '@brackets'],
|
|
|
|
|
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
|
|
|
|
|
[/16#[0-9a-fA-F]+/, 'number.hex'],
|
|
|
|
|
[/2#[0-9_]+/, 'number.binary'],
|
|
|
|
|
[/\d+/, 'number'],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[/"([^"\\]|\\.)*$/, 'string.invalid'], // non-teminated string
|
|
|
|
|
[/"/, { token: 'string.quote', bracket: '@open', next: '@string_dq' }],
|
|
|
|
@ -222,6 +229,10 @@ export const language = <ILanguage>{
|
|
|
|
|
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
|
|
|
|
|
[/'/, 'string.invalid']
|
|
|
|
|
],
|
|
|
|
|
params: [
|
|
|
|
|
[/\b[A-Za-z0-9_]+\b(?=\()/, { token: 'identifier', next: '@pop' }],
|
|
|
|
|
[/\b[A-Za-z0-9_]+\b/, 'variable.name', '@pop']
|
|
|
|
|
],
|
|
|
|
|
comment: [
|
|
|
|
|
[/[^\/*]+/, 'comment'],
|
|
|
|
|
[/\/\*/, 'comment', '@push'], // nested comment
|
|
|
|
|