File: //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/c_cpp.cpython-38.pyc
U
ƨ\) � @ s� d Z ddlZddlmZmZmZmZmZmZm Z m
Z
ddlmZ ddl
mZmZmZmZmZmZmZmZmZ ddgZG dd � d e�ZG d
d� de�ZG dd� de�ZdS )z�
pygments.lexers.c_cpp
~~~~~~~~~~~~~~~~~~~~~
Lexers for C/C++ languages.
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� N)�
RegexLexer�include�bygroups�using�this�inherit�default�words)�get_bool_opt) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Error�CLexer�CppLexerc @ s� e Zd ZdZdZdZdejdfdejdfde d ee e
�ej�dfde d
ee e
�ej�dfdefdefd
efdejfdej
fdej
fg
deeje�dfdeejejejej�fdejfdejfdejfdejfdejfdefdefdefeddd�efdejfed dd�ejfd!ejfed"d#dd$�ejfd%ejfd&eejee�fd'efge d(�d)ee e
�ej!e e
�e e
�e�d*fd+ee e
�ej!e e
�e e
�e�fe"d,�ge d(�e d-�d.efd/ed0fge d(�e d-�d/efd1ed2fd3ed0fgd4ed0fd5ej#fd6efd
efd7efgd8e d9 eejeej$�fd:ejfd;ej
fd<ejd0fd=ejfd>ejfdejd0fgd?ejd2fd@ejd0fdAejd0fdBefgdC�Z%e&dD�Z'e&dE�Z(e&dF�Z)dGdH� Z*dIdJ� Z+dKS )L�CFamilyLexerzg
For C family source code. This is used as a base class to avoid repetitious
definitions.
z(?:\s|//.*?\n|/[*].*?[*]/)+z\s*(?:/[*].*?[*]/\s*)?z^#if\s+0�if0z^#�macroz^(z
)(#if\s+0)z)(#)z\nz\s+z\\\nz//(\n|[\w\W]*?[^\\]\n)z/(\\\n)?[*][\w\W]*?[*](\\\n)?/z/(\\\n)?[*][\w\W]*z(L?)(")�stringz:(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')z'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*z(\d+\.\d*|\.\d+|\d+[fF])[fF]?z0x[0-9a-fA-F]+[LlUu]*z0[0-7]+[LlUu]*z
\d+[LlUu]*z\*/z[~!%^&*+=|?:<>/-]z
[()\[\],.])�asm�auto�breakZcaseZconst�continuer Zdo�else�enumZextern�forZgoto�if�registerZ
restricted�returnZsizeofZstaticZstructZswitchZtypedef�unionZvolatile�while�\b��suffixz>(bool|int|long|float|short|double|char|unsigned|signed|void)\b)ZinlineZ_inlineZ__inlineZnaked�restrict�thread�typenamez(__m(128i|128d|128|64))\b)r Zint8Zbased�exceptZint16ZstdcallZcdeclZfastcallZint32Zdeclspec�finallyZint64�tryZleave�wchar_tZw64Z unaligned�raiseZnoopZ
identifierZforceinlineZassume�__��prefixr( z(true|false|NULL)\bz([a-zA-Z_]\w*)(\s*)(:)(?!:)�[a-zA-Z_]\w*�
whitespacezB((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;{]*)(\{)�functionz@((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;]*)(;)� statement�
statementsz[{}]�;�#popz\{z#pushz\}�"zO\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})z [^\\"\n]+z\\z
(include)(z )([^\n]+)z[^/\n]+z/[*](.|\n)*?[*]/z//.*?\n�/z (?<=\\)\nz^\s*#if.*?(?<!\\)\nz^\s*#el(?:se|if).*\nz^\s*#endif.*?(?<!\\)\nz.*?\n)r5 r8 �rootr7 r6 r r r )Zsize_tZssize_tZoff_tr/ Z ptrdiff_tZsig_atomic_tZfpos_tZclock_tZtime_tZva_listZjmp_bufZFILEZDIRZdiv_tZldiv_tZ mbstate_tZ wctrans_tZwint_tZwctype_t)Z_BoolZ_ComplexZint8_tZint16_tZint32_tZint64_tZuint8_tZuint16_tZuint32_tZuint64_tZint_least8_tZ
int_least16_tZ
int_least32_tZ
int_least64_tZ
uint_least8_tZuint_least16_tZuint_least32_tZuint_least64_tZint_fast8_tZint_fast16_tZint_fast32_tZint_fast64_tZuint_fast8_tZ
uint_fast16_tZ
uint_fast32_tZ
uint_fast64_tZintptr_tZ uintptr_tZintmax_tZ uintmax_t)Z clockid_tZ cpu_set_tZ cpumask_tZdev_tZgid_tZid_tZino_tZkey_tZmode_tZnfds_tZpid_tZrlim_tZsig_tZsighandler_tZ siginfo_tZsigset_tZsigval_tZ socklen_tZtimer_tZuid_tc K s<