Skip to content

Commit 84d7ff9

Browse files
Split (and fix) the different variable types
1 parent 56e52e0 commit 84d7ff9

7 files changed

Lines changed: 69 additions & 39 deletions

File tree

src/languages/magik.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,32 @@ export default {
3232
lookbehind: true
3333
},
3434

35+
'global-reference': [
36+
{ pattern: /@(?:[a-z_]\w*:)?\|[^|]*\|/i, alias: 'symbol' }, // @|name| or @prefix:|name|
37+
{ pattern: /@(?:[a-z_]\w*:)?[a-z_]\w*/i, alias: 'symbol' }, // @name or @prefix:name
38+
],
39+
40+
'dynamic-variable': [
41+
{ pattern: /\|![\w?!]+!\|/, alias: 'variable' }, // variable encased like |!var!|
42+
{ pattern: /\|![\w?!]+\|!/, alias: 'variable' }, // variable encased like |!var|!
43+
{ pattern: /!\|[\w?!]+\|!/, alias: 'variable' }, // variable encased like !|var!|
44+
{ pattern: /!\|\|!/, alias: 'variable' }, // empty variable !||!
45+
{ pattern: /[a-z_]+:![a-z][\w?!]*!/, alias: 'variable' }, // variable with a prefix like sw:!var!
46+
{ pattern: /![a-z][\w?!]*!/, alias: 'variable' }, // variable encased like !var!
47+
],
48+
49+
'global-variable': [
50+
{ pattern: /\b[a-z_]+:\w+\b/i, alias: 'variable' }, // variable with a prefix like sw:gis_program_manager
51+
{ pattern: /[a-z_]+:\|\w+\|/i, alias: 'variable' }, // variable with a prefix like sw:|gis_program_manager|
52+
],
53+
54+
'declaration': [
55+
{ pattern: /(\b_package\s+).*/i, lookbehind: true },
56+
{ pattern: /(\b_global\s+)(?!_)\w+/i, lookbehind: true },
57+
{ pattern: /(\b_constant\s+)(?!_)\w+/i, lookbehind: true },
58+
{ pattern: /(\b_local\s+)(?!_)\w+/i, lookbehind: true }
59+
],
60+
3561
'number': /(?<!\|)\b\d+(?:\.\d+)?(?:[e&][+-]?\d+)?\b|\b(?:[2-9]|[12]\d|3[0-6])r[a-z0-9]+\b/i,
3662

3763
'operator': [
@@ -46,13 +72,6 @@ export default {
4672
{ pattern: /\b_(?:div|mod)\b/i, alias: 'keyword' } // math
4773
],
4874

49-
'declaration': [
50-
{ pattern: /(\b_package\s+).*/i, lookbehind: true },
51-
{ pattern: /(\b_global\s+)(?!_)\w+/i, lookbehind: true },
52-
{ pattern: /(\b_constant\s+)(?!_)\w+/i, lookbehind: true },
53-
{ pattern: /(\b_local\s+)(?!_)\w+/i, lookbehind: true }
54-
],
55-
5675
'keyword-variable': {
5776
pattern: /\b_(?:class|dynamic|global|import|local)\b/i,
5877
alias: 'keyword'
@@ -96,11 +115,6 @@ export default {
96115
alias: 'symbol'
97116
},
98117

99-
'global-reference': {
100-
pattern: /@(?:[a-z_]\w*:)?[a-z_]\w*/i,
101-
alias: 'symbol'
102-
},
103-
104118
'self': [
105119
{
106120
pattern: /(\b_method\s+)\S+(?=\.)/,
@@ -117,14 +131,8 @@ export default {
117131
],
118132

119133
'variable': [
120-
/\|![\w?!]+!\|/, // variable encased like |!var!|
121-
/\|![\w?!]+\|!/, // variable encased like |!var|!
122-
/!\|[\w?!]+\|!/, // variable encased like !|var!|
123-
/!\|\|!/, // empty variable !||!
124134
/\|[\w?!]+\|/, // variable encased like |var|, |0|, |123|
125-
/![a-z][\w?!]*!/, // variable encased like !var!
126-
/\b[a-z_]+:\w+\b/i, // variable with a prefix like sw:gis_program_manager
127135
{ pattern: /(^|[^.])\b[a-z]\w*\b/i, lookbehind: true }
128-
],
136+
]
129137
}
130138
};

tests/languages/magik/constant_feature.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ _global _constant gis_program_manager << _unset
1616
["constant", "_constant"], ["keyword-variable", "_local"], ["declaration", "max_size"], ["operator", "<<"], ["number", "1"],
1717
["keyword-variable", "_local"], ["constant", "_constant"], ["declaration", "max_size"], ["operator", "<<"], ["number", "1"],
1818
["keyword", "_endblock"],
19-
["keyword-variable", "_global"], ["constant", "_constant"], ["variable", "!current_view!"], ["operator", "<<"], ["unset", "_unset"],
19+
["keyword-variable", "_global"], ["constant", "_constant"], ["dynamic-variable", "!current_view!"], ["operator", "<<"], ["unset", "_unset"],
2020
["keyword-variable", "_global"], ["constant", "_constant"], ["declaration", "gis_program_manager"], ["operator", "<<"], ["unset", "_unset"]
2121
]
2222

tests/languages/magik/declaration_feature.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ _global _constant !done_meas_follow_nodes! << _unset
1111
["keyword-variable", "_global"], ["declaration", "some_var"],
1212
["keyword-variable", "_global"], ["declaration", "some_var"], ["punctuation", ";"], ["variable", "some_var"], ["operator", "<<"], ["number", "1"],
1313
["constant", "_constant"], ["declaration", "yippie"], ["operator", "<<"], ["number", "2"],
14-
["keyword-variable", "_global"], ["constant", "_constant"], ["variable", "!done_meas_follow_nodes!"], ["operator", "<<"], ["unset", "_unset"]
14+
["keyword-variable", "_global"], ["constant", "_constant"], ["dynamic-variable", "!done_meas_follow_nodes!"], ["operator", "<<"], ["unset", "_unset"]
1515
]
1616

1717
----------------------------------------------------
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
!terminal!
2+
sw:!terminal!
3+
|!terminal!|
4+
|!terminal|!
5+
!|terminal|!
6+
!||!
7+
8+
----------------------------------------------------
9+
10+
[
11+
["dynamic-variable", "!terminal!"],
12+
["dynamic-variable", "sw:!terminal!"],
13+
["dynamic-variable", "|!terminal!|"],
14+
["dynamic-variable", "|!terminal|!"],
15+
["dynamic-variable", "!|terminal|!"],
16+
["dynamic-variable", "!||!"]
17+
]
18+
19+
----------------------------------------------------
20+
21+
Checks for dynamic variables.

tests/languages/magik/global-reference_feature.test

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
@gis_program_manager
2-
(@gis_program_manager)
3-
{@gis_program_manager}
4-
,@gis_program_manager
2+
@|gis_program_manager|
3+
@sw:gis_program_manager
4+
@sw:|gis_program_manager|
55

66
----------------------------------------------------
77

88
[
99
["global-reference", "@gis_program_manager"],
10-
["punctuation", "("], ["global-reference", "@gis_program_manager"], ["punctuation", ")"],
11-
["punctuation", "{"], ["global-reference", "@gis_program_manager"], ["punctuation", "}"],
12-
["punctuation", ","], ["global-reference", "@gis_program_manager"]
10+
["global-reference", "@|gis_program_manager|"],
11+
["global-reference", "@sw:gis_program_manager"],
12+
["global-reference", "@sw:|gis_program_manager|"]
1313
]
1414

1515
----------------------------------------------------
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
sw:gis_program_manager
2+
sw:|gis_program_manager|
3+
4+
----------------------------------------------------
5+
6+
[
7+
["global-variable", "sw:gis_program_manager"],
8+
["global-variable", "sw:|gis_program_manager|"]
9+
]
10+
11+
----------------------------------------------------
12+
13+
Checks for global variables.

tests/languages/magik/variable_feature.test

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
!terminal!
2-
|!terminal!|
3-
|!terminal|!
4-
!|terminal|!
5-
!||!
6-
sw:gis_program_manager
71
a_name
82
anotherName
93
some_var
@@ -16,12 +10,6 @@ coords3d_rope.new_with(coordinate3d.new(0, 0, 0), coordinate3d.new(10, 10, 10))
1610
----------------------------------------------------
1711

1812
[
19-
["variable", "!terminal!"],
20-
["variable", "|!terminal!|"],
21-
["variable", "|!terminal|!"],
22-
["variable", "!|terminal|!"],
23-
["variable", "!||!"],
24-
["variable", "sw:gis_program_manager"],
2513
["variable", "a_name"],
2614
["variable", "anotherName"],
2715
["variable", "some_var"],

0 commit comments

Comments
 (0)