By using this site you agree to the use of cookies by Brugbart and our partners.

Learn more

SHJS AutoIt Syntax Highlighting Definition File

This definition file adds support for AutoIt Syntax Highlighting in SHJS.

Edited: 2012-11-10 18:24

By. BlueBoden

I wanted to add support for AutoIt in SHJS, so i wrote my own language definition file. This is likely far from perfect, and is of cause subject to change.

Note. Feel free to help improve this if you are interested, simply post your modifications in the comments to this Article.

The .lang source file

The autoit.lang file is included below, you can generate the JavaScript used by SHJS with the sh2js.pl file, but this requires that you have perl installed with the Parse::RecDescent module.

If you are using windows, and would like to learn how to install everything you need to help, check out this Tutorial that we made:Installing Perl CPAN Modules on Windows

The autoit.lang file:


# AutoIt lang definition file by BlueBoden
# Last updated 04-01-2012


comment start ";"
comment delim "#cs" "#ce" multiline
comment delim "#comments-start" "#comments-end" multiline

number = '\<[+-]?((0x[[:xdigit:]]+)|(([[:digit:]]*\.)?[[:digit:]]+([eE][+-]?[[:digit:]]+)?))u?((int(?:8|16|32|64))|L)?\>'

string delim "'" "'"
string delim '"' '"'

variable = '(?:\$[#]?|@|%)[[:word:]]+'

# Keywords list
keyword = "If|Else|ElseIf|EndIf|While|WEnd|For|Next|Func|EndFunc|#include|#include-once|#NoTrayIcon|#OnAutoItStartRegister|#NoAutoIt3Execute|#RequireAdmin|ByRef|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Until|Enum|Exit|ExitLoop|False|True|To|Step|Return|Global|Dim|Local|Const|ReDim|Select|Case|EndSelect|Static|Switch|EndSwitch|With|EndWith"

symbol = "~","!","%","^","*","(",")","-","+","=","[","]","\\",":",";",",",".","/","?","&","<",">","\|"
vardef FUNCTION = '([[:alpha:]]|_)[[:word:]]*(?=[[:blank:]]*\()'
function = $FUNCTION

The autoit.js Script

This is the current version of our AutoIt Syntax Highlighter Script, as outputted by sh2js.pl.

if (! this.sh_languages) {
  this.sh_languages = {};
}
sh_languages['autoit'] = [
  [
    [
      /;/g,
      'sh_comment',
      1
    ],
    [
      /#comments-end/g,
      'sh_comment',
      1
    ],
    [
      /#cs/g,
      'sh_comment',
      2
    ],
    [
      /#comments-start/g,
      'sh_comment',
      3
    ],
    [
      /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
      'sh_number',
      -1
    ],
    [
      /'/g,
      'sh_string',
      4
    ],
    [
      /"/g,
      'sh_string',
      5
    ],
    [
      /(?:\$[#]?|@|%)[A-Za-z0-9_]+/g,
      'sh_variable',
      -1
    ],
    [
      /\b(?:If|Else|ElseIf|EndIf|While|WEnd|For|Next|Func|EndFunc|#include|#include-once|#NoTrayIcon|#OnAutoItStartRegister|#NoAutoIt3Execute|#RequireAdmin|ByRef|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Until|Enum|Exit|ExitLoop|False|True|To|Step|Return|Global|Dim|Local|Const|ReDim|Select|Case|EndSelect|Static|Switch|EndSwitch|With|EndWith)\b/g,
      'sh_keyword',
      -1
    ],
    [
      /~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,
      'sh_symbol',
      -1
    ],
    [
      /(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,
      'sh_function',
      -1
    ]
  ],
  [
    [
      /$/g,
      null,
      -2
    ]
  ],
  [
    [
      /#ce/g,
      'sh_comment',
      -2
    ]
  ],
  [
    [
      /#comments-end/g,
      'sh_comment',
      -2
    ]
  ],
  [
    [
      /$/g,
      null,
      -2
    ],
    [
      /'/g,
      'sh_string',
      -2
    ]
  ],
  [
    [
      /$/g,
      null,
      -2
    ],
    [
      /"/g,
      'sh_string',
      -2
    ]
  ]
];