;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\302\303\304\"\210\305\306\307\310BC\311#\210\305\312\313\314BC\315#\210\305\316\317\320BC\321#\210\322\323\324\325#\207" [require cc-mode c-add-language p4lang-mode c-mode c-define-lang-constant c-primitive-type-kwds (p4lang-mode) #[nil "\300\301\302\303\300\304\305\306\"\307\"\"\"\207" [append ("action" "apply" "bit" "control" "header" "in" "inout" "out" "parser" "state" "string" "transition" "vector") delete "boolean" c-get-lang-constant c-primitive-type-kwds (cc-langs) nil] 8] (cc-langs) c-modifier-kwds (p4lang-mode) #[nil "\300\301\302\303\"B\207" ["function" c-get-lang-constant c-modifier-kwds (cc-langs)] 4] (cc-langs) c-cpp-matchers (p4lang-mode) #[nil "\300\301\302\303\"B\207" [(eval list "^\\s *\\(#pragma\\)\\>\\(.*\\)" (list 1 c-preprocessor-face-name) '(2 font-lock-string-face)) c-get-lang-constant c-cpp-matchers (cc-fonts)] 4] (cc-fonts) custom-declare-variable p4lang-font-lock-extra-types nil "*List of extra types (aside from the type keywords) to recognize in P4LANG mode.\nEach list item should be a regexp matching a single identifier."] 4) #@39 Minimal highlighting for P4LANG mode. (defconst p4lang-font-lock-keywords-1 (byte-code "\301=\203\302\207\303\304\305\306#\207" [c-version-sym 5\.35\.1 ((eval list "^\\s *\\(#pragma\\)\\>\\(.*\\)" (list 1 c-preprocessor-face-name) '(2 font-lock-string-face)) c-maybe-font-lock-wrong-style-comments ("\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:error\\|warning\\)\\)\\s +\\(.*\\)$" 4 font-lock-string-face t) (#[#1=(limit) "\306\300!\307\310 \311#\203\200\312\224b\210\313 !\204\312\225b\210\314 \315\216\316\317\224\317\225\320 $\210*\314 \321\216\317\224\317\225S\ff\322=\203i ^\316\211T\323$\210)\f^\316\211T\323$\210)\202| ^\324\211T\325#\210),\202)\326\207" [parse-sexp-lookup-properties limit save-match-data-internal font-lock-string-face end beg boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(?:include\\)\\(\\s \\|[\n ]\\)*\\(\\(//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)\\(\\s \\|[\n ]\\)*\\)*\\(<[^>\n ]*>?\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 8 face #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 62 syntax-table remove-text-properties (syntax-table nil) nil -pos- c-syntax-table-hwm c-<-as-paren-syntax c->-as-paren-syntax pos] 5]) (#[#1# "\304\300!\305\306 \307#\203m\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\224\203`\214\315\316\224\316\225\317\320$\210\314\225b\210e }\210\321 \210\322 !\203\\\315\310\224\310\225\317\323$\210\310\225b\210\321 \210\324f\325=\203\\\324u\210\2026)\202i\315\316\224\316\225\317\323$\210*\202)\324\207" [parse-sexp-lookup-properties limit save-match-data-internal c-symbol-key boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *define\\(\\(\\s \\|[\n ]\\)\\|//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)+\\([[:alpha:]_][[:alnum:]_$]*\\)\\(\\((\\)\\|\\([^(]\\|$\\)\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 8 put-text-property 6 face font-lock-function-name-face c-forward-sws looking-at font-lock-variable-name-face nil 44] 5]) (#[(limit) "\305\300! \306=\203:\212\307 \210`)\310\311\n\312#\2039\313\224b\210\314\n!\204\313\225b\210\315 \316\216\317\320\224\320\225\321\f$\210*\202)`\nW\203z\310\322\n\312#\203z\313\224b\210\314\n!\204:\313\225b\210\323\225b\210\315 \324\216\313\225\310\311\n\325#\203v\317\320\224\320\225\321\f$\210\202b+\202:)\326\207" [parse-sexp-lookup-properties c-font-lock-context limit save-match-data-internal c-preprocessor-face-name boundp in-cpp-expr c-end-of-macro re-search-forward "\\(\\(?:defined\\)\\)\\([^[:alnum:]_$]\\|$\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 1 face "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:\\(?:el\\)?if\\)\\)\\([^[:alnum:]_$]\\|$\\)\\(\\\\\\(.\\|[\n ]\\)\\|[^\n ]\\)*" 3 #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] move nil] 5]) (#[#1# "\304\300!\305\306 \307#\203,\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\315\224\315\225\316 $\210*\202)\317\207" [parse-sexp-lookup-properties limit save-match-data-internal c-preprocessor-face-name boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\(\\s *#\\s *[[:alnum:]_$]+\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 3 face nil] 5]) (eval list #[(limit) "\302\303\304 \305#\211\203\306\224b\210\307 !\204\306\225b\210)\207" [res limit nil re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *if\\(n\\)def\\>" t 0 c-skip-comments-and-strings] 4] 3 c-negation-char-face-name 'append) (eval list "\240" 0 (progn (unless (c-face-name-p 'c-nonbreakable-space-face) (c-make-inverse-face 'font-lock-warning-face 'c-nonbreakable-space-face)) ''c-nonbreakable-space-face))) c-get-lang-constant c-matchers-1 (cc-fonts) p4lang-mode] 4) (#$ . 1183)) #@43 Fast normal highlighting for P4LANG mode. (defconst p4lang-font-lock-keywords-2 (byte-code "\301=\203\302\207\303\304\305\306#\207" [c-version-sym 5\.35\.1 ((eval list "^\\s *\\(#pragma\\)\\>\\(.*\\)" (list 1 c-preprocessor-face-name) '(2 font-lock-string-face)) c-maybe-font-lock-wrong-style-comments ("\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:error\\|warning\\)\\)\\s +\\(.*\\)$" 4 font-lock-string-face t) (#[#1=(limit) "\306\300!\307\310 \311#\203\200\312\224b\210\313 !\204\312\225b\210\314 \315\216\316\317\224\317\225\320 $\210*\314 \321\216\317\224\317\225S\ff\322=\203i ^\316\211T\323$\210)\f^\316\211T\323$\210)\202| ^\324\211T\325#\210),\202)\326\207" [parse-sexp-lookup-properties limit save-match-data-internal font-lock-string-face end beg boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(?:include\\)\\(\\s \\|[\n ]\\)*\\(\\(//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)\\(\\s \\|[\n ]\\)*\\)*\\(<[^>\n ]*>?\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 8 face #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 62 syntax-table remove-text-properties (syntax-table nil) nil -pos- c-syntax-table-hwm c-<-as-paren-syntax c->-as-paren-syntax pos] 5]) (#[#1# "\304\300!\305\306 \307#\203m\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\224\203`\214\315\316\224\316\225\317\320$\210\314\225b\210e }\210\321 \210\322 !\203\\\315\310\224\310\225\317\323$\210\310\225b\210\321 \210\324f\325=\203\\\324u\210\2026)\202i\315\316\224\316\225\317\323$\210*\202)\324\207" [parse-sexp-lookup-properties limit save-match-data-internal c-symbol-key boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *define\\(\\(\\s \\|[\n ]\\)\\|//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)+\\([[:alpha:]_][[:alnum:]_$]*\\)\\(\\((\\)\\|\\([^(]\\|$\\)\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 8 put-text-property 6 face font-lock-function-name-face c-forward-sws looking-at font-lock-variable-name-face nil 44] 5]) (#[(limit) "\305\300! \306=\203:\212\307 \210`)\310\311\n\312#\2039\313\224b\210\314\n!\204\313\225b\210\315 \316\216\317\320\224\320\225\321\f$\210*\202)`\nW\203z\310\322\n\312#\203z\313\224b\210\314\n!\204:\313\225b\210\323\225b\210\315 \324\216\313\225\310\311\n\325#\203v\317\320\224\320\225\321\f$\210\202b+\202:)\326\207" [parse-sexp-lookup-properties c-font-lock-context limit save-match-data-internal c-preprocessor-face-name boundp in-cpp-expr c-end-of-macro re-search-forward "\\(\\(?:defined\\)\\)\\([^[:alnum:]_$]\\|$\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 1 face "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:\\(?:el\\)?if\\)\\)\\([^[:alnum:]_$]\\|$\\)\\(\\\\\\(.\\|[\n ]\\)\\|[^\n ]\\)*" 3 #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] move nil] 5]) (#[#1# "\304\300!\305\306 \307#\203,\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\315\224\315\225\316 $\210*\202)\317\207" [parse-sexp-lookup-properties limit save-match-data-internal c-preprocessor-face-name boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\(\\s *#\\s *[[:alnum:]_$]+\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 3 face nil] 5]) (eval list #[(limit) "\302\303\304 \305#\211\203\306\224b\210\307 !\204\306\225b\210)\207" [res limit nil re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *if\\(n\\)def\\>" t 0 c-skip-comments-and-strings] 4] 3 c-negation-char-face-name 'append) (eval list "\240" 0 (progn (unless (c-face-name-p 'c-nonbreakable-space-face) (c-make-inverse-face 'font-lock-warning-face 'c-nonbreakable-space-face)) ''c-nonbreakable-space-face)) ("\\s|" 0 font-lock-warning-face t nil) c-font-lock-invalid-single-quotes (eval list "\\<\\(\\(?:NULL\\|\\(?:fals\\|tru\\)e\\)\\)\\>" 1 c-constant-face-name) ("\\<\\(\\(?:__\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\|a\\(?:sm\\|uto\\)\\|break\\|c\\(?:ase\\|on\\(?:st\\|tinue\\)\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:or\\|unction\\)\\|goto\\|i\\(?:f\\|nline\\)\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:izeof\\|t\\(?:atic\\|ruct\\)\\|witch\\)\\|type\\(?:\\(?:de\\|o\\)f\\)\\|union\\|\\(?:volat\\|wh\\)ile\\)\\)\\([^[:alnum:]_$]\\|$\\)" 1 font-lock-keyword-face) (eval list "\\(!\\)[^=]" 1 c-negation-char-face-name) (eval list #[#1# "\304\300!\305 \n\306#\203J\307\224b\210\310\n!\204\307\225b\210\311 \312\216\313\314\224\314\225\315\316$\210*\311 \317\216\314\225b\210\320 \210*\311 \321\216\322\n\306\323\211$\210*\314\225b\210\202)\323\207" [parse-sexp-lookup-properties c-known-type-key limit save-match-data-internal boundp re-search-forward t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 1 face font-lock-type-face #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] c-forward-sws #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] c-font-lock-declarators nil] 5]) (#[#1# "\303\300!\304\305 \306#\203J\307\224b\210\310 !\204\307\225b\210\311 \312\216\313\314\224\314\225\315\316$\210*\311 \317\216\314\225b\210\320 \210*\311 \321\216\322 \306\323\211$\210*\314\225b\210\202)\323\207" [parse-sexp-lookup-properties limit save-match-data-internal boundp re-search-forward "\\<\\(\\(?:enum\\|struct\\|union\\)\\)\\(\\s \\|[\n ]\\)+\\([[:alpha:]_][[:alnum:]_$]*\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 3 face font-lock-type-face #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] c-forward-sws #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] c-font-lock-declarators nil] 5]) (#[#1# "\303\300!\304\305 \306#\203;\307\224b\210\310 !\204\307\225b\210\311 \312\216\313\225b\210\314 \210*\311 \315\216\316 \306\317\211$\210*\313\225b\210\202)\317\207" [parse-sexp-lookup-properties limit save-match-data-internal boundp re-search-forward "\\<\\(\\(?:enum\\|struct\\|union\\)\\)\\>" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 1 c-forward-sws #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] c-font-lock-declarators nil] 5]) c-font-lock-labels c-font-lock-enum-tail c-font-lock-enum-body (eval list "\\<\\(\\(?:goto\\)\\)\\>\\s *\\([[:alpha:]_][[:alnum:]_$]*\\)" (list 2 c-label-face-name nil t))) c-get-lang-constant c-matchers-2 (cc-fonts) p4lang-mode] 4) (#$ . 5434)) #@47 Accurate normal highlighting for P4LANG mode. (defconst p4lang-font-lock-keywords-3 (byte-code "\301=\203\302\207\303\304\305\306#\207" [c-version-sym 5\.35\.1 ((eval list "^\\s *\\(#pragma\\)\\>\\(.*\\)" (list 1 c-preprocessor-face-name) '(2 font-lock-string-face)) c-maybe-font-lock-wrong-style-comments ("\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:error\\|warning\\)\\)\\s +\\(.*\\)$" 4 font-lock-string-face t) (#[#1=(limit) "\306\300!\307\310 \311#\203\200\312\224b\210\313 !\204\312\225b\210\314 \315\216\316\317\224\317\225\320 $\210*\314 \321\216\317\224\317\225S\ff\322=\203i ^\316\211T\323$\210)\f^\316\211T\323$\210)\202| ^\324\211T\325#\210),\202)\326\207" [parse-sexp-lookup-properties limit save-match-data-internal font-lock-string-face end beg boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(?:include\\)\\(\\s \\|[\n ]\\)*\\(\\(//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)\\(\\s \\|[\n ]\\)*\\)*\\(<[^>\n ]*>?\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 8 face #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 62 syntax-table remove-text-properties (syntax-table nil) nil -pos- c-syntax-table-hwm c-<-as-paren-syntax c->-as-paren-syntax pos] 5]) (#[#1# "\304\300!\305\306 \307#\203m\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\224\203`\214\315\316\224\316\225\317\320$\210\314\225b\210e }\210\321 \210\322 !\203\\\315\310\224\310\225\317\323$\210\310\225b\210\321 \210\324f\325=\203\\\324u\210\2026)\202i\315\316\224\316\225\317\323$\210*\202)\324\207" [parse-sexp-lookup-properties limit save-match-data-internal c-symbol-key boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *define\\(\\(\\s \\|[\n ]\\)\\|//[^\n ]*[\n ]\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\|\\\\[\n ]\\|\\s!\\S!*\\s!\\)+\\([[:alpha:]_][[:alnum:]_$]*\\)\\(\\((\\)\\|\\([^(]\\|$\\)\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] 8 put-text-property 6 face font-lock-function-name-face c-forward-sws looking-at font-lock-variable-name-face nil 44] 5]) (#[(limit) "\305\300! \306=\203:\212\307 \210`)\310\311\n\312#\2039\313\224b\210\314\n!\204\313\225b\210\315 \316\216\317\320\224\320\225\321\f$\210*\202)`\nW\203z\310\322\n\312#\203z\313\224b\210\314\n!\204:\313\225b\210\323\225b\210\315 \324\216\313\225\310\311\n\325#\203v\317\320\224\320\225\321\f$\210\202b+\202:)\326\207" [parse-sexp-lookup-properties c-font-lock-context limit save-match-data-internal c-preprocessor-face-name boundp in-cpp-expr c-end-of-macro re-search-forward "\\(\\(?:defined\\)\\)\\([^[:alnum:]_$]\\|$\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 1 face "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *\\(\\(?:\\(?:el\\)?if\\)\\)\\([^[:alnum:]_$]\\|$\\)\\(\\\\\\(.\\|[\n ]\\)\\|[^\n ]\\)*" 3 #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] move nil] 5]) (#[#1# "\304\300!\305\306 \307#\203,\310\224b\210\311 !\204\310\225b\210\312 \313\216\314\315\224\315\225\316 $\210*\202)\317\207" [parse-sexp-lookup-properties limit save-match-data-internal c-preprocessor-face-name boundp re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\(\\s *#\\s *[[:alnum:]_$]+\\)" t 0 c-skip-comments-and-strings match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] put-text-property 3 face nil] 5]) (eval list #[(limit) "\302\303\304 \305#\211\203\306\224b\210\307 !\204\306\225b\210)\207" [res limit nil re-search-forward "\\(\\=\\|\\(\\=\\|[^\\]\\)[\n ]\\)\\s *#\\s *if\\(n\\)def\\>" t 0 c-skip-comments-and-strings] 4] 3 c-negation-char-face-name 'append) (eval list "\240" 0 (progn (unless (c-face-name-p 'c-nonbreakable-space-face) (c-make-inverse-face 'font-lock-warning-face 'c-nonbreakable-space-face)) ''c-nonbreakable-space-face)) ("\\s|" 0 font-lock-warning-face t nil) c-font-lock-invalid-single-quotes (eval list "\\<\\(\\(?:NULL\\|\\(?:fals\\|tru\\)e\\)\\)\\>" 1 c-constant-face-name) ("\\<\\(\\(?:__\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\|a\\(?:sm\\|uto\\)\\|break\\|c\\(?:ase\\|on\\(?:st\\|tinue\\)\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:or\\|unction\\)\\|goto\\|i\\(?:f\\|nline\\)\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:izeof\\|t\\(?:atic\\|ruct\\)\\|witch\\)\\|type\\(?:\\(?:de\\|o\\)f\\)\\|union\\|\\(?:volat\\|wh\\)ile\\)\\)\\([^[:alnum:]_$]\\|$\\)" 1 font-lock-keyword-face) (eval list "\\(!\\)[^=]" 1 c-negation-char-face-name) c-font-lock-complex-decl-prepare c-font-lock-cut-off-declarators c-font-lock-declarations c-font-lock-enclosing-decls c-font-lock-c++-using ("\\<\\(\\(?:_\\(?:Bool\\|Complex\\|Imaginary\\)\\|a\\(?:ction\\|pply\\)\\|bit\\|c\\(?:har\\|ontrol\\)\\|double\\|float\\|header\\|in\\(?:\\(?:ou\\)?t\\)?\\|long\\|out\\|parser\\|s\\(?:hort\\|igned\\|t\\(?:ate\\|ring\\)\\)\\|transition\\|unsigned\\|v\\(?:ector\\|oid\\)\\)\\)\\>" 1 'font-lock-type-face) c-font-lock-enum-tail c-font-lock-enum-body (eval list "\\<\\(\\(?:goto\\)\\)\\>\\s *\\([[:alpha:]_][[:alnum:]_$]*\\)" (list 2 c-label-face-name nil t))) c-get-lang-constant c-matchers-3 (cc-fonts) p4lang-mode] 4) (#$ . 12562)) #@50 Default expressions to highlight in P4LANG mode. (defvar p4lang-font-lock-keywords p4lang-font-lock-keywords-3 (#$ . 18069)) #@43 Syntax table used in p4lang-mode buffers. (defvar p4lang-mode-syntax-table nil (#$ . 18200)) (byte-code "\204 \302=\203\303\202\304\305\306\307# \302\207" [p4lang-mode-syntax-table c-version-sym 5\.35\.1 (lambda nil (let ((table (make-syntax-table))) (c-populate-syntax-table table) nil table)) c-get-lang-constant c-make-mode-syntax-table (cc-langs) p4lang-mode] 4) #@49 Abbreviation table used in p4lang-mode buffers. (defvar p4lang-mode-abbrev-table nil (#$ . 18581)) (c-define-abbrev-table 'p4lang-mode-abbrev-table '(("else" "else" c-electric-continued-statement 0) ("while" "while" c-electric-continued-statement 0) ("catch" "catch" c-electric-continued-statement 0) ("finally" "finally" c-electric-continued-statement 0))) #@37 Keymap used in p4lang-mode buffers. (defvar p4lang-mode-map (c-make-inherited-keymap) (#$ . 18945)) #@22 P4LANG Mode Commands (defvar p4lang-menu nil (#$ . 19051)) (byte-code "\302\303\304\305 \306=\203\307\202\310\311\312\313#B$\210\314\315\316\"\207" [p4lang-mode-map c-version-sym easy-menu-do-define p4lang-menu "P4LANG Mode Commands" "P4LANG" 5\.35\.1 (["Comment Out Region" comment-region (c-fn-region-is-active-p)] ["Uncomment Region" (comment-region (region-beginning) (region-end) '(4)) (c-fn-region-is-active-p)] ["Indent Expression" c-indent-exp (memq (char-after) '(40 91 123))] ["Indent Line or Region" c-indent-line-or-region t] ["Fill Comment Paragraph" c-fill-paragraph t] "----" ["Backward Statement" c-beginning-of-statement t] ["Forward Statement" c-end-of-statement t] ["Up Conditional" c-up-conditional t] ["Backward Conditional" c-backward-conditional t] ["Forward Conditional" c-forward-conditional t] "----" ["Macro Expand Region" c-macro-expand (c-fn-region-is-active-p)] ["Backslashify" c-backslash-region (c-fn-region-is-active-p)] "----" ("Style..." ["Set Style..." c-set-style t] ["Show Current Style Name" (message "Style Name: %s" c-indentation-style) t] ["Guess Style from this Buffer" c-guess-buffer-no-install t] ["Install the Last Guessed Style..." c-guess-install (and c-guess-guessed-offsets-alist c-guess-guessed-basic-offset)] ["View the Last Guessed Style" c-guess-view (and c-guess-guessed-offsets-alist c-guess-guessed-basic-offset)]) "----" ("Toggle..." ["Syntactic indentation" c-toggle-syntactic-indentation :style toggle :selected c-syntactic-indentation] ["Electric mode" c-toggle-electric-state :style toggle :selected c-electric-flag] ["Auto newline" c-toggle-auto-newline :style toggle :selected c-auto-newline] ["Hungry delete" c-toggle-hungry-state :style toggle :selected c-hungry-delete-key] ["Subword mode" c-subword-mode :style toggle :selected (and (boundp 'c-subword-mode) c-subword-mode)])) c-get-lang-constant c-mode-menu (cc-langs) p4lang-mode add-to-list auto-mode-alist ("\\.p4\\'" . p4lang-mode)] 9) #@303 Major mode for editing P4 code. This is a simple example of a separate mode derived from CC Mode to support a language with syntax similar to C/C++/ObjC/Java/IDL/Pike. The hook `c-mode-common-hook' is run with no args at mode initialization, then `p4lang-mode-hook'. Key bindings: \{p4lang-mode-map} (defalias 'p4lang-mode #[nil "\306 \210\307\310!\210\311!\210\312\313 \310\314@!\210\312\315\211ABC\316\317!\210\316\320!\210\316\321!\210\316\322!\210\316\323!\210\316\324!\210\316\325!\210\3261\213D\327=\203S\317B\330\320B\331\321B\332\322B\333\323B\310\324B\334\325B\335\336B\315\337B\340\341B\342\343\211C\204\215\344\345!\210C\346N\211\204\233\344\347C\"\210\350P!\266\202J\262!\315EFGF\203\314F@EFAF\351E@EAG#\210\202\257G+!\352B\353\211H<\203\341H\202\344HC)*\354B\355\211H<\203\367H\202\372HC),\356B\357\211H<\203 H\202HC).\360B\3610\362B\3632\364B\3104\365B\3155\366B\3676\370B\3158\371B\3109\372B\373:\374B\375<\376B\377>\201IB\201\370I\201JB\201\371J\201KB\201\372K\201LB\201\373L\201MB\315M\201NB\375N\201OB\201\374O\201PB\310P\201QB\315Q\201RB\201\375R\201SB\201\376S\201TB\201\377T\201UB\201U\201VB\201V\201WB\201W\201XB\201X\201YB\201Y\201ZB\201Z\201[B\201[\201\\B\201\\\201]B\201]\201^B\201 ^\201_B\315_\201`B\315`\201aB\201\na\201bB\201 b\201cB\201\fc\201dB\201 d\201eB\201e\201fB\201f\201gB\201g\201hB\201h\201iB\201i\201jB\201j\201kB\201k\201lB\201l\201mB\201m\201nB\201n\201oB\201o\201pB\201p\201qB\201q\201rB\201r\201sB\201s\201tB\201\nt\201uB\201u\201vB\201v\201wB\201w\201xB\201x\201yB\201y\201zB\201 z\201{B\201!{\201|B\201\"|\201}B\201#}\201~B\201$~\201B\201%\201\200B\201\200\201\201B\201&\201\201\202B\201'\202\201\203B\201(\203\201\204B\310\204\201\205B\201)\205\201\206B\201*\206\201\207B\201+\207\201\210B\201,\210\201\211B\201,\211\201\212B\201-\212\201\213B\201.\213\201\214B\201/\214\201\215B\2010\215\201\216B\201\n\216\201\217B\2011\217\201\220B\2012\220\201\221B\2012\221\201\222B\2013\222\201\223B\201\n\223\201\224B\201\n\224\201\225B\2014\225\201\226B\2015\226\201\227B\201\n\227\201\230B\315\230\201\231B\2016\231\201\232B\2017\2018\2019\"\232\201\233B\2011\233\201\234B\201:\234\201\235B\201\n\235\201\236B\201\n\236\201\237B\201\n\237\201\240B\201;\240\201\241B\201<\241\201\242B\201=\242\201\243B\201>\243\201\244B\201?\244\201\245B\201\n\245\201\246B\315\246\201\247B\201:\247\201\250B\201\n\250\201\251B\2016\251\201\252B\315\252\201\253B\201;\253\201\254B\201\n\254\201\255B\201\n\255\201\256B\201@\256\201\257B\201\n\257\201\260B\201A\260\201\261B\201\n\261\201\262B\201B\262\201\263B\201C\263\201\264B\201D\264\201\265B\201E\265\201\266B\201F\266\201\267B\201G\267\201\270B\315\270\201\271B\201H\271\201\272B\201I\272\201\273B\201J\273\201\274B\201K\274\201\275B\201L\275\201\276B\201M\276\201\277B\201N\277\201\304B\201O\300\315\211\301\302\201P\300G\201Q_\201\"\303\300\203:\300@@\301\300@A\302\300A\300\201R\350\301\303\"\201S\201T\2017\201U\302\"\"\"\210\202\303,\304\201\305B\201V\305\201\306B\201W\306\201\307B\201\307\201\310B\201X\310\201\311B\375\311\201\312B\201Y\312\201\313B\201Q\313\201\314B\201Z\314\201\315B\201[\315\201\316B\201\\\316\201\317B\201]\317\201\320B\201^\320\201\321B\201_\321\201\322B\201`\322\201\323B\315\323\201\324B\201a\324\201\330B\201b\201cC\204\357\344\345!\210C\346N\211\204\375\344\347C\"\210\350P!\266\202!\205-\201c\211C\204\344\345!\210C\346N\211\204#\344\347C\"\210\350P!\266\202J\262\325\201d\315\2017\201e\325\"\"\326\201d\315\2017\201f\325\"\"\327\201g\201h\201i\201j\315\201i\201k\327\"\"C\326\"\201l\"\201mQ+\330\201\331B\315\331\201\332B\310\332\201\333B\201\n\333\201\334B\201\334\201\335B\310\335\201\336B\315\336\201\337B\201n\337\201\340B\201o\340\201\341B\315\341\201\342B\315\342\201\343B\315\343\201\344B\310\344\201\345B\315\345\201\346B\315\346\201\347B\315\347\201\350B\310\350\201\351B\201p\351\201\352B\201q\352\201\353B\201q\353\201\354B\201\354\201\355B\315\355\201\356B\315\356\201\357B\315\357\201\360B\310\360\201\361B\201r\211\361\202\206\310A\201s\211\362\315\363\211\364\205\205\364@\211\363@B\363@\201t\363A@!L\210\364A\211\364\204e\315+0\210\202\304\365B\203\270\201u\201vBA\203\257\201w\201x\312\201y\366$\202\262\201z\365$\202\302\201{\365@\365A\")\210+\201|\312!\210\201}\367!\210\201~\201!\210\201~\201\200!\210\201\201 \207" [p4lang-mode-syntax-table major-mode mode-name p4lang-mode-abbrev-table local-abbrev-table abbrev-mode kill-all-local-variables c-initialize-cc-mode t set-syntax-table p4lang-mode "p4lang" use-local-map nil make-local-variable font-lock-comment-end-skip comment-start comment-end comment-start-skip comment-end-can-be-escaped beginning-of-defun-function end-of-defun-function (error) 5\.35\.1 "[ ]*\\*/" "/* " " */" "\\(?://+\\|/\\*+\\)\\s *" c-beginning-of-defun c-end-of-defun c-no-parens-syntax-table c-identifier-syntax-modifications ((95 . "w") (36 . "w")) c-identifier-syntax-table copy-syntax-table #26="mode-syntax-table" error "Not inside a CC Mode based mode" c-mode-prefix "%S has no mode prefix known to `c-mode-symbol'" intern modify-syntax-entry c-get-state-before-change-functions (c-extend-region-for-CPP c-depropertize-CPP c-truncate-bs-cache c-before-change-check-unbalanced-strings c-parse-quotes-before-change) c-before-font-lock-functions (c-depropertize-new-text c-after-change-escape-NL-in-string c-parse-quotes-after-change c-after-change-mark-abnormal-strings c-extend-font-lock-region-for-macros c-neutralize-syntax-in-CPP c-change-expand-fl-region) c-before-context-fontification-functions c-context-expand-fl-region c-at-vsemi-p-fn c-at-macro-vsemi-p c-vsemi-status-unknown-p-fn c-macro-vsemi-status-unknown-p c-has-bitfields c-single-quotes-quote-strings c-string-delims (34) c-has-quoted-numbers c-has-compound-literals c-modified-constant "L'\\([^\\' \f\n ]\\|\\\\.\\)'" c-symbol-start "[[:alpha:]_]" c-symbol-chars "[:alnum:]_$" c-mode-map source-eval current-var c-buffer-is-cc-mode c-version-sym mod mods table fs c-symbol-char-key c-symbol-key c-nonsymbol-chars c-nonsymbol-key c-opt-identifier-concat-key c-identifier-start c-identifier-key c-string-escaped-newlines c-multiline-string-start-char c-string-innards-re-alist c-opt-cpp-symbol c-opt-cpp-prefix c-anchored-cpp-prefix c-opt-cpp-start c-cpp-include-key c-opt-cpp-macro-define c-opt-cpp-macro-define-start c-opt-cpp-macro-define-id c-cpp-expr-intro-re c-cpp-expr-functions-key c-operator-re c-non-after-{}-ops-re c-overloadable-operators-regexp c-opt-op-identifier-prefix c-ambiguous-overloadable-or-identifier-prefix-re c-nonsymbol-token-regexp c-assignment-op-regexp c-arithmetic-op-regexp c-:$-multichar-token-regexp c-<>-multichar-token-regexp c-<-op-cont-regexp c-<-pseudo-digraph-cont-regexp c-<-pseudo-digraph-cont-len c->-op-cont-regexp c->-op-without->-cont-regexp c-multichar->-op-not->>->>>-regexp c-:-op-cont-regexp c-stmt-delim-chars c-stmt-boundary-skip-chars c-stmt-boundary-skip-list c-stmt-delim-chars-with-comma c-stmt-boundary-skip-chars-with-comma c-stmt-boundary-skip-list-with-comma c-pack-key c-auto-ops-re c-haskell-op-re c-pre-start-tokens c-pre-lambda-tokens-re c-line-comment-starter c-block-comment-starter c-block-comment-ender c-block-comment-ender-regexp c-block-comment-awkward-chars c-comment-start-regexp c-block-comment-start-regexp c-line-comment-start-regexp c-last-c-comment-end-on-line-re c-literal-start-regexp c-doc-comment-start-regexp c-block-comment-is-default c-syntactic-ws-start c-syntactic-ws-end c-syntactic-eol c-paragraph-start c-paragraph-separate c-return-key c-primitive-type-key c-typedef-key c-typeof-key c-template-typename-key c-type-prefix-key c-opt-type-modifier-prefix-key c-opt-type-modifier-key c-opt-type-component-key c-type-decl-suffix-ws-ids-key c-class-id-suffix-ws-ids-key c-class-key c-brace-list-key c-after-brace-list-key c-recognize-post-brace-list-type-p c-other-decl-block-key c-other-decl-block-key-in-symbols-alist c-defun-type-name-decl-key c-typedef-decl-key c-using-key c-no-type-key c-equals-type-clause-key c-decl-hangon-key c-prefix-spec-kwds-re c-specifier-key c-not-decl-init-keywords c-not-primitive-type-keywords-regexp c-protection-key c-post-protection-token c-opt-block-decls-with-vars-key c-postfix-decl-spec-key c-make-top-level-key c-colon-type-list-re c-paren-nontype-key c-opt-<>-sexp-key c-inside-<>-type-key c-block-stmt-1-key c-block-stmt-1-2-key c-block-stmt-2-key c-block-stmt-hangon-key c-opt-block-stmt-key c-simple-stmt-key c-paren-stmt-key c-opt-asm-stmt-key c-case-kwds-regexp c-label-kwds-regexp c-opt-inexpr-brace-list-key c-brace-stack-thing-key c-brace-stack-no-semi-key c-decl-block-key c-opt-bitfield-key c-std-abbrev-keywords c-keywords-regexp c-stmt-block-only-keywords-regexp alist kwd lang-const-list obarray c-keywords-obarray c-regular-keywords-regexp c-primary-expr-regexp c-decl-start-colon-kwd-re c-decl-prefix-re c-decl-start-re c-decl-prefix-or-start-re c-dposr-cpp-macro-depth c-cast-parens c-block-prefix-charset c-type-decl-prefix-key c-type-decl-operator-prefix-key c-type-decl-suffix-key c-after-suffixed-type-decl-key c-after-suffixed-type-maybe-decl-key c-opt-type-concat-key c-opt-type-suffix-key extra-types regexp-strings plain-strings c-known-type-key c-special-brace-lists c-recognize-knr-p c-pre-id-bracelist-key c-pre-brace-non-bracelist-key c-recognize-typeless-decls c-recognize-<>-arglists c-<>-notable-chars-re c-enum-clause-introduction-re c-enums-contain-decls c-recognize-paren-inits c-recognize-bare-brace-inits c-recognize-paren-inexpr-blocks c-opt-<>-arglist-start c-opt-<>-arglist-start-in-paren c-opt-postfix-decl-spec-key c-recognize-colon-labels c-label-prefix-re c-nonlabel-token-key c-nonlabel-nonparen-token-key c-nonlabel-token-2-key c-opt-extra-label-key c-opt-friend-key c-opt-method-key c-type-decl-end-used c-maybe-decl-faces init var-init --dolist-tail-- err c-version p4lang-menu "[[:alnum:]_$]+" "[[:alpha:]_][[:alnum:]_$]*" "^[:alnum:]_$" "[^[:alnum:]_$]" "\\([[:alpha:]_][[:alnum:]_$]*\\)" ((34 . "\\(\\\\\\(.\\|\n\\)\\|[^\\\n \"]\\)*")) "#" "\\s *#\\s *" "^\\s *\\(#\\)\\s *" "\\s *#\\s *\\([[:alnum:]]+\\)" "^\\s *\\(#\\)\\s *\\(\\(?:include\\)\\)[ ]*" "define" "\\s *#\\s *define[ ]+\\(\\(\\sw\\|_\\)+\\)\\(([^)]*)\\)?\\([ ]\\|\\\\\n\\)*" "\\s *#\\s *define[ ]+\\(\\sw\\|_\\)+" "\\s *#\\s *\\(\\(?:\\(?:el\\)?if\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:defined\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(?:!=\\|##\\|%\\(?::%:\\|[:=]\\)\\|&[&=]\\|\\*=\\|\\+[+=]\\|-[=>-]\\|/=\\|:>\\|<\\(?:<=\\|[:<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\?\\?\\(?:!\\?\\?!\\|=\\?\\?=\\|[!'()=-]\\)\\|\\^=\\|sizeof\\||[=|]\\|[]!#%&(-,./:<-?[|~^-]\\)" "\\(?:!=\\|##\\|%\\(?::%:\\|=\\)\\|&[&=]\\|\\*=\\|\\+=\\|-[=>]\\|/=\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\?\\?\\(?:!\\?\\?!\\|=\\?\\?=\\|[!']\\)\\|\\^=\\||[=|]\\|[%,./:<-?|^]\\)" "\\(\\`a\\`\\)" "\\(?:!=\\|##\\|%\\(?::%:\\|[:=]\\)\\|&[&=]\\|\\*[/=]\\|\\+[+=]\\|-[=>-]\\|\\.\\.\\.\\|/[*/=]\\|:[:>]\\|<\\(?:<=\\|[:<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\?\\?\\(?:!\\?\\?!\\|=\\?\\?=\\|[!=-]\\)\\|\\^=\\||[=|]\\|[!#%&*+,./:-?|~^-]\\)" "=\\([^=]\\|$\\)\\|\\(?:\\(?:<<\\|>>\\|[%&*+/|^-]\\)=\\)" "\\(?:!=\\|%=\\|&[&=]\\|\\*=\\|\\+=\\|-=\\|/=\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\^=\\||[=|]\\|[%&*+/<=>|^-]\\)" "\\(?:\\(?:%:%\\|[%<]\\):\\)" "\\(?:->\\|:>\\|<\\(?:<=\\|[:<=]\\)\\|>\\(?:>=\\|[=>]\\)\\)" "\\(?:<=\\|[:<=]\\)" "\\`a\\`" 0 "\\(?:>=\\|[=>]\\)" "=" "\\(?:->\\|:>\\|>\\(?:>?=\\)\\)" "[:>]" "^;{}?:" "^#;{}?:" (35 59 123 125 63 58) "^;,{}?:" "^#;,{}?:" (35 59 44 123 125 63 58) (";" "{" "}") "\\(\\(?:!=\\|%=\\|&[&=]\\|\\*[/=]\\|\\+[+=]\\|-[=-]\\|/[*/=]\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>=\\|[=>]\\)\\|\\^=\\|sizeof\\||[=|]\\|[!%&(*+,/:-?[{-~^-]\\)\\)\\([^[:alnum:]_$]\\|$\\)" "//" "/*" "*/" "\\*/" (42) "\\(?:/[*/]\\)\\|\\s!" "/\\*" "\\(\\*/\\)\\([^*]\\|\\*+\\([^*/]\\|$\\)\\)*$" "\\(?:/[*/]\\)\\|\\s!\\|\"\\|\\s|" "/\\*[*!]" "\\s \\|\\(?:/[*/]\\|[\n #]\\)\\|\\\\[\n ]\\|\\s!" "\\s \\|[\n /]\\|\\s!" "\\s *\\(/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*\\*+/\\s *\\)*\\(//\\|/\\*[^*\n ]*\\(\\*+[^*\n /][^*\n ]*\\)*$\\|\\\\$\\|$\\)" "$" "\\(\\(?:return\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:_\\(?:Bool\\|Complex\\|Imaginary\\)\\|a\\(?:ction\\|pply\\)\\|bit\\|c\\(?:har\\|ontrol\\)\\|double\\|float\\|header\\|in\\(?:\\(?:ou\\)?t\\)?\\|long\\|out\\|parser\\|s\\(?:hort\\|igned\\|t\\(?:ate\\|ring\\)\\)\\|transition\\|unsigned\\|v\\(?:ector\\|oid\\)\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:typedef\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:typeof\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:enum\\|struct\\|union\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:const\\|restrict\\|volatile\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:const\\|long\\|restrict\\|s\\(?:hort\\|igned\\)\\|unsigned\\|volatile\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:struct\\|union\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:enum\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:extern\\)\\)\\([^[:alnum:]_$]\\|$\\)" mapcar #[#27=(elt) "\211\301\230\203 \302\202\303\304P!B\207" [elt #28="extern" inextern-lang intern #29="in"] 4] ("extern") "\\(\\(?:enum\\|struct\\|typedef\\|union\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:__\\(?:attribute__\\|declspec\\)\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:__\\(?:attribute__\\|declspec\\)\\|auto\\|e\\(?:num\\|xtern\\)\\|function\\|inline\\|register\\|st\\(?:atic\\|ruct\\)\\|typedef\\|union\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:__\\(?:attribute__\\|declspec\\)\\|auto\\|extern\\|function\\|inline\\|register\\|static\\|typedef\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:NULL\\|__asm__\\|asm\\|break\\|c\\(?:\\(?:as\\|ontinu\\)e\\)\\|d\\(?:efault\\|o\\)\\|else\\|f\\(?:alse\\|or\\)\\|goto\\|if\\|return\\|s\\(?:izeof\\|witch\\)\\|\\(?:tru\\|whil\\)e\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:NULL\\|__\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\|a\\(?:sm\\|uto\\)\\|break\\|c\\(?:ase\\|on\\(?:st\\|tinue\\)\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:alse\\|or\\|unction\\)\\|goto\\|i\\(?:f\\|nline\\)\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:izeof\\|t\\(?:atic\\|ruct\\)\\|witch\\)\\|t\\(?:rue\\|ype\\(?:\\(?:de\\|o\\)f\\)\\)\\|union\\|\\(?:volat\\|wh\\)ile\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:do\\|else\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:for\\|if\\|switch\\|while\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:do\\|else\\|for\\|if\\|switch\\|while\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:break\\|continue\\|goto\\|return\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:for\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:__asm__\\|asm\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:case\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:case\\|default\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:extern\\|struct\\|union\\|[),:;{}]\\)\\)" "\\(\\(?:extern\\|struct\\|union\\|[{}]\\)\\)" "\\(\\(?:extern\\)\\)\\([^[:alnum:]_$]\\|$\\)\\|\\(\\(?:struct\\|union\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(?:char\\|int\\|long\\|\\(?:un\\)?signed\\)\\)\\([^[:alnum:]_$]\\|$\\)" ("else" "while") "\\(\\(?:NULL\\|_\\(?:Bool\\|Complex\\|Imaginary\\|_\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\)\\|a\\(?:ction\\|pply\\|sm\\|uto\\)\\|b\\(?:it\\|reak\\)\\|c\\(?:ase\\|har\\|on\\(?:st\\|t\\(?:inue\\|rol\\)\\)\\)\\|d\\(?:efault\\|o\\(?:uble\\)?\\)\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:alse\\|loat\\|or\\|unction\\)\\|goto\\|header\\|i\\(?:n\\(?:line\\|\\(?:ou\\)?t\\)\\|[fn]\\)\\|long\\|out\\|parser\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:hort\\|i\\(?:gned\\|zeof\\)\\|t\\(?:at\\(?:e\\|ic\\)\\|r\\(?:ing\\|uct\\)\\)\\|witch\\)\\|t\\(?:r\\(?:ansition\\|ue\\)\\|ype\\(?:\\(?:de\\|o\\)f\\)\\)\\|un\\(?:ion\\|signed\\)\\|v\\(?:ector\\|o\\(?:id\\|latile\\)\\)\\|while\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(^\\|\\=\\|[^[:alnum:]_$]\\)\\(\\(?:__\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\|a\\(?:sm\\|uto\\)\\|break\\|c\\(?:\\(?:as\\|ontinu\\)e\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|xtern\\)\\|f\\(?:or\\|unction\\)\\|goto\\|i\\(?:f\\|nline\\)\\|re\\(?:gister\\|turn\\)\\|s\\(?:tatic\\|witch\\)\\|typeof\\|while\\)\\)\\([^[:alnum:]_$]\\|$\\)" (("__asm__" c-asm-stmt-kwds) ("asm" c-asm-stmt-kwds) ("sizeof" c-expr-kwds) ("default" c-label-kwds) ("case" c-case-kwds c-label-kwds) ("volatile" c-type-modifier-kwds c-type-start-kwds c-type-modifier-prefix-kwds) ("restrict" c-type-modifier-kwds c-type-start-kwds c-type-modifier-prefix-kwds) ("const" c-type-modifier-kwds c-type-start-kwds c-type-modifier-prefix-kwds) ("typeof" c-typeof-kwds) ("while" c-block-stmt-2-kwds c-block-stmt-kwds) ("switch" c-block-stmt-2-kwds c-block-stmt-kwds) ("if" c-block-stmt-2-kwds c-block-stmt-kwds) ("for" c-block-stmt-2-kwds c-paren-stmt-kwds c-block-stmt-kwds) ("else" c-block-stmt-1-kwds c-block-stmt-kwds) ("do" c-block-stmt-1-kwds c-block-stmt-kwds) ("true" c-constant-kwds) ("false" c-constant-kwds) ("NULL" c-constant-kwds) ("return" c-return-kwds c-simple-stmt-kwds) ("continue" c-simple-stmt-kwds) ("break" c-simple-stmt-kwds) (#25="void" c-type-start-kwds c-primitive-type-kwds) (#24="unsigned" c-bitfield-kwds c-type-start-kwds c-primitive-type-prefix-kwds c-primitive-type-kwds) (#23="signed" c-bitfield-kwds c-type-start-kwds c-primitive-type-prefix-kwds c-primitive-type-kwds) (#22="short" c-type-start-kwds c-primitive-type-prefix-kwds c-primitive-type-kwds) (#21="long" c-bitfield-kwds c-type-start-kwds c-primitive-type-prefix-kwds c-primitive-type-kwds) (#20="int" c-bitfield-kwds c-type-start-kwds c-primitive-type-kwds) (#19="float" c-type-start-kwds c-primitive-type-kwds) (#18="double" c-type-start-kwds c-primitive-type-kwds) (#17="char" c-bitfield-kwds c-type-start-kwds c-primitive-type-kwds) (#16="_Imaginary" c-type-start-kwds c-primitive-type-kwds) (#15="_Complex" c-type-start-kwds c-primitive-type-kwds) (#14="_Bool" c-type-start-kwds c-primitive-type-kwds) (#13="vector" c-type-start-kwds c-primitive-type-kwds) (#12="transition" c-type-start-kwds c-primitive-type-kwds) (#11="string" c-type-start-kwds c-primitive-type-kwds) (#10="state" c-type-start-kwds c-primitive-type-kwds) (#9="parser" c-type-start-kwds c-primitive-type-kwds) (#8="out" c-type-start-kwds c-primitive-type-kwds) (#7="inout" c-type-start-kwds c-primitive-type-kwds) (#6="in" c-type-start-kwds c-primitive-type-kwds) (#5="header" c-type-start-kwds c-primitive-type-kwds) (#4="control" c-type-start-kwds c-primitive-type-kwds) (#3="bit" c-type-start-kwds c-primitive-type-kwds) (#2="apply" c-type-start-kwds c-primitive-type-kwds) (#1="action" c-type-start-kwds c-primitive-type-kwds) ("goto" c-simple-stmt-kwds c-before-label-kwds) ("__declspec" c-paren-nontype-kwds c-postfix-spec-kwds c-decl-hangon-kwds c-paren-any-kwds c-prefix-spec-kwds) ("__attribute__" c-paren-nontype-kwds c-postfix-spec-kwds c-decl-hangon-kwds c-paren-any-kwds c-prefix-spec-kwds) ("static" c-modifier-kwds c-prefix-spec-kwds) ("register" c-modifier-kwds c-prefix-spec-kwds) ("inline" c-modifier-kwds c-prefix-spec-kwds) ("extern" c-make-top-level-kwds c-nonsymbol-sexp-kwds c-modifier-kwds c-flat-decl-block-kwds c-other-block-decl-kwds c-prefix-spec-kwds) ("auto" c-modifier-kwds c-prefix-spec-kwds) ("function" c-modifier-kwds c-prefix-spec-kwds) ("enum" c-type-prefix-kwds c-brace-id-list-kwds c-typeless-decl-kwds c-brace-list-decl-kwds c-type-start-kwds c-defun-type-name-decl-kwds c-typedef-decl-kwds c-prefix-spec-kwds) ("union" c-type-prefix-kwds c-class-decl-kwds c-typeless-decl-kwds c-type-start-kwds c-defun-type-name-decl-kwds c-typedef-decl-kwds c-flat-decl-block-kwds c-prefix-spec-kwds) ("struct" c-type-prefix-kwds c-class-decl-kwds c-typeless-decl-kwds c-type-start-kwds c-defun-type-name-decl-kwds c-typedef-decl-kwds c-flat-decl-block-kwds c-prefix-spec-kwds) ("typedef" c-typedef-decl-kwds c-typedef-kwds c-prefix-spec-kwds)) make-vector 2 setplist apply nconc #[#30=(lang-const) "\301D\207" [lang-const t] 2] "\\(\\(?:__\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\|a\\(?:sm\\|uto\\)\\|break\\|c\\(?:ase\\|on\\(?:st\\|tinue\\)\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:or\\|unction\\)\\|goto\\|i\\(?:f\\|nline\\)\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:izeof\\|t\\(?:atic\\|ruct\\)\\|witch\\)\\|type\\(?:\\(?:de\\|o\\)f\\)\\|union\\|\\(?:volat\\|wh\\)ile\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\(\\(\\(?:sizeof\\)\\)\\([^[:alnum:]_$]\\|$\\)\\|\\(?:\\+\\+\\|--\\|[&(*+-]\\)\\)\\|[[:alpha:]_]\\|\\.?[0-9]\\|\\(?:%:\\|\\?\\?[=-]\\|[!#~]\\)\\|\\s\"\\|\\s|" "\\([{}();,]+\\)" "\\([{}();,]+\\)\\|^\\s *\\(#\\)\\s *define[ ]+\\(\\sw\\|_\\)+\\([^(a-zA-Z0-9_]\\|$\\)" (40) "^!%&(-/:-@[-^`{-~" "\\([*(]\\)\\|\\(auto\\|const\\|extern\\|function\\|inline\\|re\\(?:gister\\|strict\\)\\|static\\|volatile\\)\\>\\([^=_]\\|$\\)" "\\(\\*\\)\\([^=]\\|$\\)" "\\([)[(]\\|\\(const\\|restrict\\|volatile\\)\\>\\)" "{\\|\\(\\(?:__\\(?:attribute__\\|declspec\\)\\)\\)\\([^[:alnum:]_$]\\|$\\)" "\\({\\|\\(\\(?:__\\(?:attribute__\\|declspec\\)\\)\\)\\([^[:alnum:]_$]\\|$\\)\\)\\|[;,]" "\\(\\.\\.\\.\\)" boundp #31="font-lock-extra-types" delq #[#32=(re) "\301\302\"\205\207" [re string-match #33="[][.*+?^$\\]"] 3] #[#34=(re) "\301\302\"?\205 \207" [re string-match #35="[][.*+?^$\\]"] 3] #36="\\<\\(" c-concat-separated append c-make-keywords-re (#1# #2# #3# #4# #5# #6# #7# #8# #9# #10# #11# #12# #13# #14# #15# #16# #17# #18# #19# #20# #21# #22# #23# #24# #25#) #37="\\|" #38="\\)\\>" "[<;{},|+&>)-]" "\\<\\(\\(?:enum\\)\\)\\>[^][{};/#=]*{" "\\([{};]+\\)" "\"\\|\\(\\(?:NULL\\|_\\(?:Bool\\|Complex\\|Imaginary\\|_\\(?:a\\(?:\\(?:sm\\|ttribute\\)__\\)\\|declspec\\)\\)\\|a\\(?:ction\\|pply\\|sm\\|uto\\)\\|b\\(?:it\\|reak\\)\\|c\\(?:har\\|on\\(?:st\\|t\\(?:inue\\|rol\\)\\)\\)\\|do\\(?:uble\\)?\\|e\\(?:lse\\|num\\|xtern\\)\\|f\\(?:alse\\|loat\\|or\\|unction\\)\\|goto\\|header\\|i\\(?:n\\(?:line\\|\\(?:ou\\)?t\\)\\|[fn]\\)\\|long\\|out\\|parser\\|re\\(?:gister\\|strict\\|turn\\)\\|s\\(?:hort\\|i\\(?:gned\\|zeof\\)\\|t\\(?:at\\(?:e\\|ic\\)\\|r\\(?:ing\\|uct\\)\\)\\|witch\\)\\|t\\(?:r\\(?:ansition\\|ue\\)\\|ype\\(?:\\(?:de\\|o\\)f\\)\\)\\|un\\(?:ion\\|signed\\)\\|v\\(?:ector\\|o\\(?:id\\|latile\\)\\)\\|while\\)\\)\\([^[:alnum:]_$]\\|$\\)" (list nil font-lock-type-face c-reference-face-name font-lock-keyword-face) ((font-lock-comment-end-skip (c-lang-const c-font-lock-comment-end-skip)) (comment-start (c-lang-const comment-start)) (comment-end (c-lang-const comment-end)) (comment-start-skip (c-lang-const comment-start-skip)) (comment-end-can-be-escaped (c-lang-const comment-end-can-be-escaped)) (beginning-of-defun-function (c-lang-const beginning-of-defun-function)) (end-of-defun-function (c-lang-const end-of-defun-function)) (c-no-parens-syntax-table (and (c-lang-const c-make-no-parens-syntax-table) (funcall (eval (c-lang-const c-make-no-parens-syntax-table)))) nil) (c-identifier-syntax-modifications (c-lang-const c-identifier-syntax-modifications) "A list that describes the modifications that should be done to the\nmode syntax table to get a syntax table that matches all identifiers\nand keywords as words.\n\nThe list is just like the one used in `font-lock-defaults': Each\nelement is a cons where the car is the character to modify and the cdr\nthe new syntax, as accepted by `modify-syntax-entry'.") (c-identifier-syntax-table (let ((table (copy-syntax-table (c-mode-var #26#))) (mods c-identifier-syntax-modifications) mod) (while mods (setq mod (car mods) mods (cdr mods)) (modify-syntax-entry (car mod) (cdr mod) table)) table) "Syntax table built on the mode syntax table but additionally\nclassifies symbol constituents like `_' and `$' as word constituents,\nso that all identifiers are recognized as words.") (c-get-state-before-change-functions (let ((fs (c-lang-const c-get-state-before-change-functions))) (if (listp fs) fs (list fs))) "If non-nil, a list of functions called from c-before-change-hook.\nTypically these will record enough state to allow\n`c-before-font-lock-functions' to extend the region to fontify,\nand may do such things as removing text-properties which must be\nrecalculated.\n\nThese functions will be run in the order given. Each of them\ntakes 2 parameters, the BEG and END supplied to every\nbefore-change function; on entry, the buffer will have been\nwidened and match-data will have been saved; point is undefined\non both entry and exit; the return value is ignored.\n\nThe functions are called even when font locking isn't enabled.\n\nWhen the mode is initialized, the functions are called with\nparameters (point-min) and (point-max).") (c-before-font-lock-functions (let ((fs (c-lang-const c-before-font-lock-functions))) (if (listp fs) fs (list fs))) "If non-nil, a list of functions called just before font locking.\nTypically they will extend the region about to be fontified (see\nbelow) and will set `syntax-table' text properties on the region.\n\nThese functions will be run in the order given. Each of them\ntakes 3 parameters, the BEG, END, and OLD-LEN supplied to every\nafter-change function; point is undefined on both entry and exit;\non entry, the buffer will have been widened and match-data will\nhave been saved; the return value is ignored.\n\nThe functions may extend the region to be fontified by setting the\nbuffer local variables c-new-BEG and c-new-END.\n\nThe functions are called even when font locking is disabled.\n\nWhen the mode is initialized, these functions are called with\nparameters (point-min), (point-max) and .") (c-before-context-fontification-functions (let ((fs (c-lang-const c-before-context-fontification-functions))) (if (listp fs) fs (list fs))) "If non-nil, a list of functions called just before context (or\nother non-change) fontification is done. Typically they will\nextend the region.\n\nThese functions will be run in the order given. Each of them\ntakes 2 parameters, the BEG and END of the region to be\nfontified. Point is undefined on both entry and exit. On entry,\nthe buffer will have been widened and match-data will have been\nsaved; the return value is a cons of the adjusted\nregion, (NEW-BEG . NEW-END).") (c-at-vsemi-p-fn (c-lang-const c-at-vsemi-p-fn) "Contains a function \"Is there a virtual semicolon at POS or point?\".\nSuch a function takes one optional parameter, a buffer position (defaults to\npoint), and returns nil or t. This variable contains nil for languages which\ndon't have EOL terminated statements. ") (c-vsemi-status-unknown-p-fn (c-lang-const c-vsemi-status-unknown-p-fn) "A function \"are we unsure whether there is a virtual semicolon on this line?\".\nThe (admittedly kludgy) purpose of such a function is to prevent an infinite\nrecursion in c-beginning-of-statement-1 when point starts at a `while' token.\nThe function MUST NOT UNDER ANY CIRCUMSTANCES call `c-beginning-of-statement-1',\neven indirectly. This variable contains nil for languages which don't have\nEOL terminated statements.") (c-has-bitfields (c-lang-const c-has-bitfields) "Whether the language has bitfield declarations.") (c-single-quotes-quote-strings (c-lang-const c-single-quotes-quote-strings) "Whether the language uses single quotes for multi-char strings.\n\nNote that to set up a language to use this, additionally:\n(i) the syntax of \"'\" must be \"string quote\" (7);\n(ii) the language's value of `c-has-quoted-numbers' must be nil;\n(iii) the language's value of `c-get-state-before-change-functions' may not\n contain `c-parse-quotes-before-change';\n(iv) the language's value of `c-before-font-lock-functions' may not contain\n `c-parse-quotes-after-change'.") (c-string-delims (c-lang-const c-string-delims) nil) (c-has-quoted-numbers (c-lang-const c-has-quoted-numbers) "Whether the language has numbers quoted like 4'294'967'295.") (c-has-compound-literals (c-lang-const c-has-compound-literals) "Whether literal initializers {...} are used other than in initializations.") (c-modified-constant (c-lang-const c-modified-constant) "Regexp that matches a “modified” constant literal such as \"L\\='a\\='\",\na “long character”. In particular, this recognizes forms of constant\nwhich `c-backward-sexp' needs to be called twice to move backwards over.") (c-symbol-start (c-lang-const c-symbol-start) "Regexp that matches the start of a symbol, i.e. any identifier or\nkeyword. It's unspecified how far it matches. Does not contain a \\|\noperator at the top level.") (c-symbol-chars (c-lang-const c-symbol-chars) "Set of characters that can be part of a symbol.\nThis is of the form that fits inside [ ] in a regexp.") (c-symbol-char-key (c-lang-const c-symbol-char-key) "Regexp matching a sequence of at least one identifier character.") (c-symbol-key (c-lang-const c-symbol-key) "Regexp matching identifiers and keywords (with submatch 0). Assumed\nto match if `c-symbol-start' matches on the same position.") (c-nonsymbol-chars (c-lang-const c-nonsymbol-chars) "This is the set of chars that can't be part of a symbol, i.e. the\nnegation of `c-symbol-chars'.") (c-nonsymbol-key (c-lang-const c-nonsymbol-key) "Regexp that matches any character that can't be part of a symbol.\nIt's usually appended to other regexps to avoid matching a prefix.\nIt's assumed to not contain any submatchers.") (c-opt-identifier-concat-key (c-lang-const c-opt-identifier-concat-key) nil) (c-identifier-start (c-lang-const c-identifier-start) "Regexp that matches the start of an (optionally qualified) identifier.\nIt should also match all keywords. It's unspecified how far it\nmatches.") (c-identifier-key (c-lang-const c-identifier-key) "Regexp matching a fully qualified identifier, like \"A::B::c\" in\nC++. It does not recognize the full range of syntactic whitespace\nbetween the tokens; `c-forward-name' has to be used for that. It\nshould also not match identifiers containing parenthesis groupings,\ne.g. identifiers with template arguments such as \"A\" in C++.") (c-string-escaped-newlines (c-lang-const c-string-escaped-newlines) "Set if the language support backslash escaped newlines inside string\nliterals.") (c-multiline-string-start-char (c-lang-const c-multiline-string-start-char) "Set if the language supports multiline string literals without escaped\nnewlines. If t, all string literals are multiline. If a character,\nonly literals where the open quote is immediately preceded by that\nliteral are multiline.") (c-string-innards-re-alist (c-lang-const c-string-innards-re-alist) nil) (c-opt-cpp-symbol (c-lang-const c-opt-cpp-symbol) "The symbol which starts preprocessor constructs when in the margin.") (c-opt-cpp-prefix (c-lang-const c-opt-cpp-prefix) "Regexp matching the prefix of a cpp directive in the languages that\nnormally use that macro preprocessor. Tested at bol or at boi.\nAssumed to not contain any submatches or \\| operators.") (c-anchored-cpp-prefix (c-lang-const c-anchored-cpp-prefix) "Regexp matching the prefix of a cpp directive anchored to BOL,\nin the languages that have a macro preprocessor.") (c-opt-cpp-start (c-lang-const c-opt-cpp-start) "Regexp matching the prefix of a cpp directive including the directive\nname, or nil in languages without preprocessor support. The first\nsubmatch surrounds the directive name.") (c-cpp-include-key (c-lang-const c-cpp-include-key) nil) (c-opt-cpp-macro-define (c-lang-const c-opt-cpp-macro-define) "Cpp directive (without the prefix) that is followed by a macro\ndefinition, or nil if the language doesn't have any.") (c-opt-cpp-macro-define-start (c-lang-const c-opt-cpp-macro-define-start) nil) (c-opt-cpp-macro-define-id (c-lang-const c-opt-cpp-macro-define-id) nil) (c-cpp-expr-intro-re (c-lang-const c-cpp-expr-intro-re) "Regexp which matches the start of a CPP directive which contains an\nexpression, or nil if there aren't any in the language.") (c-cpp-expr-functions-key (c-lang-const c-cpp-expr-functions-key) nil) (c-operator-re (c-lang-const c-operator-re) nil) (c-non-after-{}-ops-re (c-lang-const c-non-after-{}-ops-re) nil) (c-overloadable-operators-regexp (c-lang-const c-overloadable-operators-regexp) nil) (c-opt-op-identifier-prefix (c-lang-const c-opt-op-identifier-prefix) "Regexp matching the token before the ones in\n`c-overloadable-operators' when operators are specified in their\n\"identifier form\". This typically matches \"operator\" in C++ where\noperator functions are specified as e.g. \"operator +\". It's nil in\nlanguages without operator functions or where the complete operator\nidentifier is listed in `c-overloadable-operators'.\n\nThis regexp is assumed to not match any non-operator identifier.") (c-ambiguous-overloadable-or-identifier-prefix-re (c-lang-const c-ambiguous-overloadable-or-identifier-prefix-re) nil) (c-nonsymbol-token-regexp (c-lang-const c-nonsymbol-token-regexp) nil) (c-assignment-op-regexp (c-lang-const c-assignment-op-regexp) nil) (c-arithmetic-op-regexp (c-lang-const c-arithmetic-op-regexp) nil) (c-:$-multichar-token-regexp (c-lang-const c-:$-multichar-token-regexp) nil) (c-<>-multichar-token-regexp (c-lang-const c-<>-multichar-token-regexp) nil) (c-<-op-cont-regexp (c-lang-const c-<-op-cont-regexp) nil) (c-<-pseudo-digraph-cont-regexp (c-lang-const c-<-pseudo-digraph-cont-regexp) "Regexp matching the continuation of a pseudo digraph starting \"<\".\nThis is used only in C++ Mode, where \"<::\" is handled as a\ntemplate opener followed by the \"::\" operator - usually.") (c-<-pseudo-digraph-cont-len (c-lang-const c-<-pseudo-digraph-cont-len) "The maximum length of the main bit of a `c-<-pseudo-digraph-cont-regexp' match.\nThis doesn't count the merely contextual bits of the regexp match.") (c->-op-cont-regexp (c-lang-const c->-op-cont-regexp) nil) (c->-op-without->-cont-regexp (c-lang-const c->-op-without->-cont-regexp) nil) (c-multichar->-op-not->>->>>-regexp (c-lang-const c-multichar->-op-not->>->>>-regexp) nil) (c-:-op-cont-regexp (c-lang-const c-:-op-cont-regexp) nil) (c-stmt-delim-chars (c-lang-const c-stmt-delim-chars) nil) (c-stmt-boundary-skip-chars (c-lang-const c-stmt-boundary-skip-chars) nil) (c-stmt-boundary-skip-list (c-lang-const c-stmt-boundary-skip-list) nil) (c-stmt-delim-chars-with-comma (c-lang-const c-stmt-delim-chars-with-comma) nil) (c-stmt-boundary-skip-chars-with-comma (c-lang-const c-stmt-boundary-skip-chars-with-comma) nil) (c-stmt-boundary-skip-list-with-comma (c-lang-const c-stmt-boundary-skip-list-with-comma) nil) (c-pack-key (c-lang-const c-pack-key) nil) (c-auto-ops-re (c-lang-const c-auto-ops-re) nil) (c-haskell-op-re (c-lang-const c-haskell-op-re) nil) (c-pre-start-tokens (c-lang-const c-pre-start-tokens) "List of operators following which an apparent declaration (e.g.\n\"t1 *fn (t2 *b);\") is most likely to be an actual declaration\n(as opposed to an arithmetic expression).") (c-pre-lambda-tokens-re (c-lang-const c-pre-lambda-tokens-re) nil) (c-line-comment-starter (c-lang-const c-line-comment-starter) "String that starts line comments, or nil if such don't exist.\nLine comments are always terminated by newlines. At least one of\n`c-block-comment-starter' and this one is assumed to be set.\n\nNote that it's currently not enough to set this to support a new\ncomment style. Other stuff like the syntax table must also be set up\nproperly.") (c-block-comment-starter (c-lang-const c-block-comment-starter) "String that starts block comments, or nil if such don't exist.\nBlock comments are ended by `c-block-comment-ender', which is assumed\nto be set if this is. At least one of `c-line-comment-starter' and\nthis one is assumed to be set.\n\nNote that it's currently not enough to set this to support a new\ncomment style. Other stuff like the syntax table must also be set up\nproperly.") (c-block-comment-ender (c-lang-const c-block-comment-ender) "String that ends block comments, or nil if such don't exist.\n\nNote that it's currently not enough to set this to support a new\ncomment style. Other stuff like the syntax table must also be set up\nproperly.") (c-block-comment-ender-regexp (c-lang-const c-block-comment-ender-regexp) nil) (c-block-comment-awkward-chars (c-lang-const c-block-comment-awkward-chars) "List of characters which, inside a block comment, could be the first\ncharacter of a double character construct. This doesn't include\nbackslash.") (c-comment-start-regexp (c-lang-const c-comment-start-regexp) nil) (c-block-comment-start-regexp (c-lang-const c-block-comment-start-regexp) nil) (c-line-comment-start-regexp (c-lang-const c-line-comment-start-regexp) nil) (c-last-c-comment-end-on-line-re (c-lang-const c-last-c-comment-end-on-line-re) "Regexp which matches the last block comment ender on the\ncurrent line, if any, or nil in those languages without block\ncomments. When a match is found, submatch 1 contains the comment\nender.") (c-literal-start-regexp (c-lang-const c-literal-start-regexp) nil) (c-doc-comment-start-regexp (c-lang-const c-doc-comment-start-regexp) "Regexp to match the start of documentation comments.") (c-block-comment-is-default (c-lang-const c-block-comment-is-default) "Non-nil when the default comment style is block comment.") (c-syntactic-ws-start (c-lang-const c-syntactic-ws-start) nil) (c-syntactic-ws-end (c-lang-const c-syntactic-ws-end) nil) (c-syntactic-eol (c-lang-const c-syntactic-eol) nil) (c-paragraph-start (c-lang-const c-paragraph-start) "Regexp to append to `paragraph-start'.") (c-paragraph-separate (c-lang-const c-paragraph-separate) "Regexp to append to `paragraph-separate'.") (c-return-key (c-lang-const c-return-key) nil) (c-primitive-type-key (c-lang-const c-primitive-type-key) nil) (c-typedef-key (c-lang-const c-typedef-key) nil) (c-typeof-key (c-lang-const c-typeof-key) nil) (c-template-typename-key (c-lang-const c-template-typename-key) nil) (c-type-prefix-key (c-lang-const c-type-prefix-key) nil) (c-opt-type-modifier-prefix-key (c-lang-const c-opt-type-modifier-prefix-key) nil) (c-opt-type-modifier-key (c-lang-const c-opt-type-modifier-key) nil) (c-opt-type-component-key (c-lang-const c-opt-type-component-key) nil) (c-type-decl-suffix-ws-ids-key (c-lang-const c-type-decl-suffix-ws-ids-key) nil) (c-class-id-suffix-ws-ids-key (c-lang-const c-class-id-suffix-ws-ids-key) nil) (c-class-key (c-lang-const c-class-key) nil) (c-brace-list-key (c-lang-const c-brace-list-key) nil) (c-after-brace-list-key (c-lang-const c-after-brace-list-key) nil) (c-recognize-post-brace-list-type-p (c-lang-const c-recognize-post-brace-list-type-p) "Set to t when we recognize a colon and then a type after an enum,\ne.g., enum foo : int { A, B, C };") (c-other-decl-block-key (c-lang-const c-other-decl-block-key) nil) (c-other-decl-block-key-in-symbols-alist (mapcar (lambda #27# (cons elt (if (string= elt #28#) 'inextern-lang (intern (concat #29# elt))))) (c-lang-const c-other-block-decl-kwds)) "Alist associating keywords in c-other-decl-block-decl-kwds with\ntheir matching \"in\" syntactic symbols.") (c-defun-type-name-decl-key (c-lang-const c-defun-type-name-decl-key) nil) (c-typedef-decl-key (c-lang-const c-typedef-decl-key) nil) (c-using-key (c-lang-const c-using-key) nil) (c-no-type-key (c-lang-const c-no-type-key) nil) (c-equals-type-clause-key (c-lang-const c-equals-type-clause-key) nil) (c-decl-hangon-key (c-lang-const c-decl-hangon-key) nil) (c-prefix-spec-kwds-re (c-lang-const c-prefix-spec-kwds-re) nil) (c-specifier-key (c-lang-const c-specifier-key) nil) (c-not-decl-init-keywords (c-lang-const c-not-decl-init-keywords) nil) (c-not-primitive-type-keywords-regexp (c-lang-const c-not-primitive-type-keywords-regexp) nil) (c-protection-key (c-lang-const c-protection-key) nil) (c-post-protection-token (c-lang-const c-post-protection-token) "The token which (may) follow a protection keyword,\ne.g. the \":\" in C++ Mode's \"public:\". nil if there is no such token.") (c-opt-block-decls-with-vars-key (c-lang-const c-opt-block-decls-with-vars-key) nil) (c-postfix-decl-spec-key (c-lang-const c-postfix-decl-spec-key) nil) (c-make-top-level-key (c-lang-const c-make-top-level-key) nil) (c-colon-type-list-re (c-lang-const c-colon-type-list-re) "Regexp matched after the keywords in `c-colon-type-list-kwds' to skip\nforward to the colon. The end of the match is assumed to be directly\nafter the colon, so the regexp should end with \":\". Must be a\nregexp if `c-colon-type-list-kwds' isn't nil.") (c-paren-nontype-key (c-lang-const c-paren-nontype-key) nil) (c-opt-<>-sexp-key (c-lang-const c-opt-<>-sexp-key) nil) (c-inside-<>-type-key (c-lang-const c-inside-<>-type-key) nil) (c-block-stmt-1-key (c-lang-const c-block-stmt-1-key) nil) (c-block-stmt-1-2-key (c-lang-const c-block-stmt-1-2-key) nil) (c-block-stmt-2-key (c-lang-const c-block-stmt-2-key) nil) (c-block-stmt-hangon-key (c-lang-const c-block-stmt-hangon-key) nil) (c-opt-block-stmt-key (c-lang-const c-opt-block-stmt-key) nil) (c-simple-stmt-key (c-lang-const c-simple-stmt-key) nil) (c-paren-stmt-key (c-lang-const c-paren-stmt-key) nil) (c-opt-asm-stmt-key (c-lang-const c-opt-asm-stmt-key) nil) (c-case-kwds-regexp (c-lang-const c-case-kwds-regexp) nil) (c-label-kwds-regexp (c-lang-const c-label-kwds-regexp) nil) (c-opt-inexpr-brace-list-key (c-lang-const c-opt-inexpr-brace-list-key) nil) (c-brace-stack-thing-key (c-lang-const c-brace-stack-thing-key) nil) (c-brace-stack-no-semi-key (c-lang-const c-brace-stack-no-semi-key) nil) (c-decl-block-key (c-lang-const c-decl-block-key) nil) (c-opt-bitfield-key (c-lang-const c-opt-bitfield-key) nil) (c-std-abbrev-keywords (c-lang-const c-std-abbrev-keywords) "List of keywords which may need to cause electric indentation.") (c-keywords-regexp (c-lang-const c-keywords-regexp) nil) (c-stmt-block-only-keywords-regexp (c-lang-const c-stmt-block-only-keywords-regexp) nil) (c-keywords-obarray (let* ((alist (c-lang-const c-keyword-member-alist)) kwd lang-const-list (obarray (make-vector (* (length alist) 2) 0))) (while alist (setq kwd (caar alist) lang-const-list (cdar alist) alist (cdr alist)) (setplist (intern kwd obarray) (apply 'nconc (mapcar (lambda #30# (list lang-const t)) lang-const-list)))) obarray) nil) (c-regular-keywords-regexp (c-lang-const c-regular-keywords-regexp) nil) (c-primary-expr-regexp (c-lang-const c-primary-expr-regexp) nil) (c-decl-start-colon-kwd-re (c-lang-const c-decl-start-colon-kwd-re) "Regexp matching a keyword that is followed by a colon, where\n the whole construct can precede a declaration.\n E.g. \"public:\" in C++.") (c-decl-prefix-re (c-lang-const c-decl-prefix-re) nil) (c-decl-start-re (c-lang-const c-decl-start-re) "Regexp matching the start of any declaration, cast or label.\nIt's used on the token after the one `c-decl-prefix-re' matched. This\nregexp should not try to match those constructs accurately as it's\nonly used as a sieve to avoid spending more time checking other\nconstructs.") (c-decl-prefix-or-start-re (c-lang-const c-decl-prefix-or-start-re) nil) (c-dposr-cpp-macro-depth (c-lang-const c-dposr-cpp-macro-depth) nil) (c-cast-parens (c-lang-const c-cast-parens) nil) (c-block-prefix-charset (c-lang-const c-block-prefix-charset) nil) (c-type-decl-prefix-key (c-lang-const c-type-decl-prefix-key) nil) (c-type-decl-operator-prefix-key (c-lang-const c-type-decl-operator-prefix-key) "Regexp matching any declarator operator which isn't a keyword,\nthat might precede the identifier in a declaration, e.g. the\n\"*\" in \"char *argv\". The end of the first submatch is taken\nas the end of the operator. Identifier syntax is in effect when\nthis is matched (see `c-identifier-syntax-table').") (c-type-decl-suffix-key (c-lang-const c-type-decl-suffix-key) nil) (c-after-suffixed-type-decl-key (c-lang-const c-after-suffixed-type-decl-key) nil) (c-after-suffixed-type-maybe-decl-key (c-lang-const c-after-suffixed-type-maybe-decl-key) nil) (c-opt-type-concat-key (c-lang-const c-opt-type-concat-key) nil) (c-opt-type-suffix-key (c-lang-const c-opt-type-suffix-key) "Regexp matching operators that might follow after a type, or nil in\nlanguages that don't have such operators. The end of the first\nsubmatch is taken as the end of the operator. This should not match\nthings like C++ template arglists if `c-recognize-<>-arglists' is set.\nIt's undefined whether identifier syntax (see `c-identifier-syntax-table')\nis in effect or not.") (c-known-type-key (let* ((extra-types (when (boundp (c-mode-symbol #31#)) (c-mode-var "font-lock-extra-types"))) (regexp-strings (delq nil (mapcar (lambda #32# (when (string-match #33# re) re)) extra-types))) (plain-strings (delq nil (mapcar (lambda #34# (unless (string-match #35# re) re)) extra-types)))) (concat #36# (c-concat-separated (append (list (c-make-keywords-re nil (append (c-lang-const c-primitive-type-kwds) plain-strings))) regexp-strings) #37#) #38#)) nil) (c-special-brace-lists (c-lang-const c-special-brace-lists) "List of open- and close-chars that makes up a pike-style brace list,\ni.e., for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this\nlist.") (c-recognize-knr-p (c-lang-const c-recognize-knr-p) "Non-nil means K&R style argument declarations are valid.") (c-pre-id-bracelist-key (c-lang-const c-pre-id-bracelist-key) nil) (c-pre-brace-non-bracelist-key (c-lang-const c-pre-brace-non-bracelist-key) "A regexp matching tokens which, preceding a brace, make it a non-bracelist.") (c-recognize-typeless-decls (c-lang-const c-recognize-typeless-decls) "Non-nil means function declarations without return type should be\nrecognized. That can introduce an ambiguity with parenthesized macro\ncalls before a brace block. This setting does not affect declarations\nthat are preceded by a declaration starting keyword, so\ne.g. `c-typeless-decl-kwds' may still be used when it's set to nil.") (c-recognize-<>-arglists (c-lang-const c-recognize-<>-arglists) "Non-nil means C++ style template arglists should be handled. More\nspecifically, this means a comma separated list of types or\nexpressions surrounded by \"<\" and \">\". It's always preceded by an\nidentifier or one of the keywords on `c-<>-type-kwds' or\n`c-<>-arglist-kwds'. If there's an identifier before then the whole\nexpression is considered to be a type.") (c-<>-notable-chars-re (c-lang-const c-<>-notable-chars-re) "A regexp matching any single character notable inside a <...> construct.\nThis must include \"<\" and \">\", and should include \",\", and\nany character which cannot be valid inside such a construct.\nThis is used in `c-forward-<>-arglist-recur' to try to detect\nsequences of tokens which cannot be a template/generic construct.\nWhen \"(\" is present, that defun will attempt to parse a\nparenthesized expression inside the template. When \")\" is\npresent it will treat an unbalanced closing paren as a sign of\nthe invalidity of the putative template construct.") (c-enum-clause-introduction-re (c-lang-const c-enum-clause-introduction-re) nil) (c-enums-contain-decls (c-lang-const c-enums-contain-decls) "Non-nil means that an enum structure can contain declarations.") (c-recognize-paren-inits (c-lang-const c-recognize-paren-inits) "Non-nil means that parenthesis style initializers exist,\ni.e. constructs like\n\nFoo bar (gnu);\n\nin addition to the more classic\n\nFoo bar = gnu;") (c-recognize-bare-brace-inits (c-lang-const c-recognize-bare-brace-inits) "Non-nil means that brace initializers without \"=\" exist,\ni.e. constructs like\n\nint foo[] {1, 2, 3};\n\nin addition to the more classic\n\nint foo[] = {1, 2, 3};") (c-recognize-paren-inexpr-blocks (c-lang-const c-recognize-paren-inexpr-blocks) "Non-nil to recognize gcc style in-expression blocks,\ni.e. compound statements surrounded by parentheses inside expressions.") (c-opt-<>-arglist-start (c-lang-const c-opt-<>-arglist-start) nil) (c-opt-<>-arglist-start-in-paren (c-lang-const c-opt-<>-arglist-start-in-paren) nil) (c-opt-postfix-decl-spec-key (c-lang-const c-opt-postfix-decl-spec-key) nil) (c-recognize-colon-labels (c-lang-const c-recognize-colon-labels) "Non-nil if generic labels ending with \":\" should be recognized.\nThat includes labels in code and access keys in classes. This does\nnot apply to labels recognized by `c-label-kwds' and\n`c-opt-extra-label-key'.") (c-label-prefix-re (c-lang-const c-label-prefix-re) "Regexp like `c-decl-prefix-re' that matches any token that can precede\na generic colon label. Not used if `c-recognize-colon-labels' is\nnil.") (c-nonlabel-token-key (c-lang-const c-nonlabel-token-key) "Regexp matching things that can't occur in generic colon labels,\nneither in a statement nor in a declaration context. The regexp is\ntested at the beginning of every sexp in a suspected label,\ni.e. before \":\". Only used if `c-recognize-colon-labels' is set.") (c-nonlabel-nonparen-token-key (c-lang-const c-nonlabel-nonparen-token-key) "Regexp matching things that can't occur in generic colon labels,\nneither in a statement nor in a declaration context, with the\nexception of an open parenthesis. The regexp is tested at the\nbeginning of every sexp in a suspected label, i.e. before \":\".\nOnly used if `c-recognize-colon-labels' is set.") (c-nonlabel-token-2-key (c-lang-const c-nonlabel-token-2-key) "Regexp matching things that can't occur two symbols before a colon in\na label construct. This catches C++'s inheritance construct \"class foo\n: bar\". Only used if `c-recognize-colon-labels' is set.") (c-opt-extra-label-key (c-lang-const c-opt-extra-label-key) "Optional regexp matching labels.\nNormally, labels are detected according to `c-nonlabel-token-key',\n`c-decl-prefix-re' and `c-nonlabel-decl-prefix-re'. This regexp can\nbe used if there are additional labels that aren't recognized that\nway.") (c-opt-friend-key (c-lang-const c-opt-friend-key) nil) (c-opt-method-key (c-lang-const c-opt-method-key) nil) (c-type-decl-end-used (c-lang-const c-type-decl-end-used) nil) (c-maybe-decl-faces (c-lang-const c-maybe-decl-faces) "List of faces that might be put at the start of a type when\n`c-font-lock-declarations' runs. This must be evaluated (with `eval') at\nruntime to get the actual list of faces. This ensures that face name\naliases in Emacs are resolved.")) eval message "Eval error in the `c-lang-defvar' or `c-lang-setvar' for `%s'%s: %S" format " (fallback source eval - %s compiled with CC Mode %s but loaded with %s)" "5.35.1" "" signal c-common-init easy-menu-add run-hooks c-mode-common-hook p4lang-mode-hook c-update-modeline] 9 (#$ . 21022) nil]) (provide 'p4lang-mode)