diff --git a/src/perl/perl.test.ts b/src/perl/perl.test.ts index 913c1688..fbca6845 100644 --- a/src/perl/perl.test.ts +++ b/src/perl/perl.test.ts @@ -310,14 +310,23 @@ testTokenization('perl', [ [ { line: 'm/abc/', - tokens: [{ startIndex: 0, type: 'regexp.perl' }], + tokens: [ + { startIndex: 0, type: 'regexp.delim.perl' }, + { startIndex: 2, type: 'regexp.perl' }, + { startIndex: 5, type: 'regexp.delim.perl' }, + ], }, ], [ { line: 'm/[abc]+/e', - tokens: [{ startIndex: 0, type: 'regexp.perl' }], + tokens: [ + { startIndex: 0, type: 'regexp.delim.perl' }, + { startIndex: 2, type: 'regexp.perl' }, + { startIndex: 8, type: 'regexp.delim.perl' }, + { startIndex: 9, type: 'regexp.modifier.perl' }, + ], }, ], diff --git a/src/perl/perl.ts b/src/perl/perl.ts index b385bd1c..6bfb1a95 100644 --- a/src/perl/perl.ts +++ b/src/perl/perl.ts @@ -601,13 +601,17 @@ export const language = { [/\\./, 'regexp.escape'], [/./, { cases: { - '$#==$S3': { token: 'regexp.delim', next: '@pop' }, + '$#==$S3': { token: 'regexp.delim', next: '@regexpModifiers' }, '$#==$S2': { token: 'regexp.delim', next: '@push' }, // nested delimiters '@default': 'regexp' } }], ], - + + regexpModifiers: [ + [/[msixpodualngcer]+/, { token: 'regexp.modifier', next: '@popall' }], + ], + // Expanded quoted string // qqstring.. // open = open delimiter