Commit 99374285afe84f4da489f30505074e689cc7a8c3

Golmote 2017-10-22T15:04:13

NASM: Regexp optimisation and simplification + don't use captures if not needed

diff --git a/components/prism-nasm.js b/components/prism-nasm.js
index b47af8c..f3e6f11 100644
--- a/components/prism-nasm.js
+++ b/components/prism-nasm.js
@@ -1,24 +1,24 @@
 Prism.languages.nasm = {
 	'comment': /;.*$/m,
-	'string': /("|'|`)(\\?.)*?\1/m,
+	'string': /(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,
 	'label': {
 		pattern: /(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,
 		lookbehind: true,
 		alias: 'function'
 	},
 	'keyword': [
-		/\[?BITS (16|32|64)\]?/m,
+		/\[?BITS (?:16|32|64)\]?/,
 		{
-			pattern: /(^\s*)section\s*[a-zA-Z\.]+:?/im,
+			pattern: /(^\s*)section\s*[a-zA-Z.]+:?/im,
 			lookbehind: true
 		},
-		/(?:extern|global)[^;\r\n]*/im,
+		/(?:extern|global)[^;\r\n]*/i,
 		/(?:CPU|FLOAT|DEFAULT).*$/m
 	],
 	'register': {
-		pattern: /\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(bp|sp|si|di)|[cdefgs]s)\b/i,
+		pattern: /\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,
 		alias: 'variable'
 	},
-	'number': /(\b|-|(?=\$))(0[hx][\da-f]*\.?[\da-f]+(p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(\.?e[+-]?\d+)?[dt]?)\b/i,
+	'number': /(?:\b|-|(?=\$))(?:0[hx][\da-f]*\.?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(?:\.?e[+-]?\d+)?[dt]?)\b/i,
 	'operator': /[\[\]*+\-\/%<>=&|$!]/
 };
diff --git a/components/prism-nasm.min.js b/components/prism-nasm.min.js
index d117778..f2a06e2 100644
--- a/components/prism-nasm.min.js
+++ b/components/prism-nasm.min.js
@@ -1 +1 @@
-Prism.languages.nasm={comment:/;.*$/m,string:/("|'|`)(\\?.)*?\1/m,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (16|32|64)\]?/m,{pattern:/(^\s*)section\s*[a-zA-Z\.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/im,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(\b|-|(?=\$))(0[hx][\da-f]*\.?[\da-f]+(p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-\/%<>=&|$!]/};
\ No newline at end of file
+Prism.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-zA-Z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|-|(?=\$))(?:0[hx][\da-f]*\.?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-\/%<>=&|$!]/};
\ No newline at end of file