Your IP : 216.73.216.213
B
ɽ�\) � @ 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-2019 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�breakZcase�const�continuer Zdo�else�enum�extern�forZgoto�if�registerZ
restricted�return�sizeof�static�struct�switchZtypedef�unionZvolatile�whilez\b)�suffixz>(bool|int|long|float|short|double|char|unsigned|signed|void)\b)�inlineZ_inlineZ__inlineZnaked�restrict�thread�typenamez(__m(128i|128d|128|64))\b)r Zint8Zbased�exceptZint16ZstdcallZcdeclZfastcallZint32Zdeclspec�finallyZint64�tryZleave�wchar_tZw64Z unaligned�raiseZnoop�
identifierZforceinlineZassume�__)�prefixr, z(true|false|NULL)\bz([a-zA-Z_]\w*)(\s*)(:)(?!:)z[a-zA-Z_]\w*�
whitespacezB((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;{]*)(\{)�functionz@((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;]*)(;)� statement�
statementsz[{}]�;z#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)r9 r<