# Inno Setup language definition file
#
# Author: Andre Simon
#   Mail: andre.simon1@gmx.de
#   Date: 22.06.09
# ------------------------------------------
# This file is a part of highlight, a free source code converter released under the GPL.
#
# The file is used to describe keywords and special symbols of programming languages.
# See README in the highlight directory for details.
#
# New definition files for future releases of highlight are always appreciated ;)
#
# ----------
# andre.simon1@gmx.de
# http:/www.andre-simon.de/

$DESCRIPTION=Inno Setup

$KEYWORDS(kwa)=Compression DiskClusterSize DiskSliceSize DiskSpanning Encryption
InternalCompressLevel MergeDuplicateFiles OutputBaseFilename OutputDir
ReserveBytes SlicesPerDisk SolidCompression SourceDir UseSetupLdr
VersionInfoCompany VersionInfoDescription VersionInfoTextVersion
VersionInfoVersion AllowCancelDuringInstall AllowNoIcons AllowRootDirectory
AllowUNCPath AlwaysRestart AlwaysShowComponentsList AlwaysShowDirOnReadyPage
AlwaysShowGroupOnReadyPage AlwaysUsePersonalGroup AppendDefaultDirName
AppendDefaultGroupName AppComments AppContact AppId AppModifyPath AppMutex
AppName AppPublisher AppPublisherURL AppReadmeFile AppSupportURL AppUpdatesURL
AppVersion AppVerName ChangesAssociations CreateAppDir CreateUninstallRegKey
DefaultDirName DefaultGroupName DefaultUserInfoName DefaultUserInfoOrg
DefaultUserInfoSerial DirExistsWarning DisableDirPage DisableFinishedPage
DisableProgramGroupPage DisableReadyMemo DisableReadyPage DisableStartupPrompt
EnableDirDoesntExistWarning ExtraDiskSpaceRequired InfoAfterFile InfoBeforeFile
LanguageDetectionMethod LicenseFile MinVersion OnlyBelowVersion Password
PrivilegesRequired RestartIfNeededByRun ShowLanguageDialog TimeStampRounding
TimeStampsInUTC TouchDate TouchTime Uninstallable UninstallDisplayIcon
UninstallDisplayName UninstallFilesDir UninstallLogMode UninstallRestartComputer
UpdateUninstallLogAppName UsePreviousAppDir UsePreviousGroup
UsePreviousSetupType UsePreviousTasks UsePreviousUserInfo UserInfoPage
AppCopyright BackColor BackColor2 BackColorDirection BackSolid
FlatComponentsList SetupIconFile ShowComponentSizes ShowTasksTreeLines
UninstallStyle WindowShowCaption WindowStartMaximized WindowResizable
WindowVisible WizardImageBackColor WizardImageFile WizardImageStretch
WizardSmallImageBackColor WizardSmallImageFile UninstallIconFile

$KEYWORDS(kwb)=AfterInstall Attribs BeforeInstall Check Comment Components
CopyMode Description DestDir DestName Excludes ExtraDiskSpaceRequired Filename
Flags FontInstall GroupDescription HotKey IconFilename IconIndex InfoBeforeFile
InfoAfterFile Key MessagesFile Name Parameters Permissions Root RunOnceId
Section Source StatusMsg String Subkey Tasks Type Types ValueType ValueName
ValueData WorkingDir

$KEYWORDS(kwc)=allowunsafefiles checkedonce closeonexit compact comparetimestamp
confirmoverwrite createkeyifdoesntexist createonlyiffileexists
createvalueifdoesntexist deleteafterinstall deletekey deletevalue desktopicon
dirifempty disablenouninstallwarning dontcloseonexit dontcopy dontcreatekey
dontinheritcheck dontverifychecksum exclusive external files filesandordirs
fixed fontisnttruetype full ignoreversion iscustom isreadme hidden hidewizard
modify nocompression noencryption noerror noregerror nowait onlyifdestfileexists
onlyifdoesntexist overwritereadonly postinstall preservestringtype promptifolder
quicklaunchicon read readonly readexec recursesubdirs regserver regtypelib
replacesameversion restart restartreplace runhidden runmaximized runminimized
sharedfile shellexec skipifnotsilent skipifsilent skipifdoesntexist
skipifsourcedoesntexist sortfilesbyextension system touch unchecked
uninsalwaysuninstall uninsclearvalue uninsdeleteentry uninsdeletekey
uninsdeletekeyifempty uninsdeletesection uninsdeletesectionifempty
uninsdeletevalue uninsneveruninstall uninsremovereadonly uninsrestartdelete
useapppaths waituntilidle

$KEYWORDS(kwd)=regex(^\[\w+\])


# pascal stuff:

$KEYWORDS(kwa)= absolute abstract and array as asm assembler automated begin case
cdecl class const constructor destructor dispid dispinterface div do downto
dynamic else end except export exports external far file finalization finally
for forward function goto if implementation in initialization inherited inline
interface is label library message mod near nil not object of or out override
packed pascal private procedure program property protected public published
raise record register repeat resourcestring safecall set shl shr stdcall string
then threadvar to try type unit until uses var virtual while with xor

$KEYWORDS(kwb)=boolean char integer pointer real text
true false cardinal longint byte word single double int64

$KEYWORDS(kwc)=if else then downto do for repeat while to until with

$KEYWORDS(kwd)=regex((\w+)\s*\()

$STRINGDELIMITERS=" '

$SL_COMMENT=regex(^;.*)

$ML_COMMENT={ } (* *)

$IGNORECASE=true

$SYMBOLS= ( ) [ ] , ; : & | < > !  = / * %  + - @ . ^

$ESCCHAR=regex(\#\$\p{XDigit}{2}|\#\d{,3})

$DIGIT=regex((?:0x|0X|\$)[0-9a-fA-F]+|\d*[\.\_]?\d+(?:[eE][\-\+]\d+)?[lLuUbfdm]*)