From 1b01285899a9217661919b674bf73c1c2f0be3f4 Mon Sep 17 00:00:00 2001 From: Sergey Romanov Date: Wed, 7 Aug 2019 17:59:03 +0600 Subject: [PATCH 1/2] Updates --- src/st/st.ts | 135 ++++++++++++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/src/st/st.ts b/src/st/st.ts index a5967937..c9e1dfa5 100644 --- a/src/st/st.ts +++ b/src/st/st.ts @@ -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 = { // 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 = { { 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 = { [/(')(@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 From 1857fa19bbe2ba227319e72a33c19e33b02b2a40 Mon Sep 17 00:00:00 2001 From: Sergey Romanov Date: Wed, 7 Aug 2019 18:04:46 +0600 Subject: [PATCH 2/2] More changed to regex --- src/st/st.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/st/st.ts b/src/st/st.ts index c9e1dfa5..e1db39c1 100644 --- a/src/st/st.ts +++ b/src/st/st.ts @@ -195,10 +195,10 @@ export const language = { [/\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'], + [/\b[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'], + [/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/, 'predefined'], + [/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/, 'predefined'], [/[;]/, 'delimiter'], [/[.]/, { token: 'delimiter', next: '@params' }],