Skip to content

Commit 1103a01

Browse files
committed
refactor: port every lexemes usage
Replaced all existing uses of lexemes to use $pattern. In case lexemes were not actually used those were removed. I verified those still work in some code sample (see attached image).
1 parent a7f7c19 commit 1103a01

File tree

2 files changed

+10
-23
lines changed

2 files changed

+10
-23
lines changed

src/common.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ var SOL_NUMBER = {
3535
relevance: 0,
3636
};
3737

38+
//in assembly, identifiers can contain periods (but may not start with them)
39+
var SOL_ASSEMBLY_LEXEMES_RE = /[A-Za-z_$][A-Za-z_$0-9.]*/;
40+
3841
var SOL_ASSEMBLY_KEYWORDS = {
42+
$pattern: SOL_ASSEMBLY_LEXEMES_RE,
3943
keyword:
4044
'assembly ' +
4145
'let function ' +
@@ -97,13 +101,9 @@ function baseAssembly(hljs) {
97101
var SOL_APOS_STRING_MODE = solAposStringMode(hljs);
98102
var SOL_QUOTE_STRING_MODE = solQuoteStringMode(hljs);
99103

100-
//in assembly, identifiers can contain periods (but may not start with them)
101-
var SOL_ASSEMBLY_LEXEMES_RE = /[A-Za-z_$][A-Za-z_$0-9.]*/;
102-
103104
var SOL_ASSEMBLY_TITLE_MODE =
104105
hljs.inherit(hljs.TITLE_MODE, {
105106
begin: /[A-Za-z$_][0-9A-Za-z$_]*/,
106-
lexemes: SOL_ASSEMBLY_LEXEMES_RE,
107107
keywords: SOL_ASSEMBLY_KEYWORDS
108108
});
109109

@@ -112,7 +112,6 @@ function baseAssembly(hljs) {
112112
begin: /\(/, end: /\)/,
113113
excludeBegin: true,
114114
excludeEnd: true,
115-
lexemes: SOL_ASSEMBLY_LEXEMES_RE,
116115
keywords: SOL_ASSEMBLY_KEYWORDS,
117116
contains: [
118117
hljs.C_LINE_COMMENT_MODE,
@@ -132,7 +131,6 @@ function baseAssembly(hljs) {
132131

133132
return {
134133
keywords: SOL_ASSEMBLY_KEYWORDS,
135-
lexemes: SOL_ASSEMBLY_LEXEMES_RE,
136134
contains: [
137135
SOL_APOS_STRING_MODE,
138136
SOL_QUOTE_STRING_MODE,
@@ -144,7 +142,6 @@ function baseAssembly(hljs) {
144142
SOL_ASSEMBLY_OPERATORS,
145143
{ // functions
146144
className: 'function',
147-
lexemes: SOL_ASSEMBLY_LEXEMES_RE,
148145
beginKeywords: 'function', end: '{', excludeEnd: true,
149146
contains: [
150147
SOL_ASSEMBLY_TITLE_MODE,

src/languages/solidity.js

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ function hljsDefineSolidity(hljs) {
5959
var ufixedTypes = sizePrecisionPairs.map(function(pair) { return 'ufixed' + pair });
6060
var ufixedTypesString = ufixedTypes.join(' ') + ' ';
6161

62+
var SOL_LEXEMES_RE = /[A-Za-z_$][A-Za-z_$0-9]*/;
63+
6264
var SOL_KEYWORDS = {
65+
$pattern: SOL_LEXEMES_RE,
6366
keyword:
6467
'var bool string ' +
6568
'int uint ' + intTypesString + uintTypesString +
@@ -106,14 +109,11 @@ function hljsDefineSolidity(hljs) {
106109
begin: /[+\-!~*\/%<>&^|=]/ //excluding ?: because having : as operator causes problems
107110
};
108111

109-
var SOL_LEXEMES_RE = /[A-Za-z_$][A-Za-z_$0-9]*/;
110-
111112
var SOL_FUNC_PARAMS = {
112113
className: 'params',
113114
begin: /\(/, end: /\)/,
114115
excludeBegin: true,
115116
excludeEnd: true,
116-
lexemes: SOL_LEXEMES_RE,
117117
keywords: SOL_KEYWORDS,
118118
contains: [
119119
hljs.C_LINE_COMMENT_MODE,
@@ -143,7 +143,6 @@ function hljsDefineSolidity(hljs) {
143143
var SOL_TITLE_MODE =
144144
hljs.inherit(hljs.TITLE_MODE, {
145145
begin: /[A-Za-z$_][0-9A-Za-z$_]*/,
146-
lexemes: SOL_LEXEMES_RE,
147146
keywords: SOL_KEYWORDS
148147
});
149148

@@ -161,7 +160,6 @@ function hljsDefineSolidity(hljs) {
161160
end: /[^A-Za-z0-9$_\.]/,
162161
excludeBegin: false,
163162
excludeEnd: true,
164-
lexemes: SOL_LEXEMES_RE,
165163
keywords: {
166164
built_in: obj + ' ' + props,
167165
},
@@ -209,10 +207,7 @@ function hljsDefineSolidity(hljs) {
209207

210208
return {
211209
aliases: ['sol'],
212-
keywords: {
213-
...SOL_KEYWORDS,
214-
$pattern: SOL_LEXEMES_RE
215-
},
210+
keywords: SOL_KEYWORDS,
216211
contains: [
217212
// basic literal definitions
218213
SOL_APOS_STRING_MODE,
@@ -226,7 +221,6 @@ function hljsDefineSolidity(hljs) {
226221
SOL_OPERATORS,
227222
{ // functions
228223
className: 'function',
229-
lexemes: SOL_LEXEMES_RE,
230224
beginKeywords: 'function modifier event constructor fallback receive error', end: /[{;]/, excludeEnd: true,
231225
contains: [
232226
SOL_TITLE_MODE,
@@ -247,11 +241,10 @@ function hljsDefineSolidity(hljs) {
247241
SOL_RESERVED_MEMBERS,
248242
{ // contracts & libraries & interfaces
249243
className: 'class',
250-
lexemes: SOL_LEXEMES_RE,
251244
beginKeywords: 'contract interface library', end: '{', excludeEnd: true,
252245
illegal: /[:"\[\]]/,
253246
contains: [
254-
{ beginKeywords: 'is', lexemes: SOL_LEXEMES_RE },
247+
{ beginKeywords: 'is' },
255248
SOL_TITLE_MODE,
256249
SOL_FUNC_PARAMS,
257250
SOL_SPECIAL_PARAMETERS,
@@ -260,7 +253,6 @@ function hljsDefineSolidity(hljs) {
260253
]
261254
},
262255
{ // structs & enums
263-
lexemes: SOL_LEXEMES_RE,
264256
beginKeywords: 'struct enum', end: '{', excludeEnd: true,
265257
illegal: /[:"\[\]]/,
266258
contains: [
@@ -271,7 +263,6 @@ function hljsDefineSolidity(hljs) {
271263
},
272264
{ // imports
273265
beginKeywords: 'import', end: ';',
274-
lexemes: SOL_LEXEMES_RE,
275266
keywords: 'import from as',
276267
contains: [
277268
SOL_TITLE_MODE,
@@ -286,7 +277,6 @@ function hljsDefineSolidity(hljs) {
286277
},
287278
{ // using
288279
beginKeywords: 'using', end: ';',
289-
lexemes: SOL_LEXEMES_RE,
290280
keywords: 'using for global',
291281
contains: [
292282
SOL_TITLE_MODE,
@@ -298,8 +288,8 @@ function hljsDefineSolidity(hljs) {
298288
{ // pragmas
299289
className: 'meta',
300290
beginKeywords: 'pragma', end: ';',
301-
lexemes: SOL_LEXEMES_RE,
302291
keywords: {
292+
$pattern: SOL_LEXEMES_RE,
303293
keyword: 'pragma solidity experimental abicoder',
304294
built_in: 'ABIEncoderV2 SMTChecker v1 v2'
305295
},

0 commit comments

Comments
 (0)