Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 1 | // Copyright (c) 2021, Compiler Explorer Authors |
| 2 | // All rights reserved. |
| 3 | // |
| 4 | // Redistribution and use in source and binary forms, with or without |
| 5 | // modification, are permitted provided that the following conditions are met: |
| 6 | // |
| 7 | // * Redistributions of source code must retain the above copyright notice, |
| 8 | // this list of conditions and the following disclaimer. |
| 9 | // * Redistributions in binary form must reproduce the above copyright |
| 10 | // notice, this list of conditions and the following disclaimer in the |
| 11 | // documentation and/or other materials provided with the distribution. |
| 12 | // |
| 13 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| 14 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 15 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| 16 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| 17 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| 18 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| 19 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| 20 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| 21 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 22 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 23 | // POSSIBILITY OF SUCH DAMAGE. |
| 24 | |
Jeremy Rifkin | 59f8c45 | 2023-01-13 19:54:26 -0500 | [diff] [blame] | 25 | import * as monaco from 'monaco-editor'; |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 26 | |
Jeremy Rifkin | 59f8c45 | 2023-01-13 19:54:26 -0500 | [diff] [blame] | 27 | function definition(): monaco.languages.IMonarchLanguage { |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 28 | return { |
| 29 | tokenizer: { |
| 30 | root: [ |
| 31 | [/^(\| )*==.*$/, 'comment'], |
| 32 | [/^(\| )*catch type.*$/, 'comment'], |
| 33 | [/^(\| )*local table.*$/, 'comment'], |
| 34 | [/^(\| )*\[\s*\d+\].*$/, 'comment'], |
| 35 | [/^(\| )*\|-+$/, 'comment'], |
Jeremy Rifkin | 59f8c45 | 2023-01-13 19:54:26 -0500 | [diff] [blame] | 36 | [/^((?:\| )*)(\d+)/, ['comment', 'number'], '@opcode'], |
| 37 | [/^((?:\| )*)(\d+)(\s+)/, ['comment', 'number'], '@opcode'], |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 38 | ], |
| 39 | |
| 40 | opcode: [ |
Mats Larsen | 4f9a34c | 2022-04-24 19:11:48 +0200 | [diff] [blame] | 41 | [/[a-z_]\w*\s*$/, {token: 'keyword', next: '@root'}], |
Jeremy Rifkin | 59f8c45 | 2023-01-13 19:54:26 -0500 | [diff] [blame] | 42 | [/([a-z_]\w*)(\s+)/, 'keyword', '@arguments'], |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 43 | ], |
| 44 | |
| 45 | arguments: [ |
Jeremy Rifkin | 59f8c45 | 2023-01-13 19:54:26 -0500 | [diff] [blame] | 46 | [/(.*?)(\(\s*\d+\)(?:\[[^\]]+\])?)$/, {token: 'comment', next: '@root'}], |
Mats Larsen | 4f9a34c | 2022-04-24 19:11:48 +0200 | [diff] [blame] | 47 | [/.*$/, {token: '', next: '@root'}], |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 48 | ], |
| 49 | }, |
| 50 | }; |
| 51 | } |
| 52 | |
Rubén Rincón Blanco | 42c7b2b | 2022-02-03 18:04:50 +0100 | [diff] [blame] | 53 | const def = definition(); |
Mats Larsen | 4f9a34c | 2022-04-24 19:11:48 +0200 | [diff] [blame] | 54 | monaco.languages.register({id: 'asmruby'}); |
Quinton Miller | 7e1835f | 2021-07-31 04:29:37 +0800 | [diff] [blame] | 55 | monaco.languages.setMonarchTokensProvider('asmruby', def); |
| 56 | |
Mats Larsen | 9904a6e | 2021-10-12 16:11:56 +0200 | [diff] [blame] | 57 | export = def; |