66
|
1 <lexer>
|
|
2 <config>
|
|
3 <name>Awk</name>
|
|
4 <alias>awk</alias>
|
|
5 <alias>gawk</alias>
|
|
6 <alias>mawk</alias>
|
|
7 <alias>nawk</alias>
|
|
8 <filename>*.awk</filename>
|
|
9 <mime_type>application/x-awk</mime_type>
|
|
10 </config>
|
|
11 <rules>
|
|
12 <state name="root">
|
|
13 <rule pattern="^(?=\s|/)">
|
|
14 <token type="Text"/>
|
|
15 <push state="slashstartsregex"/>
|
|
16 </rule>
|
|
17 <rule>
|
|
18 <include state="commentsandwhitespace"/>
|
|
19 </rule>
|
|
20 <rule pattern="\+\+|--|\|\||&&|in\b|\$|!?~|\|&|(\*\*|[-<>+*%\^/!=|])=?">
|
|
21 <token type="Operator"/>
|
|
22 <push state="slashstartsregex"/>
|
|
23 </rule>
|
|
24 <rule pattern="[{(\[;,]">
|
|
25 <token type="Punctuation"/>
|
|
26 <push state="slashstartsregex"/>
|
|
27 </rule>
|
|
28 <rule pattern="[})\].]">
|
|
29 <token type="Punctuation"/>
|
|
30 </rule>
|
|
31 <rule pattern="(break|continue|do|while|exit|for|if|else|return|switch|case|default)\b">
|
|
32 <token type="Keyword"/>
|
|
33 <push state="slashstartsregex"/>
|
|
34 </rule>
|
|
35 <rule pattern="function\b">
|
|
36 <token type="KeywordDeclaration"/>
|
|
37 <push state="slashstartsregex"/>
|
|
38 </rule>
|
|
39 <rule pattern="(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|length|match|split|patsplit|sprintf|sub|substr|tolower|toupper|close|fflush|getline|next(file)|print|printf|strftime|systime|mktime|delete|system|strtonum|and|compl|lshift|or|rshift|asorti?|isarray|bindtextdomain|dcn?gettext|@(include|load|namespace))\b">
|
|
40 <token type="KeywordReserved"/>
|
|
41 </rule>
|
|
42 <rule pattern="(ARGC|ARGIND|ARGV|BEGIN(FILE)?|BINMODE|CONVFMT|ENVIRON|END(FILE)?|ERRNO|FIELDWIDTHS|FILENAME|FNR|FPAT|FS|IGNORECASE|LINT|NF|NR|OFMT|OFS|ORS|PROCINFO|RLENGTH|RS|RSTART|RT|SUBSEP|TEXTDOMAIN)\b">
|
|
43 <token type="NameBuiltin"/>
|
|
44 </rule>
|
|
45 <rule pattern="[@$a-zA-Z_]\w*">
|
|
46 <token type="NameOther"/>
|
|
47 </rule>
|
|
48 <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
|
|
49 <token type="LiteralNumberFloat"/>
|
|
50 </rule>
|
|
51 <rule pattern="0x[0-9a-fA-F]+">
|
|
52 <token type="LiteralNumberHex"/>
|
|
53 </rule>
|
|
54 <rule pattern="[0-9]+">
|
|
55 <token type="LiteralNumberInteger"/>
|
|
56 </rule>
|
|
57 <rule pattern=""(\\\\|\\"|[^"])*"">
|
|
58 <token type="LiteralStringDouble"/>
|
|
59 </rule>
|
|
60 <rule pattern="'(\\\\|\\'|[^'])*'">
|
|
61 <token type="LiteralStringSingle"/>
|
|
62 </rule>
|
|
63 </state>
|
|
64 <state name="commentsandwhitespace">
|
|
65 <rule pattern="\s+">
|
|
66 <token type="Text"/>
|
|
67 </rule>
|
|
68 <rule pattern="#.*$">
|
|
69 <token type="CommentSingle"/>
|
|
70 </rule>
|
|
71 </state>
|
|
72 <state name="slashstartsregex">
|
|
73 <rule>
|
|
74 <include state="commentsandwhitespace"/>
|
|
75 </rule>
|
|
76 <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/\B">
|
|
77 <token type="LiteralStringRegex"/>
|
|
78 <pop depth="1"/>
|
|
79 </rule>
|
|
80 <rule pattern="(?=/)">
|
|
81 <token type="Text"/>
|
|
82 <push state="#pop" state="badregex"/>
|
|
83 </rule>
|
|
84 <rule>
|
|
85 <pop depth="1"/>
|
|
86 </rule>
|
|
87 </state>
|
|
88 <state name="badregex">
|
|
89 <rule pattern="\n">
|
|
90 <token type="Text"/>
|
|
91 <pop depth="1"/>
|
|
92 </rule>
|
|
93 </state>
|
|
94 </rules>
|
|
95 </lexer> |