{ "name": "Modula-3", "scopeName": "source.modula-3", "patterns": [ { "name": "keyword.modula-3", "match": "\\b(AND|ANY|ARRAY|AS|BEGIN|BITS|BRANDED|BY|CASE|CONST|DIV|DO|ELSE|ELSIF|END|EVAL|EXCEPT|EXCEPTION|EXIT|EXPORTS|FINALLY|FOR|FROM|GENERIC|IF|IMPORT|IN|INTERFACE|LOCK|LOOP|METHODS|MOD|MODULE|NOT|OBJECT|OF|OR|OVERRIDES|PROCEDURE|RAISE|RAISES|READONLY|RECORD|REF|REPEAT|RETURN|REVEAL|SET|THEN|TO|TRY|TYPE|TYPECASE|UNSAFE|UNTIL|UNTRACED|VALUE|VAR|WHILE|WITH)\\b" }, { "name": "constant.language.modula-3", "match": "\\b(ABS|ADDRESS|ADR|ADRSIZE|ANY|BITSIZE|BOOLEAN|BYTESIZE|CARDINAL|CEILING|CHAR|DEC|DISPOSE|EXTENDED|FALSE|FIRST|FLOAT|FLOOR|INC|INTEGER|ISTYPE|LAST|LONGREAL|LOOPHOLE|MAX|MIN|MUTEX|NARROW|NEW|NIL|NULL|NUMBER|ORD|REAL|REF|REFANY|ROOT|ROUND|SUBARRAY|TEXT|TRUE|TRUNC|TYPECODE|VAL)\\b" }, { "name": "constant.language.cm3_specific.modula-3", "match": "\\b(LONGCARD|LONGINT)\\b" }, { "name": "constant.numeric.float.modula-3", "match": "(\\b|[\\+\\-])[0-9]+\\.[0-9]+([DdEeXx][\\+\\-]?[0-9]+)?\\b" }, { "name": "constant.numeric.integer.modula-3", "match": "(\\b|[\\+\\-])[0-9]+(\\_[0-9a-fA-F]+)?L?\\b" }, { "name": "string.quoted.double.modula-3", "begin": "\"", "end": "\"", "patterns": [ { "include": "#escape_sequence" } ] }, { "name": "string.quoted.single.modula-3", "begin": "'", "end": "'", "patterns": [ { "include": "#escape_sequence" } ] }, { "include": "#comment" }, { "include": "#pragma" } ], "repository": { "comment": { "name": "comment.block.modula-3", "begin": "\\(\\*", "end": "\\*\\)", "patterns": [ { "include": "#comment" } ] }, "escape_sequence": { "name": "constant.character.escape.modula-3", "match": "\\\\[0-7]{3}|\\\\[\\\\fnrt\\\"\\']" }, "pragma": { "name": "keyword.control.directive.pragma.modula-3", "begin": "\\\u003c\\*", "end": "\\*\\\u003e", "patterns": [ { "include": "#pragma" } ] } } }