#include <eepp/ui/doc/languages/batchscript.hpp>
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>

namespace EE { namespace UI { namespace Doc { namespace Language {

void addBatchScript() {

	SyntaxDefinitionManager::instance()->add(

		{ "Batch Script",
		  { "%.bat$", "%.cmd$" },
		  {
			  { { "@echo off\n" }, "keyword" },
			  { { "@echo on\n" }, "keyword" },
			  { { "rem.-\n" }, "comment" },
			  { { "REM.-\n" }, "comment" },
			  { { "%s*:[%w%-]+" }, "symbol" },
			  { { "%:%:.-\n" }, "comment" },
			  { { "%%%w+%%" }, "symbol" },
			  { { "%%%%?~?[%w:]+" }, "symbol" },
			  { { "[!=()%>&%^/\\@]" }, "operator" },
			  { { "-?%.?%d+f?" }, "number" },
			  { { "\"", "\"", "\\" }, "string" },
			  { { "[%a_][%w_]*" }, "normal" },
			  { { ":eof" }, "keyword" },

		  },
		  {
			  { "IF", "keyword" },
			  { "if", "keyword" },
			  { "FORFILES", "function" },
			  { "CON", "keyword" },
			  { "forfiles", "function" },
			  { "cd", "function" },
			  { "choice", "function" },
			  { "command", "function" },
			  { "shift", "function" },
			  { "CMD", "function" },
			  { "attrib", "function" },
			  { "EXIT", "function" },
			  { "for", "keyword" },
			  { "com1", "keyword" },
			  { "else", "keyword" },
			  { "setlocal", "function" },
			  { "in", "keyword" },
			  { "SORT", "function" },
			  { "FINDSTR", "function" },
			  { "RMDIR", "function" },
			  { "COMMAND", "function" },
			  { "COM4", "keyword" },
			  { "ren", "function" },
			  { "ATTRIB", "function" },
			  { "move", "function" },
			  { "cmd", "function" },
			  { "XCOPY", "function" },
			  { "xcopy", "function" },
			  { "COPY", "function" },
			  { "findstr", "function" },
			  { "ENDLOCAL", "function" },
			  { "MOVE", "function" },
			  { "ERRORLEVEL", "keyword" },
			  { "copy", "function" },
			  { "rmdir", "function" },
			  { "RD", "function" },
			  { "DEFINED", "keyword" },
			  { "ECHO", "function" },
			  { "DEL", "function" },
			  { "echo", "function" },
			  { "ENABLEDELAYEDEXPANSION", "function" },
			  { "type", "function" },
			  { "enabledelayedexpansion", "function" },
			  { "TYPE", "function" },
			  { "pause", "function" },
			  { "set", "function" },
			  { "CD", "function" },
			  { "SETLOCAL", "function" },
			  { "FIND", "function" },
			  { "gtr", "keyword" },
			  { "lpt1", "keyword" },
			  { "chdir", "function" },
			  { "LSS", "keyword" },
			  { "lss", "keyword" },
			  { "goto", "keyword" },
			  { "GEQ", "keyword" },
			  { "NEQ", "keyword" },
			  { "LPT1", "keyword" },
			  { "geq", "keyword" },
			  { "defined", "keyword" },
			  { "prn", "keyword" },
			  { "del", "function" },
			  { "VERIFY", "keyword" },
			  { "verify", "keyword" },
			  { "exist", "keyword" },
			  { "DO", "keyword" },
			  { "CALL", "keyword" },
			  { "com4", "keyword" },
			  { "EQU", "keyword" },
			  { "COM1", "keyword" },
			  { "GOTO", "keyword" },
			  { "EXIST", "keyword" },
			  { "SHIFT", "function" },
			  { "equ", "keyword" },
			  { "GTR", "keyword" },
			  { "COM2", "keyword" },
			  { "NUL", "keyword" },
			  { "PRN", "keyword" },
			  { "MD", "function" },
			  { "COM3", "keyword" },
			  { "LEQ", "keyword" },
			  { "com2", "keyword" },
			  { "nul", "keyword" },
			  { "errorlevel", "keyword" },
			  { "do", "keyword" },
			  { "FOR", "keyword" },
			  { "NOT", "keyword" },
			  { "com3", "keyword" },
			  { "call", "keyword" },
			  { "not", "keyword" },
			  { "ELSIF", "keyword" },
			  { "ELSE", "keyword" },
			  { "leq", "keyword" },
			  { "exit", "function" },
			  { "CHOICE", "function" },
			  { "IN", "keyword" },
			  { "cmdextversion", "keyword" },
			  { "PAUSE", "function" },
			  { "sort", "function" },
			  { "CMDEXTVERSION", "keyword" },
			  { "MKDIR", "function" },
			  { "mkdir", "function" },
			  { "CHDIR", "function" },
			  { "rd", "function" },
			  { "elsif", "keyword" },
			  { "find", "function" },
			  { "md", "function" },
			  { "SET", "function" },
			  { "endlocal", "function" },
			  { "REN", "function" },
			  { "neq", "keyword" },
			  { "con", "keyword" },

		  },
		  "rem",
		  {},
		  "bat" } );
}

}}}} // namespace EE::UI::Doc::Language
