Constant tree_sitter_mozcpp::GRAMMAR[][src]

pub const GRAMMAR: &str = "const CPP = require(\"./tree-sitter-cpp/grammar.js\")\n\nmodule.exports = grammar(CPP, {\n  name: \'cpp\',\n\n  rules: {\n\n    _top_level_item: ($, original) => choice(\n      $.alone_macro,\n      $.alone_macro_call,\n      original,\n    ),\n\n    _field_declaration_list_item: ($, original) => choice(\n      original,\n      $.macro_statement,\n    ),\n\n    operator_name: $ => token(seq(\n      \'operator\',\n      /\\s*/,\n      choice(\n        \'+\', \'-\', \'*\', \'/\', \'%\',\n        \'^\', \'&\', \'|\', \'~\',\n        \'!\', \'=\', \'<\', \'>\',\n        \'+=\', \'-=\', \'*=\', \'/=\', \'%=\', \'^=\', \'&=\', \'|=\',\n        \'<<\', \'>>\', \'>>=\', \'<<=\',\n        \'==\', \'!=\', \'<=\', \'>=\',\n        \'&&\', \'||\',\n        \'++\', \'--\',\n        \',\',\n        \'->*\',\n        \'->\',\n        \'()\', \'[]\',\n        \'new\', \'delete\',\n        \'new[]\', \'delete[]\',\n      )\n    )),\n    \n    alone_macro: $ => /[_A-Z][_A-Z0-9]+\\s*\\n/,\n    alone_macro_call: $ => seq(\n      /[_A-Z][_A-Z0-9]+/,\n      \'(\',\n      optional(seq(/[_A-Z][_A-Z0-9]+/, repeat(seq(\',\', /[_A-Z][_A-Z0-9]+/)))),\n      \')\',\n      \'\\n\',\n    ),\n\n    class_specifier: $ => prec.right(seq(\n      \'class\',\n      repeat($.macro_annotation),\n      choice(\n        field(\'name\', $._class_name),\n        seq(\n          optional(field(\'name\', $._class_name)),\n          optional($.virtual_specifier),\n          optional($.base_class_clause),\n          field(\'body\', $.field_declaration_list)\n        )\n      )\n    )),\n\n    struct_specifier: $ => prec.right(seq(\n      \'struct\',\n      optional($.macro_annotation),\n      choice(\n        field(\'name\', $._class_name),\n        seq(\n          optional(field(\'name\', $._class_name)),\n          optional($.virtual_specifier),\n          optional($.base_class_clause),\n          field(\'body\', $.field_declaration_list)\n        )\n      )\n    )),\n\n    parameter_list: ($, original) => seq(\n      original,\n      optional($.macro_annotation),\n    ),\n\n    storage_class_specifier: ($, original) => choice(\n      original,\n      $.macro_annotation,\n    ),\n\n    call_expression: ($, original) => choice(\n      original,\n      $._call_macro_with_decl_first_arg,\n    ),\n\n    _call_macro_with_decl_first_arg: $ => seq(\n      field(\'function\', choice(\n        \'CACHE_TRY_INSPECT\',\n        \'CACHE_TRY_UNWRAP\',\n        \'FORWARD\',\n        \'FORWARD_SET_ATTRIBUTE\',\n        \'IDB_TRY_INSPECT\',\n        \'IDB_TRY_UNWRAP\',\n        \'LS_TRY_INSPECT\',\n        \'LS_TRY_UNWRAP\',\n        \'SDB_TRY_INSPECT\',\n        \'SDB_TRY_UNWRAP\',\n        \'PS_GET\',\n        \'PS_GET_AND_SET\',\n        \'PS_GET_LOCKLESS\',\n        \'QM_TRY_INSPECT\',\n        \'QM_NOTEONLY_TRY_UNWRAP\',\n        \'QM_TRY_UNWRAP\',\n        \'QM_WARNONLY_TRY_UNWRAP\',\n      )),\n      field(\'arguments\', seq(\n        \'(\',\n        $.parameter_declaration,\n        \',\',\n        commaSep(choice($._expression, $.initializer_list)),\n        \')\',\n      )),\n    ),\n\n    macro_statement: $ => choice(\n      \'MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER\'\n    ),\n    \n    macro_annotation: $ => choice(\n      \'MOZ_ALLOCATOR\',\n      \'MOZ_ALLOW_TEMPORARY\',\n      \'MOZ_ALWAYS_INLINE\',\n      \'MOZ_ALWAYS_INLINE_EVEN_DEBUG\',\n      \'MOZ_ASAN_BLACKLIST\',\n      \'MOZ_CAN_RUN_SCRIPT\',\n      \'MOZ_CAN_RUN_SCRIPT_BOUNDARY\',\n      \'MOZ_CAN_RUN_SCRIPT_FOR_DEFINITION\',\n      \'MOZ_COLD\',\n      \'MOZ_FALLTHROUGH\',\n      \'MOZ_FORMAT_PRINTF\',\n      \'MOZ_HAVE_ANALYZER_NORETURN\',\n      \'MOZ_HAVE_ASAN_BLACKLIST\',\n      \'MOZ_HAVE_NEVER_INLINE\',\n      \'MOZ_HAVE_NORETURN\',\n      \'MOZ_HAVE_NORETURN_PTR\',\n      \'MOZ_HAVE_NO_SANITIZE_ATTR\',\n      \'MOZ_HAVE_SIGNED_OVERFLOW_SANITIZE_ATTR\',\n      \'MOZ_HAVE_UNSIGNED_OVERFLOW_SANITIZE_ATTR\',\n      \'MOZ_HEAP_ALLOCATOR\',\n      \'MOZ_HEAP_CLASS\',\n      \'MOZ_IMPLICIT\',\n      \'MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS\',\n      \'MOZ_INIT_OUTSIDE_CTOR\',\n      \'MOZ_IS_CLASS_INIT\',\n      \'MOZ_IS_REFPTR\',\n      \'MOZ_IS_SMARTPTR_TO_REFCOUNTED\',\n      \'MOZ_MAYBE_UNUSED\',\n      \'MOZ_MAY_CALL_AFTER_MUST_RETURN\',\n      \'MOZ_MUST_OVERRIDE\',\n      \'MOZ_MUST_RETURN_FROM_CALLER_IF_THIS_IS_ARG\',\n      \'MOZ_MUST_USE\',\n      \'MOZ_MUST_USE_TYPE\',\n      \'MOZ_NEEDS_MEMMOVABLE_MEMBERS\',\n      \'MOZ_NEEDS_MEMMOVABLE_TYPE\',\n      \'MOZ_NEEDS_NO_VTABLE_TYPE\',\n      \'MOZ_NEVER_INLINE\',\n      \'MOZ_NEVER_INLINE_DEBUG\',\n      \'MOZ_NONHEAP_CLASS\',\n      \'MOZ_NONNULL\',\n      \'MOZ_NONNULL_RETURN\',\n      \'MOZ_NON_AUTOABLE\',\n      \'MOZ_NON_MEMMOVABLE\',\n      \'MOZ_NON_OWNING_REF\',\n      \'MOZ_NON_PARAM\',\n      \'MOZ_NON_TEMPORARY_CLASS\',\n      \'MOZ_NORETURN\',\n      \'MOZ_NORETURN_PTR\',\n      \'MOZ_NO_ADDREF_RELEASE_ON_RETURN\',\n      \'MOZ_NO_ARITHMETIC_EXPR_IN_ARGUMENT\',\n      \'MOZ_NO_DANGLING_ON_TEMPORARIES\',\n      \'MOZ_NO_SANITIZE_SIGNED_OVERFLOW\',\n      \'MOZ_NO_SANITIZE_UNSIGNED_OVERFLOW\',\n      \'MOZ_ONLY_USED_TO_AVOID_STATIC_CONSTRUCTORS\',\n      \'MOZ_OWNING_REF\',\n      \'MOZ_POP_DISABLE_NONTRIVIAL_UNION_WARNINGS\',\n      \'MOZ_PRETEND_NORETURN_FOR_STATIC_ANALYSIS\',\n      \'MOZ_PUSH_DISABLE_NONTRIVIAL_UNION_WARNINGS\',\n      \'MOZ_RAII\',\n      \'MOZ_REQUIRED_BASE_METHOD\',\n      \'MOZ_STACK_CLASS\',\n      \'MOZ_STATIC_CLASS\',\n      \'MOZ_STATIC_LOCAL_CLASS\',\n      \'MOZ_TEMPORARY_CLASS\',\n      \'MOZ_TRIVIAL_CTOR_DTOR\',\n      \'MOZ_TSAN_BLACKLIST\',\n      \'MOZ_UNSAFE_REF\',\n      \'MOZ_XPCOM_ABI\',\n      \'JS_PUBLIC_API\',\n    ),\n\n    primitive_type: $ => token(choice(\n      \'APIENTRY\',\n      \'ATOM\',\n      \'BOOL\',\n      \'BOOLEAN\',\n      \'BYTE\',\n      \'CCHAR\',\n      \'CHAR\',\n      \'COLORREF\',\n      \'DWORD\',\n      \'DWORDLONG\',\n      \'DWORD_PTR\',\n      \'DWORD32\',\n      \'DWORD64\',\n      \'FLOAT\',\n      \'HACCEL\',\n      \'HALF_PTR\',\n      \'HANDLE\',\n      \'HBITMAP\',\n      \'HBRUSH\',\n      \'HCOLORSPACE\',\n      \'HCONV\',\n      \'HCONVLIST\',\n      \'HCURSOR\',\n      \'HDC\',\n      \'HDDEDATA\',\n      \'HDESK\',\n      \'HDROP\',\n      \'HDWP\',\n      \'HENHMETAFILE\',\n      \'HFILE\',\n      \'HFONT\',\n      \'HGDIOBJ\',\n      \'HGLOBAL\',\n      \'HHOOK\',\n      \'HICON\',\n      \'HINSTANCE\',\n      \'HKEY\',\n      \'HKL\',\n      \'HLOCAL\',\n      \'HMENU\',\n      \'HMETAFILE\',\n      \'HMODULE\',\n      \'HMONITOR\',\n      \'HPALETTE\',\n      \'HPEN\',\n      \'HRESULT\',\n      \'HRGN\',\n      \'HRSRC\',\n      \'HSZ\',\n      \'HWINSTA\',\n      \'HWND\',\n      \'INT\',\n      \'INT_PTR\',\n      \'INT8\',\n      \'INT16\',\n      \'INT32\',\n      \'INT64\',\n      \'LANGID\',\n      \'LCID\',\n      \'LCTYPE\',\n      \'LGRPID\',\n      \'LONG\',\n      \'LONGLONG\',\n      \'LONG_PTR\',\n      \'LONG32\',\n      \'LONG64\',\n      \'LPARAM\',\n      \'LPBOOL\',\n      \'LPBYTE\',\n      \'LPCOLORREF\',\n      \'LPCSTR\',\n      \'LPCVOID\',\n      \'LPCWSTR\',\n      \'LPDWORD\',\n      \'LPHANDLE\',\n      \'LPINT\',\n      \'LPLONG\',\n      \'LPSTR\',\n      \'LPTSTR\',\n      \'LPWOID\',\n      \'LPWORD\',\n      \'LPWSTR\',\n      \'LRESULT\',\n      \'PBOOL\',\n      \'PBOOLEAN\',\n      \'PBYTE\',\n      \'PCHAR\',\n      \'PCSTR\',\n      \'PCTSTR\',\n      \'PCWSTR\',\n      \'PDWORD\',\n      \'PDWORDLONG\',\n      \'PDWORD_PTR\',\n      \'PDWORD32\',\n      \'PDWORD64\',\n      \'PFLOAT\',\n      \'PHALF_PTR\',\n      \'PHANDLE\',\n      \'PHKEY\',\n      \'PINT\',\n      \'PINT_PTR\',\n      \'PINT8\',\n      \'PINT16\',\n      \'PINT32\',\n      \'PINT64\',\n      \'PLCID\',\n      \'PLONG\',\n      \'PLONGLONG\',\n      \'PLONG32\',\n      \'PLONG64\',\n      \'POINTER_32\',\n      \'POINTER_64\',\n      \'POINTER_SIGNED\',\n      \'POINTER_UNSIGNED\',\n      \'PSHORT\',\n      \'PSIZE_T\',\n      \'PSSIZE_T\',\n      \'PSTR\',\n      \'PTBYTE\',\n      \'PTCHAR\',\n      \'PTSTR\',\n      \'PUCHAR\',\n      \'PUHALF_PTR\',\n      \'PUINT\',\n      \'PUINT_PTR\',\n      \'PUINT8\',\n      \'PUINT16\',\n      \'PUINT32\',\n      \'PUINT64\',\n      \'PULONG\',\n      \'PULONGLONG\',\n      \'PULONG32\',\n      \'PULONG64\',\n      \'PUSHORT\',\n      \'PVOID\',\n      \'PWCHAR\',\n      \'PWORD\',\n      \'PWSTR\',\n      \'QWORD\',\n      \'SC_HANDLE\',\n      \'SC_LOCK\',\n      \'SERVICE_STATUS_HANDLE\',\n      \'SHORT\',\n      \'SIZE_T\',\n      \'SSIZE_T\',\n      \'TBYTE\',\n      \'TCHAR\',\n      \'UCHAR\',\n      \'UHALF_PTR\',\n      \'UINT\',\n      \'UINT_PTR\',\n      \'UINT8\',\n      \'UINT16\',\n      \'UINT32\',\n      \'UINT64\',\n      \'ULONG\',\n      \'ULONGLONG\',\n      \'ULONG_PTR\',\n      \'ULONG32\',\n      \'ULONG64\',\n      \'UNICODE_STRING\',\n      \'USHORT\',\n      \'USN\',\n      \'VOID\',\n      \'WCHAR\',\n      \'WORD\',\n      \'WPARAM\',\n      \'bool\',\n      \'char\',\n      \'int\',\n      \'float\',\n      \'double\',\n      \'void\',\n      \'size_t\',\n      \'ssize_t\',\n      \'intptr_t\',\n      \'uintptr_t\',\n      \'charptr_t\',\n      \'intmax_t\',\n      \'intptr_t\',\n      \'uintmax_t\',\n      \'uintptr_t\',\n      \'ptrdiff_t\',\n      \'max_align_t\',\n      \'wchar_t\',\n      \'sig_atomic_t\',\n      ...[8, 16, 32, 64].map(n => `int${n}_t`),\n      ...[8, 16, 32, 64].map(n => `uint${n}_t`),\n      ...[8, 16, 32, 64].map(n => `char${n}_t`),\n      ...[8, 16, 32, 64].map(n => `int_fast${n}_t`),\n      ...[8, 16, 32, 64].map(n => `int_least${n}_t`),\n      ...[8, 16, 32, 64].map(n => `uint_fast${n}_t`),\n      ...[8, 16, 32, 64].map(n => `uint_least${n}_t`),\n    )),\n\n    concatenated_string: $ => seq(\n      choice($.raw_string_literal, $.string_literal),\n      repeat1(choice($.raw_string_literal, $.string_literal, $.identifier))\n    ),\n  }\n});\n\nfunction commaSep(rule) {\n  return optional(commaSep1(rule));\n}\n\nfunction commaSep1(rule) {\n  return seq(rule, repeat(seq(\',\', rule)));\n}\n";

The source of the Mozcpp tree-sitter grammar description.