File: //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/objective.cpython-38.pyc
U
�a`�X � @ s� d Z ddlZddlmZmZmZmZmZmZm Z m
Z
ddlmZm
Z
mZmZmZmZmZmZmZ ddlmZmZ dddd gZd
d� ZG dd� dee��ZG d
d� dee��ZG dd� de�ZG dd � d e�ZdS )z�
pygments.lexers.objective
~~~~~~~~~~~~~~~~~~~~~~~~~
Lexers for Objective-C family languages.
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� N)�
RegexLexer�include�bygroups�using�this�words�inherit�default) �Text�Keyword�Name�String�Operator�Number�Punctuation�Literal�Comment)�CLexer�CppLexer�ObjectiveCLexer�ObjectiveCppLexer�
LogosLexer�
SwiftLexerc s0 t �d�� t �d��G � ��fdd�d��}|S )z^
Generate a subclass of baselexer that accepts the Objective-C syntax
extensions.
z @(?:end|implementation|protocol)z<\[\s*[a-zA-Z_]\w*\s+(?:[a-zA-Z_]\w*\s*\]|(?:[a-zA-Z_]\w*)?:)c sz e Zd ZdZdedfdefdejfdejfdejfdejfd ej fd
ej
fdedfd
edfdedfeddd�e
feddd�e
jfdejfdejfde
jfdejfdee
e�dfdee
e�dfdefegdeejeejee�dfd eejeej�d!fd"eejeejee�dfd#eejeej�d!fd$eejee�dfd%ejd!fgd&eeje�d'fd(eeje�d!fged)�ed*�d+efd,ed-fd.ed!fgd/eeeee�eej�d0feged)�d1efd2efd3eee�eej�fd4ejfd+ed!fd,ed5fed!�gd6ed7fd8ed!fed9�gd6ed-fd8ed!fed9�gd:ed;fd<ed!fed9�gd:ed-fd<ed!fed9�gd.ed!fed9�gd=�Z� �fd>d?�Z�fd@dA�ZdBS )Cz-objective.<locals>.GeneratedObjectiveCVariantzU
Implements Objective-C syntax on top of an existing C family lexer.
�@"�stringz @(YES|NO)z3@'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'z&@(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?z@(\d+\.\d*|\.\d+|\d+[fF])[fF]?z@0x[0-9a-fA-F]+[Ll]?z
@0[0-7]+[Ll]?z @\d+[Ll]?z@\(�literal_numberz@\[�
literal_arrayz@\{�literal_dictionary))z @selectorz@privatez
@protectedz@publicz@encodez
@synchronizedz@tryz@throwz@catchz@finallyz@endz @propertyz@synthesizeZ__bridgeZ__bridge_transferZ__autoreleasingZ__blockZ__weakZ__strong�weakZstrong�copyZretainZassignZunsafe_unretainedZatomicZ nonatomic�readonlyZ readwrite�setter�getterZtypeof�in�out�inout�release�classz@dynamicz @optionalz @requiredz@autoreleasepool�\b��suffix) �idZinstancetype�ClassZIMPZSELZBOOLZIBOutletZIBActionZunicharz@(true|false|YES|NO)\nz(YES|NO|nil|self|super)\bz3(Boolean|UInt8|SInt8|UInt16|SInt16|UInt32|SInt32)\bz(TRUE|FALSE)\bz!(@interface|@implementation)(\s+))�#pop�oc_classnamez(@class|@protocol)(\s+))r- �oc_forward_classname�@z7([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)(\{))r- �oc_ivars�.([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?r- z6([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))(\s*)(\{)z-([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))z([a-zA-Z$_][\w$]*)(\s*)(\{)�([a-zA-Z$_][\w$]*)z([a-zA-Z$_][\w$]*)(\s*,\s*)r/ z([a-zA-Z$_][\w$]*)(\s*;?)Z
whitespace�
statements�;z\{�#pushz\}z/^([-+])(\s*)(\(.*?\))?(\s*)([a-zA-Z$_][\w$]*:?)�method�,z\.\.\.z (\(.*?\))(\s*)([a-zA-Z$_][\w$]*)z[a-zA-Z$_][\w$]*:�function�\(�literal_number_inner�\)Z statementz\[�literal_array_innerz\])r4 r. r/ r1 �rootr7 r r; r r= r c s<