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.