...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>SAS</name>
     4    <alias>sas</alias>
     5    <filename>*.SAS</filename>
     6    <filename>*.sas</filename>
     7    <mime_type>text/x-sas</mime_type>
     8    <mime_type>text/sas</mime_type>
     9    <mime_type>application/x-sas</mime_type>
    10    <case_insensitive>true</case_insensitive>
    11  </config>
    12  <rules>
    13    <state name="validvar">
    14      <rule pattern="[a-z_]\w{0,31}\.?">
    15        <token type="NameVariable"/>
    16        <pop depth="1"/>
    17      </rule>
    18    </state>
    19    <state name="cards-datalines">
    20      <rule pattern="^\s*(datalines|cards)\s*;\s*$">
    21        <token type="Keyword"/>
    22        <push state="data"/>
    23      </rule>
    24    </state>
    25    <state name="proc-data">
    26      <rule pattern="(^|;)\s*(proc \w+|data|run|quit)[\s;]">
    27        <token type="KeywordReserved"/>
    28      </rule>
    29    </state>
    30    <state name="string_dquote">
    31      <rule pattern="&#34;">
    32        <token type="LiteralString"/>
    33        <pop depth="1"/>
    34      </rule>
    35      <rule pattern="\\\\|\\&#34;|\\\n">
    36        <token type="LiteralStringEscape"/>
    37      </rule>
    38      <rule pattern="&amp;">
    39        <token type="NameVariable"/>
    40        <push state="validvar"/>
    41      </rule>
    42      <rule pattern="[^$&amp;&#34;\\]+">
    43        <token type="LiteralString"/>
    44      </rule>
    45      <rule pattern="[$&#34;\\]">
    46        <token type="LiteralString"/>
    47      </rule>
    48    </state>
    49    <state name="general">
    50      <rule>
    51        <include state="keywords"/>
    52      </rule>
    53      <rule>
    54        <include state="vars-strings"/>
    55      </rule>
    56      <rule>
    57        <include state="special"/>
    58      </rule>
    59      <rule>
    60        <include state="numbers"/>
    61      </rule>
    62    </state>
    63    <state name="vars-strings">
    64      <rule pattern="&amp;[a-z_]\w{0,31}\.?">
    65        <token type="NameVariable"/>
    66      </rule>
    67      <rule pattern="%[a-z_]\w{0,31}">
    68        <token type="NameFunction"/>
    69      </rule>
    70      <rule pattern="\&#39;">
    71        <token type="LiteralString"/>
    72        <push state="string_squote"/>
    73      </rule>
    74      <rule pattern="&#34;">
    75        <token type="LiteralString"/>
    76        <push state="string_dquote"/>
    77      </rule>
    78    </state>
    79    <state name="root">
    80      <rule>
    81        <include state="comments"/>
    82      </rule>
    83      <rule>
    84        <include state="proc-data"/>
    85      </rule>
    86      <rule>
    87        <include state="cards-datalines"/>
    88      </rule>
    89      <rule>
    90        <include state="logs"/>
    91      </rule>
    92      <rule>
    93        <include state="general"/>
    94      </rule>
    95      <rule pattern=".">
    96        <token type="Text"/>
    97      </rule>
    98      <rule pattern="\\\n">
    99        <token type="Text"/>
   100      </rule>
   101      <rule pattern="\n">
   102        <token type="Text"/>
   103      </rule>
   104    </state>
   105    <state name="data">
   106      <rule pattern="(.|\n)*^\s*;\s*$">
   107        <token type="Other"/>
   108        <pop depth="1"/>
   109      </rule>
   110    </state>
   111    <state name="logs">
   112      <rule pattern="\n?^\s*%?put ">
   113        <token type="Keyword"/>
   114        <push state="log-messages"/>
   115      </rule>
   116    </state>
   117    <state name="keywords">
   118      <rule pattern="\b(datalines4|datalines|delimiter|startsas|redirect|lostcard|continue|informat|filename|footnote|catname|options|libname|systask|display|waitsas|missing|replace|delete|window|endsas|update|format|attrib|length|infile|select|return|retain|rename|remove|output|cards4|modify|leave|title|merge|delim|input|cards|abort|where|label|array|error|call|page|stop|keep|file|drop|link|skip|list|goto|put|out|set|by|dm|in|x)\b">
   119        <token type="Keyword"/>
   120      </rule>
   121      <rule pattern="\b(references|distinct|describe|validate|restrict|cascade|msgtype|message|primary|foreign|delete|update|create|unique|having|modify|insert|select|group|check|table|alter|order|reset|index|where|into|from|view|null|like|drop|add|not|key|and|set|on|in|or|as)\b">
   122        <token type="Keyword"/>
   123      </rule>
   124      <rule pattern="\b(while|until|then|else|end|if|do)\b">
   125        <token type="Keyword"/>
   126      </rule>
   127      <rule pattern="%(sysevalf|nrbquote|qsysfunc|qlowcase|compstor|nrquote|display|qupcase|datatyp|qcmpres|unquote|syscall|sysfunc|sysrput|sysprod|syslput|sysexec|lowcase|qsubstr|sysget|length|keydef|global|superq|substr|verify|bquote|cmpres|upcase|window|label|qleft|while|qtrim|quote|nrstr|until|sysrc|input|macro|local|qscan|index|else|scan|mend|eval|trim|then|goto|left|put|let|end|str|do|to|if)\b">
   128        <token type="NameBuiltin"/>
   129      </rule>
   130      <rule pattern="\b(vinformatnx|vinformatwx|vinformatdx|vinformatw|vinformatd|vinformatx|vinformatn|vinformat|translate|vinarrayx|vformatwx|vformatnx|vformatdx|getoption|fileexist|fetchobs|vlengthx|filename|fipstate|kurtosis|vinarray|vformatx|pathname|foptname|compound|compress|vformatw|hosthelp|vformatn|zipnamel|vformatd|probbeta|daccdbsl|zipstate|trigamma|probbnml|probhypr|probnegb|probnorm|datepart|datetime|varlabel|varinfmt|dropnote|skewness|doptname|timepart|fipnamel|dequote|tranwrd|sysprod|digamma|stnamel|soundex|depdbsl|reverse|daccsyd|doptnum|resolve|uniform|datejul|varname|varrayx|probgam|probchi|fappend|dacctab|vformat|poisson|collate|brshift|ordinal|fdelete|blshift|betainv|fileref|lowcase|libname|fipname|vlabelx|vlength|weekday|juldate|jbessel|ibessel|zipfips|foptnum|zipname|getvarn|getvarc|frewind|vartype|depsyd|stderr|stfips|fwrite|gaminv|second|substr|vtypex|symget|hbound|vnamex|fpoint|saving|fnonct|rewind|indexc|indexw|repeat|inputc|inputn|ranuni|stname|rantbl|ranpoi|rannor|sysget|rangam|ranexp|vlabel|lbound|cexist|length|lgamma|rancau|libref|cnonct|ranbin|compbl|logpdf|logpmf|logsdf|sysmsg|curobs|daccdb|verify|daccsl|minute|system|tnonct|dsname|varray|varnum|probit|spedis|normal|varlen|dclose|varfmt|fexist|deptab|upcase|rantri|fclose|nmiss|point|trimn|depsl|trunc|peekc|depdb|probf|exist|fetch|netpv|today|mopen|probt|month|dairy|sysrc|finfo|quote|log10|close|floor|dinfo|range|fnote|attrn|intrr|intnx|intck|attrc|input|dread|dopen|index|right|round|vname|vtype|fread|gamma|arsin|arcos|fopen|frlen|fget|sinh|sqrt|addr|airy|sign|fsep|year|fuzz|dnum|scan|rank|fput|fpos|putn|putc|hour|tanh|atan|dhms|tinv|band|bnot|erfc|fcol|poke|trim|byte|ceil|peek|left|cinv|finv|open|log2|mean|note|date|cosh|mort|time|bxor|bor|mdy|std|max|css|sin|cos|npv|log|var|uss|pdf|pmf|cdf|abs|hms|day|erf|put|lag|irr|int|sum|tan|min|dif|qtr|sdf|dim|yyq|exp|mod|cv|n)\(">
   131        <token type="NameBuiltin"/>
   132      </rule>
   133    </state>
   134    <state name="numbers">
   135      <rule pattern="\b[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+|\.)(E[+-]?[0-9]+)?i?\b">
   136        <token type="LiteralNumber"/>
   137      </rule>
   138    </state>
   139    <state name="special">
   140      <rule pattern="(null|missing|_all_|_automatic_|_character_|_n_|_infile_|_name_|_null_|_numeric_|_user_|_webout_)">
   141        <token type="KeywordConstant"/>
   142      </rule>
   143    </state>
   144    <state name="log-messages">
   145      <rule pattern="NOTE(:|-).*">
   146        <token type="Generic"/>
   147        <pop depth="1"/>
   148      </rule>
   149      <rule pattern="WARNING(:|-).*">
   150        <token type="GenericEmph"/>
   151        <pop depth="1"/>
   152      </rule>
   153      <rule pattern="ERROR(:|-).*">
   154        <token type="GenericError"/>
   155        <pop depth="1"/>
   156      </rule>
   157      <rule>
   158        <include state="general"/>
   159      </rule>
   160    </state>
   161    <state name="comments">
   162      <rule pattern="^\s*\*.*?;">
   163        <token type="Comment"/>
   164      </rule>
   165      <rule pattern="/\*.*?\*/">
   166        <token type="Comment"/>
   167      </rule>
   168      <rule pattern="^\s*\*(.|\n)*?;">
   169        <token type="CommentMultiline"/>
   170      </rule>
   171      <rule pattern="/[*](.|\n)*?[*]/">
   172        <token type="CommentMultiline"/>
   173      </rule>
   174    </state>
   175    <state name="string_squote">
   176      <rule pattern="&#39;">
   177        <token type="LiteralString"/>
   178        <pop depth="1"/>
   179      </rule>
   180      <rule pattern="\\\\|\\&#34;|\\\n">
   181        <token type="LiteralStringEscape"/>
   182      </rule>
   183      <rule pattern="[^$\&#39;\\]+">
   184        <token type="LiteralString"/>
   185      </rule>
   186      <rule pattern="[$\&#39;\\]">
   187        <token type="LiteralString"/>
   188      </rule>
   189    </state>
   190  </rules>
   191</lexer>

View as plain text