Skip to content

Commit 328f579

Browse files
Transfrom languages to use the base property (#3991)
* Transform actionscript * Transform arduino * Transform cilkcpp * Transform birb * Transform aspnet * Transform cilkc * Transform crystal * Transform d * Transform dart * Transform firestore-security-rules * Transform flow * Transform fsharp * Transform glsl * Transform gml * Transform go * Transform gradle * Transform groovy * Transform haxe * Transform hlsl * Transform idris * Transform java * Transform javascript * Transform jolie * Transform jsdoc * Transform json5 * Transform jsonp * Transform kotlin * Transform less * Transform markup * Transform mongodb * Transform n4js * Transform objectivec * Transform opencl * Transform phpdoc * Transform plsql * Transform processing * Transform protobuf * Transform purebasic * Transform purescript * Transform qore * Transform qsharp * Transform racket * Transform reason * Transform ruby * Transform sass * Transform scala * Transform scss * Transform solidity * Transform sparql * Transform sqf * Transform squirrel * Transform textile * Transform v * Transform vala * Transform vbnet * Transform velocity * Transform wiki * Transform xeora * Transform xquery * Transform bison * Transform c * Transform chaiscript * Transform javadoc * Transform markdown * Transform csharp * Transform parser
1 parent 90a9913 commit 328f579

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1233
-1347
lines changed

src/languages/actionscript.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,18 @@ import type { GrammarToken, LanguageProto } from '../types';
44

55
export default {
66
id: 'actionscript',
7-
require: javascript,
8-
grammar ({ extend }) {
9-
const actionscript = extend('javascript', {
10-
'keyword':
11-
/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,
12-
'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/,
13-
});
14-
15-
const className = actionscript['class-name'] as GrammarToken;
7+
base: javascript,
8+
grammar ({ base }) {
9+
const className = base['class-name'] as GrammarToken;
1610
className.alias = 'function';
1711

18-
delete actionscript['doc-comment'];
12+
delete base['doc-comment'];
1913

2014
// doesn't work with AS because AS is too complex
21-
delete actionscript['parameter'];
22-
delete actionscript['literal-property'];
15+
delete base['parameter'];
16+
delete base['literal-property'];
2317

24-
insertBefore(actionscript, 'string', {
18+
insertBefore(base, 'string', {
2519
'xml': {
2620
pattern:
2721
/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,
@@ -30,6 +24,10 @@ export default {
3024
},
3125
});
3226

33-
return actionscript;
27+
return {
28+
'keyword':
29+
/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,
30+
'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/,
31+
};
3432
},
3533
} as LanguageProto<'actionscript'>;

src/languages/arduino.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ import type { LanguageProto } from '../types';
33

44
export default {
55
id: 'arduino',
6-
require: cpp,
6+
base: cpp,
77
alias: 'ino',
8-
grammar ({ extend }) {
9-
return extend('cpp', {
8+
grammar () {
9+
return {
1010
'keyword':
1111
/\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/,
1212
'constant':
1313
/\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/,
1414
'builtin':
1515
/\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/,
16-
});
16+
};
1717
},
1818
} as LanguageProto<'arduino'>;

src/languages/aspnet.ts

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,43 @@ import type { Grammar, GrammarToken, LanguageProto } from '../types';
55

66
export default {
77
id: 'aspnet',
8-
require: [markup, csharp],
9-
grammar ({ extend }) {
10-
const pageDirectiveInside: Grammar = {
11-
'page-directive': {
12-
pattern:
13-
/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,
14-
alias: 'tag',
15-
},
16-
};
17-
18-
const aspnet = extend('markup', {
19-
'page-directive': {
20-
pattern: /<%\s*@.*%>/,
21-
alias: 'tag',
22-
inside: pageDirectiveInside,
23-
},
24-
'directive': {
25-
pattern: /<%.*%>/,
26-
alias: 'tag',
27-
inside: {
28-
'directive': {
29-
pattern: /<%\s*?[$=%#:]{0,2}|%>/,
30-
alias: 'tag',
31-
},
32-
$rest: 'csharp',
33-
} as unknown as Grammar,
8+
base: markup,
9+
require: csharp,
10+
grammar ({ base }) {
11+
const directive = {
12+
pattern: /<%.*%>/,
13+
alias: 'tag',
14+
inside: {
15+
'directive': {
16+
pattern: /<%\s*?[$=%#:]{0,2}|%>/,
17+
alias: 'tag',
18+
},
19+
$rest: 'csharp',
3420
},
35-
});
21+
} as unknown as GrammarToken;
3622

37-
const tag = aspnet['tag'] as GrammarToken & {
23+
const tag = base['tag'] as GrammarToken & {
3824
inside: { 'attr-value': { inside: Grammar } };
3925
};
40-
pageDirectiveInside.$rest = tag.inside;
4126

4227
// Regexp copied from markup, with a negative look-ahead added
4328
tag.pattern =
4429
/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/;
4530

4631
// match directives of attribute value foo="<% Bar %>"
4732
insertBefore(tag.inside['attr-value'].inside, 'punctuation', {
48-
'directive': aspnet['directive'],
33+
'directive': directive,
4934
});
5035

51-
insertBefore(aspnet, 'comment', {
36+
insertBefore(base, 'comment', {
5237
'asp-comment': {
5338
pattern: /<%--[\s\S]*?--%>/,
5439
alias: ['asp', 'comment'],
5540
},
5641
});
5742

5843
// script runat="server" contains csharp, not javascript
59-
insertBefore(aspnet, 'script' in aspnet ? 'script' : 'tag', {
44+
insertBefore(base, 'script' in base ? 'script' : 'tag', {
6045
'asp-script': {
6146
pattern: /(<script(?=.*runat=['"]?server\b)[^>]*>)[\s\S]*?(?=<\/script>)/i,
6247
lookbehind: true,
@@ -65,6 +50,20 @@ export default {
6550
},
6651
});
6752

68-
return aspnet;
53+
return {
54+
'page-directive': {
55+
pattern: /<%\s*@.*%>/,
56+
alias: 'tag',
57+
inside: {
58+
'page-directive': {
59+
pattern:
60+
/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,
61+
alias: 'tag',
62+
},
63+
$rest: tag.inside as Grammar['$rest'],
64+
},
65+
},
66+
'directive': directive,
67+
};
6968
},
7069
} as LanguageProto<'aspnet'>;

src/languages/birb.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,17 @@ import type { LanguageProto } from '../types';
44

55
export default {
66
id: 'birb',
7-
require: clike,
8-
grammar ({ extend }) {
9-
const birb = extend('clike', {
7+
base: clike,
8+
grammar ({ base }) {
9+
insertBefore(base, 'function', {
10+
'metadata': {
11+
pattern: /<\w+>/,
12+
greedy: true,
13+
alias: 'symbol',
14+
},
15+
});
16+
17+
return {
1018
'string': {
1119
pattern: /r?("|')(?:\\.|(?!\1)[^\\])*\1/,
1220
greedy: true,
@@ -21,16 +29,6 @@ export default {
2129
/\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/,
2230
'operator': /\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/,
2331
'variable': /\b[a-z_]\w*\b/,
24-
});
25-
26-
insertBefore(birb, 'function', {
27-
'metadata': {
28-
pattern: /<\w+>/,
29-
greedy: true,
30-
alias: 'symbol',
31-
},
32-
});
33-
34-
return birb;
32+
};
3533
},
3634
} as LanguageProto<'birb'>;

src/languages/bison.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@ import type { Grammar, LanguageProto } from '../types';
44

55
export default {
66
id: 'bison',
7-
require: c,
8-
grammar ({ extend, getLanguage }) {
9-
const c = getLanguage('c');
10-
const bison = extend('c', {});
11-
12-
insertBefore(bison, 'comment', {
7+
base: c,
8+
grammar ({ base }) {
9+
insertBefore(base, 'comment', {
1310
'bison': {
1411
// This should match all the beginning of the file
1512
// including the prologue(s), the bison declarations and
@@ -31,11 +28,11 @@ export default {
3128
'punctuation': /<|>/,
3229
},
3330
},
34-
$rest: c,
31+
$rest: 'c',
3532
} as unknown as Grammar,
3633
},
37-
'comment': c.comment,
38-
'string': c.string,
34+
'comment': base.comment,
35+
'string': base.string,
3936
'property': /\S+(?=:)/,
4037
'keyword': /%\w+/,
4138
'number': {
@@ -47,6 +44,6 @@ export default {
4744
},
4845
});
4946

50-
return bison;
47+
return {};
5148
},
5249
} as LanguageProto<'bison'>;

src/languages/c.ts

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,18 @@ import type { GrammarToken, LanguageProto } from '../types';
44

55
export default {
66
id: 'c',
7-
require: clike,
7+
base: clike,
88
optional: 'opencl-extensions',
9-
grammar ({ extend, getOptionalLanguage }) {
10-
const c = extend('clike', {
11-
'comment': {
12-
pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,
13-
greedy: true,
14-
},
15-
'string': {
16-
// https://en.cppreference.com/w/c/language/string_literal
17-
pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,
18-
greedy: true,
19-
},
20-
'class-name': {
21-
pattern:
22-
/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,
23-
lookbehind: true,
24-
},
25-
'keyword':
26-
/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,
27-
'function': /\b[a-z_]\w*(?=\s*\()/i,
28-
'number':
29-
/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,
30-
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,
31-
});
32-
33-
insertBefore(c, 'string', {
9+
grammar ({ base, getOptionalLanguage }) {
10+
insertBefore(base, 'string', {
3411
'char': {
3512
// https://en.cppreference.com/w/c/language/character_constant
3613
pattern: /'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,
3714
greedy: true,
3815
},
3916
});
4017

41-
insertBefore(c, 'string', {
18+
insertBefore(base, 'string', {
4219
'macro': {
4320
// allow for multiline macro definitions
4421
// spaces after the # character compile fine with gcc
@@ -54,10 +31,10 @@ export default {
5431
pattern: /^(#\s*include\s*)<[^>]+>/,
5532
lookbehind: true,
5633
},
57-
c['string'] as GrammarToken,
34+
base['string'] as GrammarToken,
5835
],
59-
'char': c['char'],
60-
'comment': c['comment'],
36+
'char': base['char'],
37+
'comment': base['comment'],
6138
'macro-name': [
6239
{
6340
pattern: /(^#\s*define\s+)\w+\b(?!\()/i,
@@ -79,27 +56,48 @@ export default {
7956
'punctuation': /##|\\(?=[\r\n])/,
8057
'expression': {
8158
pattern: /\S[\s\S]*/,
82-
inside: c,
59+
inside: 'c',
8360
},
8461
},
8562
},
8663
});
8764

88-
insertBefore(c, 'function', {
65+
insertBefore(base, 'function', {
8966
// highlight predefined macros as constants
9067
'constant':
9168
/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/,
9269
});
9370

94-
delete c['boolean'];
71+
delete base['boolean'];
9572

9673
/* OpenCL host API */
9774
const extensions = getOptionalLanguage('opencl-extensions');
9875
if (extensions) {
99-
insertBefore(c, 'keyword', extensions);
100-
delete c['type-opencl-host-cpp'];
76+
insertBefore(base, 'keyword', extensions);
77+
delete base['type-opencl-host-cpp'];
10178
}
10279

103-
return c;
80+
return {
81+
'comment': {
82+
pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,
83+
greedy: true,
84+
},
85+
'string': {
86+
// https://en.cppreference.com/w/c/language/string_literal
87+
pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,
88+
greedy: true,
89+
},
90+
'class-name': {
91+
pattern:
92+
/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,
93+
lookbehind: true,
94+
},
95+
'keyword':
96+
/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,
97+
'function': /\b[a-z_]\w*(?=\s*\()/i,
98+
'number':
99+
/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,
100+
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,
101+
};
104102
},
105103
} as LanguageProto<'c'>;

0 commit comments

Comments
 (0)