Merge pull request #165 from sw23/sv_table_highlight_update

SystemVerilog: Adding better syntax highlighting for primitive table definitions
This commit is contained in:
Alexandru Dima 2021-10-11 07:52:16 +02:00 committed by GitHub
commit da955efc3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 96 additions and 1 deletions

View file

@ -1180,5 +1180,88 @@ testTokenization('systemverilog', [
{ startIndex: 49, type: 'delimiter.sv' }
]
}
],
// table
[
{
line: 'table',
tokens: [{ startIndex: 0, type: 'keyword.table.sv' }]
},
{
line: ' // clk d q q+',
tokens: [
{ startIndex: 0, type: '' },
{ startIndex: 2, type: 'comment.sv' }
]
},
{
line: ' r ? 0 : ? : - ;',
tokens: [
{ startIndex: 0, type: '' },
{ startIndex: 2, type: 'variable.predefined.sv' },
{ startIndex: 3, type: '' },
{ startIndex: 5, type: 'variable.predefined.sv' },
{ startIndex: 6, type: '' },
{ startIndex: 8, type: 'variable.predefined.sv' },
{ startIndex: 9, type: '' },
{ startIndex: 10, type: 'delimiter.sv' },
{ startIndex: 11, type: '' },
{ startIndex: 12, type: 'variable.predefined.sv' },
{ startIndex: 13, type: '' },
{ startIndex: 14, type: 'delimiter.sv' },
{ startIndex: 15, type: '' },
{ startIndex: 16, type: 'variable.predefined.sv' },
{ startIndex: 17, type: '' },
{ startIndex: 18, type: 'delimiter.sv' }
]
},
{
line: ' 0 x (01) : 0 : 1; // Comment ',
tokens: [
{ startIndex: 0, type: '' },
{ startIndex: 2, type: 'variable.predefined.sv' },
{ startIndex: 3, type: '' },
{ startIndex: 4, type: 'variable.predefined.sv' },
{ startIndex: 5, type: '' },
{ startIndex: 6, type: 'delimiter.parenthesis.sv' },
{ startIndex: 7, type: 'variable.predefined.sv' },
{ startIndex: 9, type: 'delimiter.parenthesis.sv' },
{ startIndex: 10, type: '' },
{ startIndex: 11, type: 'delimiter.sv' },
{ startIndex: 12, type: '' },
{ startIndex: 13, type: 'variable.predefined.sv' },
{ startIndex: 14, type: '' },
{ startIndex: 15, type: 'delimiter.sv' },
{ startIndex: 16, type: '' },
{ startIndex: 17, type: 'variable.predefined.sv' },
{ startIndex: 18, type: 'delimiter.sv' },
{ startIndex: 19, type: '' },
{ startIndex: 20, type: 'comment.sv' }
]
},
{
line: '0 0 1 : 0 : 1 ;',
tokens: [
{ startIndex: 0, type: 'variable.predefined.sv' },
{ startIndex: 1, type: '' },
{ startIndex: 2, type: 'variable.predefined.sv' },
{ startIndex: 3, type: '' },
{ startIndex: 4, type: 'variable.predefined.sv' },
{ startIndex: 5, type: '' },
{ startIndex: 6, type: 'delimiter.sv' },
{ startIndex: 7, type: '' },
{ startIndex: 8, type: 'variable.predefined.sv' },
{ startIndex: 9, type: '' },
{ startIndex: 10, type: 'delimiter.sv' },
{ startIndex: 11, type: '' },
{ startIndex: 12, type: 'variable.predefined.sv' },
{ startIndex: 13, type: '' },
{ startIndex: 14, type: 'delimiter.sv' }
]
},
{
line: 'endtable',
tokens: [{ startIndex: 0, type: 'keyword.endtable.sv' }]
}
]
]);

View file

@ -449,6 +449,10 @@ export const language = <languages.IMonarchLanguage>{
token: 'keyword.$2',
next: '@module_instance'
},
table: {
token: 'keyword.$2',
next: '@table'
},
'@keywords': { token: 'keyword.$2' },
'@default': {
token: 'identifier',
@ -468,7 +472,7 @@ export const language = <languages.IMonarchLanguage>{
// identifiers and keywords
{ include: '@identifier_or_keyword' },
// whitespace
// whitespace and comments
{ include: '@whitespace' },
// (* attributes *).
@ -589,6 +593,14 @@ export const language = <languages.IMonarchLanguage>{
{ token: 'string.include.identifier', next: '@pop' }
]
]
],
table: [
{ include: '@whitespace' },
[/[()]/, '@brackets'],
[/[:;]/, 'delimiter'],
[/[01\-*?xXbBrRfFpPnN]/, 'variable.predefined'],
['endtable', 'keyword.endtable', '@pop']
]
}
};