PrismJS / prism

Lightweight, robust, elegant syntax highlighting.
https://prismjs.com
MIT License
12.25k stars 1.29k forks source link

New language request for ASN1.0 #3538

Open montery8 opened 2 years ago

montery8 commented 2 years ago

Language ASN.1 is a computer language designed by the CCITT/ITU for the specification of data types and values, especially in communication protocols.

Additional resources https://www.3gpp.org/specifications/61-asn-1

cederberg commented 1 year ago

Try this syntax definition. Adapted from the Mibble asn1.grammar source code.

Prism.languages.asn1 = {
    'comment': /--(-?[^\-\n\r])*(--|-?[\n\r])/,
    'string': /"([^"]|"")*"/,
    'keyword': /DEFINITIONS|EXPLICIT|IMPLICIT|TAGS|BEGIN|END|EXPORTS|IMPORTS|FROM|MACRO|INTEGER|REAL|BOOLEAN|NULL|BIT|OCTET|STRING|ENUMERATED|SEQUENCE|SET|OF|CHOICE|UNIVERSAL|APPLICATION|PRIVATE|ANY|DEFINED|BY|OBJECT(S|-IDENTITY|-TYPE|-GROUP)?|IDENTIFIER|INCLUDES|MIN(-ACCESS)?|MAX(-ACCESS)?|SIZE|WITH|COMPONENT|COMPONENTS|PRESENT|ABSENT|OPTIONAL|DEFAULT|TRUE|FALSE|PLUS-INFINITY|MINUS-INFINITY|NOTIFICATION-TYPE|TRAP-TYPE|TEXTUAL-CONVENTION|NOTIFICATION-GROUP|AGENT-CAPABILITIES|LAST-UPDATED|ORGANIZATION|CONTACT-INFO|DESCRIPTION|REVISION|STATUS|REFERENCE|SYNTAX|BITS|UNITS|ACCESS|INDEX|AUGMENTS|IMPLIED|DEFVAL|ENTERPRISE|VARIABLES|DISPLAY-HINT|NOTIFICATIONS|MODULE(-IDENTITY|-COMPLIANCE)?|MANDATORY-GROUPS|GROUP|WRITE-SYNTAX|PRODUCT-RELEASE|SUPPORTS|VARIATION|CREATION-REQUIRES/,
    'symbol': /[a-zA-Z][a-zA-Z0-9-_]*/,
    'number': [
        /[0-9]+/,
        /'[0-1]+'b/i,
        /'[0-9a-f]+'h/i
    ],
    'operator': /\.{1,3}|[,;(){}[\]\-<|]|::=/
};