3 ��X � @ sb d Z ddlmZmZmZmZmZ ddlmZm Z m Z mZmZm Z mZmZ dgZG dd� de�ZdS )z� pygments.lexers.ampl ~~~~~~~~~~~~~~~~~~~~ Lexers for the ampl language. <http://ampl.com/> :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � )� RegexLexer�bygroups�using�this�words)�Text�Comment�Operator�Keyword�Name�String�Number�Punctuation� AmplLexerc K @ s e Zd ZdZdZdgZdgZddefdejfde j fd e jfed�dEdF�e jfdGe jfdHejfdIej fdJefdKeejee j�fdLee jeej�fdMee jeeeejeeeej� fdNee jeee�eej�fed�dEdEd��ejfd�efed�dEdF�e jfd�ejfd�ejfd�ejfd�efgiZd�S )�r z: For AMPL source code. .. versionadded:: 2.2 ZAmplZamplz*.run�rootz\nz\s+z#.*?\nz/[*](.|\n)*?[*]/�call�cd�close�commands�data�delete�display�drop�end�environ�exit�expand�include�load�model� objective�option�problem�purge�quit� redeclare�reload�remove�reset�restore�shell�show� solexpand�solution�solve�update�unload�xref�coeff�coef�cover�obj�interval�default�from�to�to_come�net_in�net_out�dimen� dimension�check�complements�write�function�pipe�format�if�then�else�in�while�repeat�forz\b)�suffixzF(integer|binary|symbolic|ordered|circular|reversed|INOUT|IN|OUT|LOCAL)z\".*?\"z\'.*?\'z[()\[\]{},;:]+zu\b(\w+)(\.)(astatus|init0|init|lb0|lb1|lb2|lb|lrc|lslack|rc|relax|slack|sstatus|status|ub0|ub1|ub2|ub|urc|uslack|val)zr(set|param|var|arc|minimize|maximize|subject to|s\.t\.|subj to|node|table|suffix|read table|write table)(\s+)(\w+)z0(param)(\s*)(:)(\s*)(\w+)(\s*)(:)(\s*)((\w|\s)+)z+(let|fix|unfix)(\s*)((?:\{.*\})?)(\s*)(\w+)�abs�acos�acosh�alias�asin�asinh�atan�atan2�atanh�ceil�ctime�cos�exp�floor�log�log10�max�min� precision�round�sin�sinh�sqrt�tan�tanh�time�trunc�Beta�Cauchy�Exponential�Gamma�Irand224�Normal�Normal01�Poisson�Uniform� Uniform01�num�num0�ichar�char�length�substr�sprintf�match�sub�gsub�print�printf�next�nextw�prev�prevw�first�last�ord�ord0�card�arity� indexarity)�prefixrL z>(\+|\-|\*|/|\*\*|=|<=|>=|==|\||\^|<|>|\!|\.\.|:=|\&|\!=|<<|>>)�or�exists�forall�and�not�within�union�diff� difference�symdiff�inter� intersect�intersection�cross�setof�by�less�sum�prod�product�div�modz*(\d+\.(?!\.)\d*|\.(?!.)\d+)([eE][+-]?\d+)?z\d+([eE][+-]?\d+)?z [+-]?Infinityz(\w+|(\.(?!\.)))N);r r r r r r r r r r r r r r r r r! r"