From 0f3b7fc3c56db6a148b75defbf3f99682b63bf0a Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Thu, 22 Aug 2024 20:55:08 -0300 Subject: [PATCH] Initial implementation of delegatinglexer --- src/constants/lexers.cr | 2342 +++++++++++++++++++-------------------- src/lexer.cr | 57 +- 2 files changed, 1226 insertions(+), 1173 deletions(-) diff --git a/src/constants/lexers.cr b/src/constants/lexers.cr index 0264f19..25a253a 100644 --- a/src/constants/lexers.cr +++ b/src/constants/lexers.cr @@ -1,1176 +1,1176 @@ module Tartrazine LEXERS_BY_NAME = { -"1s" => "onesenterprise", -"1s:enterprise" => "onesenterprise", -"abap" => "abap", -"abl" => "openedge_abl", -"abnf" => "abnf", -"aconf" => "apacheconf", -"actionscript" => "actionscript", -"actionscript 3" => "actionscript_3", -"actionscript3" => "actionscript_3", -"ada" => "ada", -"ada2005" => "ada", -"ada95" => "ada", -"agda" => "agda", -"ahk" => "autohotkey", -"al" => "al", -"alloy" => "alloy", -"angular2" => "angular2", -"antlr" => "antlr", -"apache" => "apacheconf", -"apacheconf" => "apacheconf", -"apl" => "apl", -"applescript" => "applescript", -"aql" => "arangodb_aql", -"arangodb aql" => "arangodb_aql", -"arduino" => "arduino", -"arexx" => "rexx", -"armasm" => "armasm", -"as" => "actionscript", -"as3" => "actionscript_3", -"asm" => "gas", -"autohotkey" => "autohotkey", -"autoit" => "autoit", -"awk" => "awk", -"b3d" => "blitzbasic", -"ballerina" => "ballerina", -"bash" => "bash", -"bash session" => "bash_session", -"bash-session" => "bash_session", -"basic" => "qbasic", -"bat" => "batchfile", -"batch" => "batchfile", -"batchfile" => "batchfile", -"bbcode" => "bbcode", -"bf" => "brainfuck", -"bib" => "bibtex", -"bibtex" => "bibtex", -"bicep" => "bicep", -"bind" => "dns", -"blitzbasic" => "blitzbasic", -"bnf" => "bnf", -"bplus" => "blitzbasic", -"bqn" => "bqn", -"brainfuck" => "brainfuck", -"bsdmake" => "makefile", -"c" => "c", -"c#" => "c#", -"c++" => "c++", -"cap'n proto" => "cap_n_proto", -"capnp" => "cap_n_proto", -"cassandra" => "cassandra_cql", -"cassandra cql" => "cassandra_cql", -"cassette" => "vhs", -"ceylon" => "ceylon", -"cf3" => "cfengine3", -"cfengine3" => "cfengine3", -"cfg" => "ini", -"cfs" => "cfstatement", -"cfstatement" => "cfstatement", -"chai" => "chaiscript", -"chaiscript" => "chaiscript", -"chapel" => "chapel", -"cheetah" => "cheetah", -"chpl" => "chapel", -"cl" => "common_lisp", -"clj" => "clojure", -"clojure" => "clojure", -"cmake" => "cmake", -"cobol" => "cobol", -"coffee" => "coffeescript", -"coffee-script" => "coffeescript", -"coffeescript" => "coffeescript", -"common lisp" => "common_lisp", -"common-lisp" => "common_lisp", -"console" => "bash_session", -"coq" => "coq", -"cpp" => "c++", -"cql" => "cassandra_cql", -"cr" => "crystal", -"crystal" => "crystal", -"csh" => "tcsh", -"csharp" => "c#", -"css" => "css", -"cucumber" => "gherkin", -"cue" => "cue", -"cython" => "cython", -"d" => "d", -"dart" => "dart", -"dax" => "dax", -"desktop" => "desktop_entry", -"desktop file" => "desktop_entry", -"desktop_entry" => "desktop_entry", -"diff" => "diff", -"django" => "django_jinja", -"django/jinja" => "django_jinja", -"dns" => "dns", -"docker" => "docker", -"dockerfile" => "docker", -"dosbatch" => "batchfile", -"dosini" => "ini", -"dtd" => "dtd", -"duby" => "ruby", -"dylan" => "dylan", -"ebnf" => "ebnf", -"edn" => "clojure", -"elisp" => "emacslisp", -"elixir" => "elixir", -"elm" => "elm", -"emacs" => "emacslisp", -"emacs-lisp" => "emacslisp", -"emacslisp" => "emacslisp", -"erlang" => "erlang", -"ex" => "elixir", -"exs" => "elixir", -"f90" => "fortran", -"factor" => "factor", -"fennel" => "fennel", -"fish" => "fish", -"fishshell" => "fish", -"fnl" => "fennel", -"forth" => "forth", -"fortran" => "fortran", -"fortranfixed" => "fortranfixed", -"fsharp" => "fsharp", -"gas" => "gas", -"gawk" => "awk", -"gd" => "gdscript", -"gd3" => "gdscript3", -"gdscript" => "gdscript", -"gdscript3" => "gdscript3", -"gherkin" => "gherkin", -"gleam" => "gleam", -"glsl" => "glsl", -"gnuplot" => "gnuplot", -"go template" => "go_template", -"go-template" => "go_template", -"gql" => "graphql", -"graphql" => "graphql", -"graphqls" => "graphql", -"groff" => "groff", -"groovy" => "groovy", -"gsed" => "sed", -"handlebars" => "handlebars", -"hare" => "hare", -"haskell" => "haskell", -"hbs" => "handlebars", -"hcl" => "hcl", -"hexdump" => "hexdump", -"hlb" => "hlb", -"hlsl" => "hlsl", -"holyc" => "holyc", -"hs" => "haskell", -"html" => "html", -"hy" => "hy", -"hylang" => "hy", -"idr" => "idris", -"idris" => "idris", -"igor" => "igor", -"igorpro" => "igor", -"ini" => "ini", -"io" => "io", -"iscdhcpd" => "iscdhcpd", -"j" => "j", -"java" => "java", -"java-properties" => "properties", -"javascript" => "javascript", -"jinja" => "django_jinja", -"jl" => "julia", -"js" => "javascript", -"json" => "json", -"jsonata" => "jsonata", -"jsx" => "react", -"julia" => "julia", -"jungle" => "jungle", -"kotlin" => "kotlin", -"ksh" => "bash", -"latex" => "tex", -"lighttpd" => "lighttpd_configuration_file", -"lighttpd configuration file" => "lighttpd_configuration_file", -"lighty" => "lighttpd_configuration_file", -"liquid" => "LiquidLexer", -"lisp" => "common_lisp", -"llvm" => "llvm", -"lua" => "lua", -"m2" => "modula-2", -"make" => "makefile", -"makefile" => "makefile", -"mako" => "mako", -"man" => "groff", -"mariadb" => "mysql", -"markdown" => "markdown", -"mason" => "mason", -"materialize" => "materialize_sql_dialect", -"materialize sql dialect" => "materialize_sql_dialect", -"mathematica" => "mathematica", -"matlab" => "matlab", -"mawk" => "awk", -"mcfunction" => "mcfunction", -"md" => "markdown", -"meson" => "meson", -"meson.build" => "meson", -"metal" => "metal", -"mf" => "makefile", -"minizinc" => "minizinc", -"mlir" => "mlir", -"mma" => "mathematica", -"modula-2" => "modula-2", -"modula2" => "modula-2", -"moin" => "moinwiki", -"moinmoin/trac wiki markup" => "moinwiki", -"monkeyc" => "monkeyc", -"morrowind" => "morrowindscript", -"morrowindscript" => "morrowindscript", -"mwscript" => "morrowindscript", -"myghty" => "myghty", -"mysql" => "mysql", -"mzn" => "minizinc", -"mzsql" => "materialize_sql_dialect", -"nasm" => "nasm", -"natural" => "natural", -"nawk" => "awk", -"nb" => "mathematica", -"ndisasm" => "ndisasm", -"newspeak" => "newspeak", -"ng2" => "angular2", -"nginx" => "nginx_configuration_file", -"nginx configuration file" => "nginx_configuration_file", -"nim" => "nim", -"nimrod" => "nim", -"nix" => "nix", -"nixos" => "nix", -"no-highlight" => "plaintext", -"nroff" => "groff", -"obj-c" => "objective-c", -"objc" => "objective-c", -"objective-c" => "objective-c", -"objectivec" => "objective-c", -"objectpascal" => "objectpascal", -"ocaml" => "ocaml", -"octave" => "octave", -"odin" => "odin", -"ones" => "onesenterprise", -"onesenterprise" => "onesenterprise", -"openedge" => "openedge_abl", -"openedge abl" => "openedge_abl", -"openedgeabl" => "openedge_abl", -"openscad" => "openscad", -"org" => "org_mode", -"org mode" => "org_mode", -"orgmode" => "org_mode", -"pacmanconf" => "pacmanconf", -"perl" => "perl", -"php" => "php", -"php3" => "php", -"php4" => "php", -"php5" => "php", -"pig" => "pig", -"pkgconfig" => "pkgconfig", -"pl" => "perl", -"pl/pgsql" => "pl_pgsql", -"plain" => "plaintext", -"plaintext" => "plaintext", -"plc" => "plutus_core", -"plpgsql" => "pl_pgsql", -"plutus core" => "plutus_core", -"plutus-core" => "plutus_core", -"pony" => "pony", -"posh" => "powershell", -"postgres" => "postgresql_sql_dialect", -"postgresql" => "postgresql_sql_dialect", -"postgresql sql dialect" => "postgresql_sql_dialect", -"postscr" => "postscript", -"postscript" => "postscript", -"pov" => "povray", -"povray" => "povray", -"powerquery" => "powerquery", -"powershell" => "powershell", -"pq" => "powerquery", -"progress" => "openedge_abl", -"prolog" => "prolog", -"promela" => "promela", -"promql" => "promql", -"properties" => "properties", -"proto" => "protocol_buffer", -"protobuf" => "protocol_buffer", -"protocol buffer" => "protocol_buffer", -"prql" => "prql", -"ps1" => "powershell", -"psd1" => "powershell", -"psl" => "psl", -"psm1" => "powershell", -"puppet" => "puppet", -"pwsh" => "powershell", -"py" => "python", -"py2" => "python_2", -"py3" => "python", -"pyrex" => "cython", -"python" => "python", -"python 2" => "python_2", -"python2" => "python_2", -"python3" => "python", -"pyx" => "cython", -"qbasic" => "qbasic", -"qbs" => "qml", -"qml" => "qml", -"r" => "r", -"racket" => "racket", -"ragel" => "ragel", -"rb" => "ruby", -"react" => "react", -"reason" => "reasonml", -"reasonml" => "reasonml", -"reg" => "reg", -"registry" => "reg", -"rego" => "rego", -"rexx" => "rexx", -"rkt" => "racket", -"rpmspec" => "rpm_spec", -"rs" => "rust", -"ruby" => "ruby", -"rust" => "rust", -"s" => "r", -"sage" => "python", -"sas" => "sas", -"sass" => "sass", -"scala" => "scala", -"scheme" => "scheme", -"scilab" => "scilab", -"scm" => "scheme", -"scss" => "scss", -"sed" => "sed", -"sh" => "bash", -"shell" => "bash", -"shell-session" => "bash_session", -"sieve" => "sieve", -"smali" => "smali", -"smalltalk" => "smalltalk", -"smarty" => "smarty", -"sml" => "standard_ml", -"snobol" => "snobol", -"sol" => "solidity", -"solidity" => "solidity", -"sourcepawn" => "sourcepawn", -"sp" => "sourcepawn", -"sparql" => "sparql", -"spec" => "rpm_spec", -"spitfire" => "cheetah", -"splus" => "r", -"sql" => "sql", -"squeak" => "smalltalk", -"squid" => "squidconf", -"squid.conf" => "squidconf", -"squidconf" => "squidconf", -"ssed" => "sed", -"st" => "smalltalk", -"standard ml" => "standard_ml", -"stas" => "stas", -"stylus" => "stylus", -"sv" => "systemverilog", -"swift" => "swift", -"systemd" => "systemd", -"systemverilog" => "systemverilog", -"t-sql" => "transact-sql", -"tablegen" => "tablegen", -"tal" => "tal", -"tape" => "vhs", -"tasm" => "tasm", -"tcl" => "tcl", -"tcsh" => "tcsh", -"termcap" => "termcap", -"terminfo" => "terminfo", -"terraform" => "terraform", -"tex" => "tex", -"text" => "plaintext", -"tf" => "terraform", -"thrift" => "thrift", -"toml" => "toml", -"trac-wiki" => "moinwiki", -"tradingview" => "tradingview", -"transact-sql" => "transact-sql", -"ts" => "typescript", -"tsql" => "transact-sql", -"tsx" => "typescript", -"turing" => "turing", -"turtle" => "turtle", -"tv" => "tradingview", -"twig" => "TwigLexer", -"typescript" => "typescript", -"typoscript" => "typoscript", -"typoscriptcssdata" => "typoscriptcssdata", -"typoscripthtmldata" => "typoscripthtmldata", -"ucode" => "ucode", -"udiff" => "diff", -"uxntal" => "tal", -"v" => "verilog", -"v shell" => "v_shell", -"vala" => "vala", -"vapi" => "vala", -"vb.net" => "vb_net", -"vbnet" => "vb_net", -"velocity" => "VelocityLexer", -"verilog" => "verilog", -"vhdl" => "vhdl", -"vhs" => "vhs", -"vim" => "viml", -"viml" => "viml", -"vlang" => "v", -"vsh" => "v_shell", -"vshell" => "v_shell", -"vue" => "vue", -"vuejs" => "vue", -"wdte" => "wdte", -"webgpu shading language" => "webgpu_shading_language", -"wgsl" => "webgpu_shading_language", -"whiley" => "whiley", -"winbatch" => "batchfile", -"xml" => "xml", -"xorg" => "xorg", -"xorg.conf" => "xorg", -"yaml" => "yaml", -"yang" => "yang", -"z80" => "z80_assembly", -"z80 assembly" => "z80_assembly", -"zed" => "zed", -"zig" => "zig", -"zone" => "dns", -"zsh" => "bash", -} + "1s" => "onesenterprise", + "1s:enterprise" => "onesenterprise", + "abap" => "abap", + "abl" => "openedge_abl", + "abnf" => "abnf", + "aconf" => "apacheconf", + "actionscript" => "actionscript", + "actionscript 3" => "actionscript_3", + "actionscript3" => "actionscript_3", + "ada" => "ada", + "ada2005" => "ada", + "ada95" => "ada", + "agda" => "agda", + "ahk" => "autohotkey", + "al" => "al", + "alloy" => "alloy", + "angular2" => "angular2", + "antlr" => "antlr", + "apache" => "apacheconf", + "apacheconf" => "apacheconf", + "apl" => "apl", + "applescript" => "applescript", + "aql" => "arangodb_aql", + "arangodb aql" => "arangodb_aql", + "arduino" => "arduino", + "arexx" => "rexx", + "armasm" => "armasm", + "as" => "actionscript", + "as3" => "actionscript_3", + "asm" => "gas", + "autohotkey" => "autohotkey", + "autoit" => "autoit", + "awk" => "awk", + "b3d" => "blitzbasic", + "ballerina" => "ballerina", + "bash" => "bash", + "bash session" => "bash_session", + "bash-session" => "bash_session", + "basic" => "qbasic", + "bat" => "batchfile", + "batch" => "batchfile", + "batchfile" => "batchfile", + "bbcode" => "bbcode", + "bf" => "brainfuck", + "bib" => "bibtex", + "bibtex" => "bibtex", + "bicep" => "bicep", + "bind" => "dns", + "blitzbasic" => "blitzbasic", + "bnf" => "bnf", + "bplus" => "blitzbasic", + "bqn" => "bqn", + "brainfuck" => "brainfuck", + "bsdmake" => "makefile", + "c" => "c", + "c#" => "c#", + "c++" => "c++", + "cap'n proto" => "cap_n_proto", + "capnp" => "cap_n_proto", + "cassandra" => "cassandra_cql", + "cassandra cql" => "cassandra_cql", + "cassette" => "vhs", + "ceylon" => "ceylon", + "cf3" => "cfengine3", + "cfengine3" => "cfengine3", + "cfg" => "ini", + "cfs" => "cfstatement", + "cfstatement" => "cfstatement", + "chai" => "chaiscript", + "chaiscript" => "chaiscript", + "chapel" => "chapel", + "cheetah" => "cheetah", + "chpl" => "chapel", + "cl" => "common_lisp", + "clj" => "clojure", + "clojure" => "clojure", + "cmake" => "cmake", + "cobol" => "cobol", + "coffee" => "coffeescript", + "coffee-script" => "coffeescript", + "coffeescript" => "coffeescript", + "common lisp" => "common_lisp", + "common-lisp" => "common_lisp", + "console" => "bash_session", + "coq" => "coq", + "cpp" => "c++", + "cql" => "cassandra_cql", + "cr" => "crystal", + "crystal" => "crystal", + "csh" => "tcsh", + "csharp" => "c#", + "css" => "css", + "cucumber" => "gherkin", + "cue" => "cue", + "cython" => "cython", + "d" => "d", + "dart" => "dart", + "dax" => "dax", + "desktop" => "desktop_entry", + "desktop file" => "desktop_entry", + "desktop_entry" => "desktop_entry", + "diff" => "diff", + "django" => "django_jinja", + "django/jinja" => "django_jinja", + "dns" => "dns", + "docker" => "docker", + "dockerfile" => "docker", + "dosbatch" => "batchfile", + "dosini" => "ini", + "dtd" => "dtd", + "duby" => "ruby", + "dylan" => "dylan", + "ebnf" => "ebnf", + "edn" => "clojure", + "elisp" => "emacslisp", + "elixir" => "elixir", + "elm" => "elm", + "emacs" => "emacslisp", + "emacs-lisp" => "emacslisp", + "emacslisp" => "emacslisp", + "erlang" => "erlang", + "ex" => "elixir", + "exs" => "elixir", + "f90" => "fortran", + "factor" => "factor", + "fennel" => "fennel", + "fish" => "fish", + "fishshell" => "fish", + "fnl" => "fennel", + "forth" => "forth", + "fortran" => "fortran", + "fortranfixed" => "fortranfixed", + "fsharp" => "fsharp", + "gas" => "gas", + "gawk" => "awk", + "gd" => "gdscript", + "gd3" => "gdscript3", + "gdscript" => "gdscript", + "gdscript3" => "gdscript3", + "gherkin" => "gherkin", + "gleam" => "gleam", + "glsl" => "glsl", + "gnuplot" => "gnuplot", + "go template" => "go_template", + "go-template" => "go_template", + "gql" => "graphql", + "graphql" => "graphql", + "graphqls" => "graphql", + "groff" => "groff", + "groovy" => "groovy", + "gsed" => "sed", + "handlebars" => "handlebars", + "hare" => "hare", + "haskell" => "haskell", + "hbs" => "handlebars", + "hcl" => "hcl", + "hexdump" => "hexdump", + "hlb" => "hlb", + "hlsl" => "hlsl", + "holyc" => "holyc", + "hs" => "haskell", + "html" => "html", + "hy" => "hy", + "hylang" => "hy", + "idr" => "idris", + "idris" => "idris", + "igor" => "igor", + "igorpro" => "igor", + "ini" => "ini", + "io" => "io", + "iscdhcpd" => "iscdhcpd", + "j" => "j", + "java" => "java", + "java-properties" => "properties", + "javascript" => "javascript", + "jinja" => "django_jinja", + "jl" => "julia", + "js" => "javascript", + "json" => "json", + "jsonata" => "jsonata", + "jsx" => "react", + "julia" => "julia", + "jungle" => "jungle", + "kotlin" => "kotlin", + "ksh" => "bash", + "latex" => "tex", + "lighttpd" => "lighttpd_configuration_file", + "lighttpd configuration file" => "lighttpd_configuration_file", + "lighty" => "lighttpd_configuration_file", + "liquid" => "LiquidLexer", + "lisp" => "common_lisp", + "llvm" => "llvm", + "lua" => "lua", + "m2" => "modula-2", + "make" => "makefile", + "makefile" => "makefile", + "mako" => "mako", + "man" => "groff", + "mariadb" => "mysql", + "markdown" => "markdown", + "mason" => "mason", + "materialize" => "materialize_sql_dialect", + "materialize sql dialect" => "materialize_sql_dialect", + "mathematica" => "mathematica", + "matlab" => "matlab", + "mawk" => "awk", + "mcfunction" => "mcfunction", + "md" => "markdown", + "meson" => "meson", + "meson.build" => "meson", + "metal" => "metal", + "mf" => "makefile", + "minizinc" => "minizinc", + "mlir" => "mlir", + "mma" => "mathematica", + "modula-2" => "modula-2", + "modula2" => "modula-2", + "moin" => "moinwiki", + "moinmoin/trac wiki markup" => "moinwiki", + "monkeyc" => "monkeyc", + "morrowind" => "morrowindscript", + "morrowindscript" => "morrowindscript", + "mwscript" => "morrowindscript", + "myghty" => "myghty", + "mysql" => "mysql", + "mzn" => "minizinc", + "mzsql" => "materialize_sql_dialect", + "nasm" => "nasm", + "natural" => "natural", + "nawk" => "awk", + "nb" => "mathematica", + "ndisasm" => "ndisasm", + "newspeak" => "newspeak", + "ng2" => "angular2", + "nginx" => "nginx_configuration_file", + "nginx configuration file" => "nginx_configuration_file", + "nim" => "nim", + "nimrod" => "nim", + "nix" => "nix", + "nixos" => "nix", + "no-highlight" => "plaintext", + "nroff" => "groff", + "obj-c" => "objective-c", + "objc" => "objective-c", + "objective-c" => "objective-c", + "objectivec" => "objective-c", + "objectpascal" => "objectpascal", + "ocaml" => "ocaml", + "octave" => "octave", + "odin" => "odin", + "ones" => "onesenterprise", + "onesenterprise" => "onesenterprise", + "openedge" => "openedge_abl", + "openedge abl" => "openedge_abl", + "openedgeabl" => "openedge_abl", + "openscad" => "openscad", + "org" => "org_mode", + "org mode" => "org_mode", + "orgmode" => "org_mode", + "pacmanconf" => "pacmanconf", + "perl" => "perl", + "php" => "php", + "php3" => "php", + "php4" => "php", + "php5" => "php", + "pig" => "pig", + "pkgconfig" => "pkgconfig", + "pl" => "perl", + "pl/pgsql" => "pl_pgsql", + "plain" => "plaintext", + "plaintext" => "plaintext", + "plc" => "plutus_core", + "plpgsql" => "pl_pgsql", + "plutus core" => "plutus_core", + "plutus-core" => "plutus_core", + "pony" => "pony", + "posh" => "powershell", + "postgres" => "postgresql_sql_dialect", + "postgresql" => "postgresql_sql_dialect", + "postgresql sql dialect" => "postgresql_sql_dialect", + "postscr" => "postscript", + "postscript" => "postscript", + "pov" => "povray", + "povray" => "povray", + "powerquery" => "powerquery", + "powershell" => "powershell", + "pq" => "powerquery", + "progress" => "openedge_abl", + "prolog" => "prolog", + "promela" => "promela", + "promql" => "promql", + "properties" => "properties", + "proto" => "protocol_buffer", + "protobuf" => "protocol_buffer", + "protocol buffer" => "protocol_buffer", + "prql" => "prql", + "ps1" => "powershell", + "psd1" => "powershell", + "psl" => "psl", + "psm1" => "powershell", + "puppet" => "puppet", + "pwsh" => "powershell", + "py" => "python", + "py2" => "python_2", + "py3" => "python", + "pyrex" => "cython", + "python" => "python", + "python 2" => "python_2", + "python2" => "python_2", + "python3" => "python", + "pyx" => "cython", + "qbasic" => "qbasic", + "qbs" => "qml", + "qml" => "qml", + "r" => "r", + "racket" => "racket", + "ragel" => "ragel", + "rb" => "ruby", + "react" => "react", + "reason" => "reasonml", + "reasonml" => "reasonml", + "reg" => "reg", + "registry" => "reg", + "rego" => "rego", + "rexx" => "rexx", + "rkt" => "racket", + "rpmspec" => "rpm_spec", + "rs" => "rust", + "ruby" => "ruby", + "rust" => "rust", + "s" => "r", + "sage" => "python", + "sas" => "sas", + "sass" => "sass", + "scala" => "scala", + "scheme" => "scheme", + "scilab" => "scilab", + "scm" => "scheme", + "scss" => "scss", + "sed" => "sed", + "sh" => "bash", + "shell" => "bash", + "shell-session" => "bash_session", + "sieve" => "sieve", + "smali" => "smali", + "smalltalk" => "smalltalk", + "smarty" => "smarty", + "sml" => "standard_ml", + "snobol" => "snobol", + "sol" => "solidity", + "solidity" => "solidity", + "sourcepawn" => "sourcepawn", + "sp" => "sourcepawn", + "sparql" => "sparql", + "spec" => "rpm_spec", + "spitfire" => "cheetah", + "splus" => "r", + "sql" => "sql", + "squeak" => "smalltalk", + "squid" => "squidconf", + "squid.conf" => "squidconf", + "squidconf" => "squidconf", + "ssed" => "sed", + "st" => "smalltalk", + "standard ml" => "standard_ml", + "stas" => "stas", + "stylus" => "stylus", + "sv" => "systemverilog", + "swift" => "swift", + "systemd" => "systemd", + "systemverilog" => "systemverilog", + "t-sql" => "transact-sql", + "tablegen" => "tablegen", + "tal" => "tal", + "tape" => "vhs", + "tasm" => "tasm", + "tcl" => "tcl", + "tcsh" => "tcsh", + "termcap" => "termcap", + "terminfo" => "terminfo", + "terraform" => "terraform", + "tex" => "tex", + "text" => "plaintext", + "tf" => "terraform", + "thrift" => "thrift", + "toml" => "toml", + "trac-wiki" => "moinwiki", + "tradingview" => "tradingview", + "transact-sql" => "transact-sql", + "ts" => "typescript", + "tsql" => "transact-sql", + "tsx" => "typescript", + "turing" => "turing", + "turtle" => "turtle", + "tv" => "tradingview", + "twig" => "TwigLexer", + "typescript" => "typescript", + "typoscript" => "typoscript", + "typoscriptcssdata" => "typoscriptcssdata", + "typoscripthtmldata" => "typoscripthtmldata", + "ucode" => "ucode", + "udiff" => "diff", + "uxntal" => "tal", + "v" => "verilog", + "v shell" => "v_shell", + "vala" => "vala", + "vapi" => "vala", + "vb.net" => "vb_net", + "vbnet" => "vb_net", + "velocity" => "VelocityLexer", + "verilog" => "verilog", + "vhdl" => "vhdl", + "vhs" => "vhs", + "vim" => "viml", + "viml" => "viml", + "vlang" => "v", + "vsh" => "v_shell", + "vshell" => "v_shell", + "vue" => "vue", + "vuejs" => "vue", + "wdte" => "wdte", + "webgpu shading language" => "webgpu_shading_language", + "wgsl" => "webgpu_shading_language", + "whiley" => "whiley", + "winbatch" => "batchfile", + "xml" => "xml", + "xorg" => "xorg", + "xorg.conf" => "xorg", + "yaml" => "yaml", + "yang" => "yang", + "z80" => "z80_assembly", + "z80 assembly" => "z80_assembly", + "zed" => "zed", + "zig" => "zig", + "zone" => "dns", + "zsh" => "bash", + } LEXERS_BY_MIMETYPE = { -"application/atom+xml" => "xml", -"application/edn" => "clojure", -"application/javascript" => "javascript", -"application/json" => "json", -"application/mathematica" => "mathematica", -"application/octet-stream" => "onesenterprise", -"application/postscript" => "postscript", -"application/prql" => "prql", -"application/rss+xml" => "xml", -"application/sparql-query" => "sparql", -"application/vnd.wolfram.cdf" => "mathematica", -"application/vnd.wolfram.mathematica" => "mathematica", -"application/vnd.wolfram.mathematica.package" => "mathematica", -"application/x-actionscript" => "actionscript", -"application/x-actionscript3" => "actionscript_3", -"application/x-awk" => "awk", -"application/x-brainfuck" => "brainfuck", -"application/x-chaiscript" => "chaiscript", -"application/x-cheetah" => "cheetah", -"application/x-clojure" => "clojure", -"application/x-csh" => "tcsh", -"application/x-cython" => "cython", -"application/x-desktop" => "desktop_entry", -"application/x-django-templating" => "django_jinja", -"application/x-dos-batch" => "batchfile", -"application/x-elisp" => "emacslisp", -"application/x-fennel" => "fennel", -"application/x-fish" => "fish", -"application/x-forth" => "forth", -"application/x-gdscript" => "gdscript3", -"application/x-hcl" => "hcl", -"application/x-hy" => "hy", -"application/x-javascript" => "javascript", -"application/x-jinja" => "django_jinja", -"application/x-julia" => "julia", -"application/x-lua" => "lua", -"application/x-mako" => "mako", -"application/x-mason" => "mason", -"application/x-myghty" => "myghty", -"application/x-openedge" => "openedge_abl", -"application/x-perl" => "perl", -"application/x-plutus-core" => "plutus_core", -"application/x-python" => "python", -"application/x-python2" => "python_2", -"application/x-python3" => "python", -"application/x-qml" => "qml", -"application/x-qt.qbs+qml" => "qml", -"application/x-racket" => "racket", -"application/x-ruby" => "ruby", -"application/x-sas" => "sas", -"application/x-scheme" => "scheme", -"application/x-sh" => "bash", -"application/x-shellscript" => "bash", -"application/x-smarty" => "smarty", -"application/x-spitfire" => "cheetah", -"application/x-standardml" => "standard_ml", -"application/x-tcl" => "tcl", -"application/x-terraform" => "terraform", -"application/x-tf" => "terraform", -"application/x-thrift" => "thrift", -"application/x-troff" => "groff", -"application/x-turtle" => "turtle", -"application/x-twig" => "TwigLexer", -"application/x-vue" => "vue", -"application/x.ucode" => "ucode", -"application/xhtml+xml" => "html", -"application/xml" => "xml", -"application/xml-dtd" => "dtd", -"application/yang" => "yang", -"image/svg+xml" => "xml", -"image/x-xbitmap" => "holyc", -"image/x-xpixmap" => "holyc", -"text/actionscript" => "actionscript", -"text/actionscript3" => "actionscript_3", -"text/basic" => "qbasic", -"text/coffeescript" => "coffeescript", -"text/css" => "css", -"text/dns" => "dns", -"text/html" => "html", -"text/inf" => "ini", -"text/ipf" => "igor", -"text/javascript" => "javascript", -"text/jsx" => "react", -"text/matlab" => "matlab", -"text/minizinc" => "minizinc", -"text/octave" => "octave", -"text/odin" => "odin", -"text/org" => "org_mode", -"text/plain" => "plaintext", -"text/rust" => "rust", -"text/s" => "r", -"text/s-plus" => "r", -"text/sas" => "sas", -"text/scilab" => "scilab", -"text/smali" => "smali", -"text/troff" => "groff", -"text/turtle" => "turtle", -"text/typescript-jsx" => "react", -"text/wgsl" => "webgpu_shading_language", -"text/x-abap" => "abap", -"text/x-abnf" => "abnf", -"text/x-actionscript" => "actionscript", -"text/x-actionscript3" => "actionscript_3", -"text/x-ada" => "ada", -"text/x-agda" => "agda", -"text/x-al" => "al", -"text/x-alloy" => "alloy", -"text/x-apacheconf" => "apacheconf", -"text/x-aql" => "arangodb_aql", -"text/x-arduino" => "arduino", -"text/x-armasm" => "armasm", -"text/x-asm" => "armasm", -"text/x-autohotkey" => "autohotkey", -"text/x-autoit" => "autoit", -"text/x-ballerina" => "ballerina", -"text/x-bb" => "blitzbasic", -"text/x-bbcode" => "bbcode", -"text/x-bibtex" => "bibtex", -"text/x-bnf" => "bnf", -"text/x-c++hdr" => "c++", -"text/x-c++src" => "c++", -"text/x-ceylon" => "ceylon", -"text/x-chaiscript" => "chaiscript", -"text/x-chdr" => "holyc", -"text/x-clojure" => "clojure", -"text/x-cmake" => "cmake", -"text/x-cobol" => "cobol", -"text/x-common-lisp" => "common_lisp", -"text/x-coq" => "coq", -"text/x-cql" => "cassandra_cql", -"text/x-crystal" => "crystal", -"text/x-csharp" => "c#", -"text/x-csrc" => "holyc", -"text/x-cue" => "cue", -"text/x-cython" => "cython", -"text/x-d" => "d", -"text/x-dart" => "dart", -"text/x-diff" => "diff", -"text/x-disasm" => "ndisasm", -"text/x-dockerfile-config" => "docker", -"text/x-dylan" => "dylan", -"text/x-ebnf" => "ebnf", -"text/x-elisp" => "emacslisp", -"text/x-elixir" => "elixir", -"text/x-elm" => "elm", -"text/x-erlang" => "erlang", -"text/x-factor" => "factor", -"text/x-fennel" => "fennel", -"text/x-fortran" => "fortran", -"text/x-fsharp" => "fsharp", -"text/x-gas" => "gas", -"text/x-gdscript" => "gdscript3", -"text/x-gherkin" => "gherkin", -"text/x-gleam" => "gleam", -"text/x-glslsrc" => "glsl", -"text/x-gnuplot" => "gnuplot", -"text/x-groovy" => "groovy", -"text/x-hare" => "hare", -"text/x-haskell" => "haskell", -"text/x-hlsl" => "hlsl", -"text/x-hy" => "hy", -"text/x-idris" => "idris", -"text/x-ini" => "ini", -"text/x-iosrc" => "io", -"text/x-j" => "j", -"text/x-java" => "java", -"text/x-java-properties" => "properties", -"text/x-javascript" => "javascript", -"text/x-julia" => "julia", -"text/x-jungle" => "jungle", -"text/x-kotlin" => "kotlin", -"text/x-latex" => "tex", -"text/x-lighttpd-conf" => "lighttpd_configuration_file", -"text/x-llvm" => "llvm", -"text/x-lua" => "lua", -"text/x-makefile" => "makefile", -"text/x-mariadb" => "mysql", -"text/x-markdown" => "markdown", -"text/x-materializesql" => "materialize_sql_dialect", -"text/x-meson" => "meson", -"text/x-metal" => "metal", -"text/x-mlir" => "mlir", -"text/x-modula2" => "modula-2", -"text/x-monkeyc" => "monkeyc", -"text/x-mysql" => "mysql", -"text/x-nasm" => "nasm", -"text/x-natural" => "natural", -"text/x-newspeak" => "newspeak", -"text/x-nginx-conf" => "nginx_configuration_file", -"text/x-nim" => "nim", -"text/x-nix" => "nix", -"text/x-objective-c" => "objective-c", -"text/x-ocaml" => "ocaml", -"text/x-openedge" => "openedge_abl", -"text/x-pascal" => "objectpascal", -"text/x-patch" => "diff", -"text/x-perl" => "perl", -"text/x-php" => "php", -"text/x-pig" => "pig", -"text/x-plpgsql" => "pl_pgsql", -"text/x-plutus-core" => "plutus_core", -"text/x-postgresql" => "postgresql_sql_dialect", -"text/x-povray" => "povray", -"text/x-powerquery" => "powerquery", -"text/x-powershell" => "powershell", -"text/x-prolog" => "prolog", -"text/x-promela" => "promela", -"text/x-psl" => "psl", -"text/x-python" => "python", -"text/x-python2" => "python_2", -"text/x-python3" => "python", -"text/x-r" => "r", -"text/x-r-history" => "r", -"text/x-r-profile" => "r", -"text/x-r-source" => "r", -"text/x-racket" => "racket", -"text/x-reasonml" => "reasonml", -"text/x-rexx" => "rexx", -"text/x-rpm-spec" => "rpm_spec", -"text/x-ruby" => "ruby", -"text/x-rust" => "rust", -"text/x-sas" => "sas", -"text/x-sass" => "sass", -"text/x-scad" => "openscad", -"text/x-scala" => "scala", -"text/x-scheme" => "scheme", -"text/x-script.tcl" => "tcl", -"text/x-scss" => "scss", -"text/x-sed" => "sed", -"text/x-sh" => "bash_session", -"text/x-smalltalk" => "smalltalk", -"text/x-snobol" => "snobol", -"text/x-sourcepawn" => "sourcepawn", -"text/x-sql" => "sql", -"text/x-squidconf" => "squidconf", -"text/x-standardml" => "standard_ml", -"text/x-styl" => "stylus", -"text/x-swift" => "swift", -"text/x-systemverilog" => "systemverilog", -"text/x-tablegen" => "tablegen", -"text/x-tasm" => "tasm", -"text/x-tcl" => "tcl", -"text/x-tex" => "tex", -"text/x-toml" => "toml", -"text/x-trac-wiki" => "moinwiki", -"text/x-tradingview" => "tradingview", -"text/x-tsql" => "transact-sql", -"text/x-turing" => "turing", -"text/x-typescript" => "typescript", -"text/x-typoscript" => "typoscript", -"text/x-uxntal" => "tal", -"text/x-v" => "v", -"text/x-vala" => "vala", -"text/x-vba" => "vb_net", -"text/x-vbnet" => "vb_net", -"text/x-verilog" => "verilog", -"text/x-vhdl" => "vhdl", -"text/x-vim" => "viml", -"text/x-vsh" => "v_shell", -"text/x-vue" => "vue", -"text/x-whiley" => "whiley", -"text/x-windows-registry" => "reg", -"text/x-yaml" => "yaml", -"text/x.ucode" => "ucode", -"text/xml" => "xml", -"text/zed" => "zed", -"text/zig" => "zig", -} + "application/atom+xml" => "xml", + "application/edn" => "clojure", + "application/javascript" => "javascript", + "application/json" => "json", + "application/mathematica" => "mathematica", + "application/octet-stream" => "onesenterprise", + "application/postscript" => "postscript", + "application/prql" => "prql", + "application/rss+xml" => "xml", + "application/sparql-query" => "sparql", + "application/vnd.wolfram.cdf" => "mathematica", + "application/vnd.wolfram.mathematica" => "mathematica", + "application/vnd.wolfram.mathematica.package" => "mathematica", + "application/x-actionscript" => "actionscript", + "application/x-actionscript3" => "actionscript_3", + "application/x-awk" => "awk", + "application/x-brainfuck" => "brainfuck", + "application/x-chaiscript" => "chaiscript", + "application/x-cheetah" => "cheetah", + "application/x-clojure" => "clojure", + "application/x-csh" => "tcsh", + "application/x-cython" => "cython", + "application/x-desktop" => "desktop_entry", + "application/x-django-templating" => "django_jinja", + "application/x-dos-batch" => "batchfile", + "application/x-elisp" => "emacslisp", + "application/x-fennel" => "fennel", + "application/x-fish" => "fish", + "application/x-forth" => "forth", + "application/x-gdscript" => "gdscript3", + "application/x-hcl" => "hcl", + "application/x-hy" => "hy", + "application/x-javascript" => "javascript", + "application/x-jinja" => "django_jinja", + "application/x-julia" => "julia", + "application/x-lua" => "lua", + "application/x-mako" => "mako", + "application/x-mason" => "mason", + "application/x-myghty" => "myghty", + "application/x-openedge" => "openedge_abl", + "application/x-perl" => "perl", + "application/x-plutus-core" => "plutus_core", + "application/x-python" => "python", + "application/x-python2" => "python_2", + "application/x-python3" => "python", + "application/x-qml" => "qml", + "application/x-qt.qbs+qml" => "qml", + "application/x-racket" => "racket", + "application/x-ruby" => "ruby", + "application/x-sas" => "sas", + "application/x-scheme" => "scheme", + "application/x-sh" => "bash", + "application/x-shellscript" => "bash", + "application/x-smarty" => "smarty", + "application/x-spitfire" => "cheetah", + "application/x-standardml" => "standard_ml", + "application/x-tcl" => "tcl", + "application/x-terraform" => "terraform", + "application/x-tf" => "terraform", + "application/x-thrift" => "thrift", + "application/x-troff" => "groff", + "application/x-turtle" => "turtle", + "application/x-twig" => "TwigLexer", + "application/x-vue" => "vue", + "application/x.ucode" => "ucode", + "application/xhtml+xml" => "html", + "application/xml" => "xml", + "application/xml-dtd" => "dtd", + "application/yang" => "yang", + "image/svg+xml" => "xml", + "image/x-xbitmap" => "holyc", + "image/x-xpixmap" => "holyc", + "text/actionscript" => "actionscript", + "text/actionscript3" => "actionscript_3", + "text/basic" => "qbasic", + "text/coffeescript" => "coffeescript", + "text/css" => "css", + "text/dns" => "dns", + "text/html" => "html", + "text/inf" => "ini", + "text/ipf" => "igor", + "text/javascript" => "javascript", + "text/jsx" => "react", + "text/matlab" => "matlab", + "text/minizinc" => "minizinc", + "text/octave" => "octave", + "text/odin" => "odin", + "text/org" => "org_mode", + "text/plain" => "plaintext", + "text/rust" => "rust", + "text/s" => "r", + "text/s-plus" => "r", + "text/sas" => "sas", + "text/scilab" => "scilab", + "text/smali" => "smali", + "text/troff" => "groff", + "text/turtle" => "turtle", + "text/typescript-jsx" => "react", + "text/wgsl" => "webgpu_shading_language", + "text/x-abap" => "abap", + "text/x-abnf" => "abnf", + "text/x-actionscript" => "actionscript", + "text/x-actionscript3" => "actionscript_3", + "text/x-ada" => "ada", + "text/x-agda" => "agda", + "text/x-al" => "al", + "text/x-alloy" => "alloy", + "text/x-apacheconf" => "apacheconf", + "text/x-aql" => "arangodb_aql", + "text/x-arduino" => "arduino", + "text/x-armasm" => "armasm", + "text/x-asm" => "armasm", + "text/x-autohotkey" => "autohotkey", + "text/x-autoit" => "autoit", + "text/x-ballerina" => "ballerina", + "text/x-bb" => "blitzbasic", + "text/x-bbcode" => "bbcode", + "text/x-bibtex" => "bibtex", + "text/x-bnf" => "bnf", + "text/x-c++hdr" => "c++", + "text/x-c++src" => "c++", + "text/x-ceylon" => "ceylon", + "text/x-chaiscript" => "chaiscript", + "text/x-chdr" => "holyc", + "text/x-clojure" => "clojure", + "text/x-cmake" => "cmake", + "text/x-cobol" => "cobol", + "text/x-common-lisp" => "common_lisp", + "text/x-coq" => "coq", + "text/x-cql" => "cassandra_cql", + "text/x-crystal" => "crystal", + "text/x-csharp" => "c#", + "text/x-csrc" => "holyc", + "text/x-cue" => "cue", + "text/x-cython" => "cython", + "text/x-d" => "d", + "text/x-dart" => "dart", + "text/x-diff" => "diff", + "text/x-disasm" => "ndisasm", + "text/x-dockerfile-config" => "docker", + "text/x-dylan" => "dylan", + "text/x-ebnf" => "ebnf", + "text/x-elisp" => "emacslisp", + "text/x-elixir" => "elixir", + "text/x-elm" => "elm", + "text/x-erlang" => "erlang", + "text/x-factor" => "factor", + "text/x-fennel" => "fennel", + "text/x-fortran" => "fortran", + "text/x-fsharp" => "fsharp", + "text/x-gas" => "gas", + "text/x-gdscript" => "gdscript3", + "text/x-gherkin" => "gherkin", + "text/x-gleam" => "gleam", + "text/x-glslsrc" => "glsl", + "text/x-gnuplot" => "gnuplot", + "text/x-groovy" => "groovy", + "text/x-hare" => "hare", + "text/x-haskell" => "haskell", + "text/x-hlsl" => "hlsl", + "text/x-hy" => "hy", + "text/x-idris" => "idris", + "text/x-ini" => "ini", + "text/x-iosrc" => "io", + "text/x-j" => "j", + "text/x-java" => "java", + "text/x-java-properties" => "properties", + "text/x-javascript" => "javascript", + "text/x-julia" => "julia", + "text/x-jungle" => "jungle", + "text/x-kotlin" => "kotlin", + "text/x-latex" => "tex", + "text/x-lighttpd-conf" => "lighttpd_configuration_file", + "text/x-llvm" => "llvm", + "text/x-lua" => "lua", + "text/x-makefile" => "makefile", + "text/x-mariadb" => "mysql", + "text/x-markdown" => "markdown", + "text/x-materializesql" => "materialize_sql_dialect", + "text/x-meson" => "meson", + "text/x-metal" => "metal", + "text/x-mlir" => "mlir", + "text/x-modula2" => "modula-2", + "text/x-monkeyc" => "monkeyc", + "text/x-mysql" => "mysql", + "text/x-nasm" => "nasm", + "text/x-natural" => "natural", + "text/x-newspeak" => "newspeak", + "text/x-nginx-conf" => "nginx_configuration_file", + "text/x-nim" => "nim", + "text/x-nix" => "nix", + "text/x-objective-c" => "objective-c", + "text/x-ocaml" => "ocaml", + "text/x-openedge" => "openedge_abl", + "text/x-pascal" => "objectpascal", + "text/x-patch" => "diff", + "text/x-perl" => "perl", + "text/x-php" => "php", + "text/x-pig" => "pig", + "text/x-plpgsql" => "pl_pgsql", + "text/x-plutus-core" => "plutus_core", + "text/x-postgresql" => "postgresql_sql_dialect", + "text/x-povray" => "povray", + "text/x-powerquery" => "powerquery", + "text/x-powershell" => "powershell", + "text/x-prolog" => "prolog", + "text/x-promela" => "promela", + "text/x-psl" => "psl", + "text/x-python" => "python", + "text/x-python2" => "python_2", + "text/x-python3" => "python", + "text/x-r" => "r", + "text/x-r-history" => "r", + "text/x-r-profile" => "r", + "text/x-r-source" => "r", + "text/x-racket" => "racket", + "text/x-reasonml" => "reasonml", + "text/x-rexx" => "rexx", + "text/x-rpm-spec" => "rpm_spec", + "text/x-ruby" => "ruby", + "text/x-rust" => "rust", + "text/x-sas" => "sas", + "text/x-sass" => "sass", + "text/x-scad" => "openscad", + "text/x-scala" => "scala", + "text/x-scheme" => "scheme", + "text/x-script.tcl" => "tcl", + "text/x-scss" => "scss", + "text/x-sed" => "sed", + "text/x-sh" => "bash_session", + "text/x-smalltalk" => "smalltalk", + "text/x-snobol" => "snobol", + "text/x-sourcepawn" => "sourcepawn", + "text/x-sql" => "sql", + "text/x-squidconf" => "squidconf", + "text/x-standardml" => "standard_ml", + "text/x-styl" => "stylus", + "text/x-swift" => "swift", + "text/x-systemverilog" => "systemverilog", + "text/x-tablegen" => "tablegen", + "text/x-tasm" => "tasm", + "text/x-tcl" => "tcl", + "text/x-tex" => "tex", + "text/x-toml" => "toml", + "text/x-trac-wiki" => "moinwiki", + "text/x-tradingview" => "tradingview", + "text/x-tsql" => "transact-sql", + "text/x-turing" => "turing", + "text/x-typescript" => "typescript", + "text/x-typoscript" => "typoscript", + "text/x-uxntal" => "tal", + "text/x-v" => "v", + "text/x-vala" => "vala", + "text/x-vba" => "vb_net", + "text/x-vbnet" => "vb_net", + "text/x-verilog" => "verilog", + "text/x-vhdl" => "vhdl", + "text/x-vim" => "viml", + "text/x-vsh" => "v_shell", + "text/x-vue" => "vue", + "text/x-whiley" => "whiley", + "text/x-windows-registry" => "reg", + "text/x-yaml" => "yaml", + "text/x.ucode" => "ucode", + "text/xml" => "xml", + "text/zed" => "zed", + "text/zig" => "zig", + } LEXERS_BY_FILENAME = { -"*.1p" => ["groff"], -"*.3pm" => ["groff"], -"*.[1-9]" => ["groff"], -"*.[gs]sed" => ["sed"], -"*.abap" => ["abap"], -"*.abnf" => ["abnf"], -"*.ada" => ["ada"], -"*.adb" => ["ada"], -"*.ads" => ["ada"], -"*.agda" => ["agda"], -"*.ahk" => ["autohotkey"], -"*.ahkl" => ["autohotkey"], -"*.al" => ["al"], -"*.als" => ["alloy"], -"*.apl" => ["apl"], -"*.applescript" => ["applescript"], -"*.aql" => ["arangodb_aql"], -"*.arexx" => ["rexx"], -"*.as" => ["actionscript", "actionscript_3"], -"*.asm" => ["nasm", "z80_assembly", "tasm"], -"*.au3" => ["autoit"], -"*.automount" => ["systemd"], -"*.aux" => ["tex"], -"*.avsc" => ["json"], -"*.awk" => ["awk"], -"*.b" => ["brainfuck"], -"*.bal" => ["ballerina"], -"*.bas" => ["vb_net", "qbasic"], -"*.bash" => ["bash"], -"*.bat" => ["batchfile"], -"*.batch" => ["psl"], -"*.bb" => ["blitzbasic"], -"*.bf" => ["brainfuck"], -"*.bib" => ["bibtex"], -"*.bicep" => ["bicep"], -"*.bnf" => ["bnf"], -"*.bqn" => ["bqn"], -"*.bzl" => ["python"], -"*.c" => ["c", "c++"], -"*.c++" => ["c++"], -"*.capnp" => ["cap_n_proto"], -"*.cc" => ["c++"], -"*.cdf" => ["mathematica"], -"*.ceylon" => ["ceylon"], -"*.cf" => ["cfengine3"], -"*.cfg" => ["ini"], -"*.cginc" => ["hlsl"], -"*.chai" => ["chaiscript"], -"*.chpl" => ["chapel"], -"*.cjs" => ["javascript"], -"*.cl" => ["common_lisp"], -"*.clj" => ["clojure"], -"*.cls" => ["openedge_abl"], -"*.cmake" => ["cmake"], -"*.cmd" => ["batchfile"], -"*.cob" => ["cobol"], -"*.coffee" => ["coffeescript"], -"*.cp" => ["c++"], -"*.cpp" => ["c++"], -"*.cpy" => ["cobol"], -"*.cql" => ["cassandra_cql"], -"*.cr" => ["crystal"], -"*.cs" => ["c#"], -"*.csh" => ["tcsh"], -"*.csproj" => ["xml"], -"*.css" => ["css"], -"*.cts" => ["typescript"], -"*.cue" => ["cue"], -"*.cxx" => ["c++"], -"*.d" => ["d"], -"*.dal" => ["al"], -"*.dart" => ["dart"], -"*.dax" => ["dax"], -"*.decls" => ["blitzbasic"], -"*.def" => ["modula-2"], -"*.desktop" => ["desktop_entry"], -"*.device" => ["systemd"], -"*.di" => ["d"], -"*.diff" => ["diff"], -"*.dnssd" => ["systemd"], -"*.docker" => ["docker"], -"*.dockerfile" => ["docker"], -"*.dpk" => ["objectpascal"], -"*.dpr" => ["objectpascal"], -"*.dtd" => ["dtd"], -"*.duby" => ["ruby"], -"*.dyl" => ["dylan"], -"*.dylan" => ["dylan"], -"*.dzn" => ["minizinc"], -"*.ebnf" => ["ebnf"], -"*.ebuild" => ["bash"], -"*.ecl" => ["prolog"], -"*.eclass" => ["bash"], -"*.edn" => ["clojure"], -"*.eex" => ["elixir"], -"*.el" => ["emacslisp"], -"*.elm" => ["elm"], -"*.env" => ["bash"], -"*.epf" => ["onesenterprise"], -"*.eps" => ["postscript"], -"*.erf" => ["onesenterprise"], -"*.erl" => ["erlang"], -"*.es" => ["erlang"], -"*.escript" => ["erlang"], -"*.ex" => ["elixir"], -"*.exheres-0" => ["bash"], -"*.exlib" => ["bash"], -"*.exs" => ["elixir"], -"*.f" => ["fortranfixed"], -"*.f03" => ["fortran"], -"*.f90" => ["fortran"], -"*.f95" => ["fortran"], -"*.factor" => ["factor"], -"*.feature" => ["gherkin"], -"*.fennel" => ["fennel"], -"*.fhtml" => ["VelocityLexer"], -"*.fish" => ["fish"], -"*.frag" => ["glsl"], -"*.frt" => ["forth"], -"*.fs" => ["forth", "fsharp"], -"*.fsi" => ["fsharp"], -"*.fsproj" => ["xml"], -"*.fth" => ["forth"], -"*.fun" => ["standard_ml"], -"*.fx" => ["hlsl"], -"*.fxh" => ["hlsl"], -"*.fzn" => ["minizinc"], -"*.gd" => ["gdscript3", "gdscript"], -"*.gemspec" => ["ruby"], -"*.geo" => ["glsl"], -"*.gleam" => ["gleam"], -"*.go.tmpl" => ["go_template"], -"*.gotmpl" => ["go_template"], -"*.gradle" => ["groovy"], -"*.graphql" => ["graphql"], -"*.graphqls" => ["graphql"], -"*.groovy" => ["groovy"], -"*.h" => ["objective-c", "c", "c++"], -"*.h++" => ["c++"], -"*.ha" => ["hare"], -"*.handlebars" => ["handlebars"], -"*.hbs" => ["handlebars"], -"*.hc" => ["holyc"], -"*.hc.z" => ["holyc"], -"*.hcl" => ["hcl"], -"*.hh" => ["holyc", "c++"], -"*.hlb" => ["hlb"], -"*.hlsl" => ["hlsl"], -"*.hlsli" => ["hlsl"], -"*.hpp" => ["c++"], -"*.hrl" => ["erlang"], -"*.hs" => ["haskell"], -"*.htm" => ["html"], -"*.html" => ["html"], -"*.hxx" => ["c++"], -"*.hy" => ["hy"], -"*.i" => ["openedge_abl"], -"*.idc" => ["c"], -"*.idr" => ["idris"], -"*.ijs" => ["j"], -"*.inc" => ["php", "sourcepawn", "objectpascal", "povray"], -"*.inf" => ["ini"], -"*.ini" => ["ini"], -"*.ino" => ["arduino"], -"*.intr" => ["dylan"], -"*.io" => ["io"], -"*.ipf" => ["igor"], -"*.java" => ["java"], -"*.jl" => ["julia"], -"*.js" => ["javascript"], -"*.jsm" => ["javascript"], -"*.json" => ["json"], -"*.jsonata" => ["jsonata"], -"*.jsx" => ["react"], -"*.jungle" => ["jungle"], -"*.jy" => ["python"], -"*.ksh" => ["bash"], -"*.kt" => ["kotlin"], -"*.link" => ["systemd"], -"*.liquid" => ["LiquidLexer"], -"*.lisp" => ["common_lisp"], -"*.ll" => ["llvm"], -"*.load" => ["fish"], -"*.lpk" => ["objectpascal"], -"*.lpr" => ["objectpascal"], -"*.lua" => ["lua"], -"*.m" => ["mason", "mathematica", "matlab", "octave", "objective-c"], -"*.ma" => ["mathematica"], -"*.mak" => ["makefile"], -"*.man" => ["groff"], -"*.mao" => ["mako"], -"*.markdown" => ["markdown"], -"*.mc" => ["monkeyc", "mason"], -"*.mcfunction" => ["mcfunction"], -"*.md" => ["markdown"], -"*.metal" => ["metal"], -"*.mhtml" => ["mason"], -"*.mi" => ["mason"], -"*.mjs" => ["javascript"], -"*.mk" => ["makefile"], -"*.ml" => ["ocaml"], -"*.mli" => ["ocaml"], -"*.mlir" => ["mlir"], -"*.mll" => ["ocaml"], -"*.mly" => ["ocaml"], -"*.mod" => ["modula-2"], -"*.mount" => ["systemd"], -"*.mt" => ["mathematica"], -"*.mts" => ["typescript"], -"*.mx" => ["mathematica"], -"*.myt" => ["myghty"], -"*.mzn" => ["minizinc"], -"*.nasm" => ["nasm"], -"*.nb" => ["mathematica"], -"*.nbp" => ["mathematica"], -"*.netdev" => ["systemd"], -"*.network" => ["systemd"], -"*.nim" => ["nim"], -"*.nimrod" => ["nim"], -"*.nix" => ["nix"], -"*.ns2" => ["newspeak"], -"*.ns7" => ["natural"], -"*.nsa" => ["natural"], -"*.nsc" => ["natural"], -"*.nsg" => ["natural"], -"*.nsh" => ["natural"], -"*.nsl" => ["natural"], -"*.nsm" => ["natural"], -"*.nsn" => ["natural"], -"*.nsp" => ["natural"], -"*.nss" => ["natural"], -"*.odin" => ["odin"], -"*.org" => ["org_mode"], -"*.p" => ["openedge_abl"], -"*.pas" => ["objectpascal"], -"*.patch" => ["diff"], -"*.path" => ["systemd"], -"*.pc" => ["pkgconfig"], -"*.php" => ["php"], -"*.php[345]" => ["php"], -"*.pig" => ["pig"], -"*.pl" => ["prolog", "perl"], -"*.plc" => ["plutus_core"], -"*.plot" => ["gnuplot"], -"*.plt" => ["gnuplot"], -"*.pm" => ["perl", "promela"], -"*.pml" => ["promela"], -"*.pony" => ["pony"], -"*.pov" => ["povray"], -"*.pp" => ["objectpascal", "puppet"], -"*.pq" => ["powerquery"], -"*.pr" => ["promela"], -"*.prm" => ["promela"], -"*.pro" => ["prolog"], -"*.proc" => ["psl"], -"*.prolog" => ["prolog"], -"*.prom" => ["promela"], -"*.promela" => ["promela"], -"*.promql" => ["promql"], -"*.properties" => ["properties"], -"*.proto" => ["protocol_buffer"], -"*.prql" => ["prql"], -"*.ps" => ["postscript"], -"*.ps1" => ["powershell"], -"*.psd1" => ["powershell"], -"*.psl" => ["psl"], -"*.psm1" => ["powershell"], -"*.pxd" => ["cython"], -"*.pxi" => ["cython"], -"*.py" => ["python"], -"*.pyi" => ["python"], -"*.pyw" => ["python"], -"*.pyx" => ["cython"], -"*.qbs" => ["qml"], -"*.qml" => ["qml"], -"*.r" => ["r"], -"*.rake" => ["ruby"], -"*.rb" => ["ruby"], -"*.rbw" => ["ruby"], -"*.rbx" => ["ruby"], -"*.re" => ["reasonml"], -"*.react" => ["react"], -"*.reg" => ["reg"], -"*.rego" => ["rego"], -"*.rei" => ["reasonml"], -"*.rex" => ["rexx"], -"*.rexx" => ["rexx"], -"*.rkt" => ["racket"], -"*.rktd" => ["racket"], -"*.rktl" => ["racket"], -"*.rq" => ["sparql"], -"*.rs" => ["rust"], -"*.rs.in" => ["rust"], -"*.rss" => ["xml"], -"*.rvt" => ["tcl"], -"*.rx" => ["rexx"], -"*.s" => ["r", "armasm", "gas"], -"*.sage" => ["python"], -"*.sas" => ["sas"], -"*.sass" => ["sass"], -"*.sc" => ["python"], -"*.scad" => ["openscad"], -"*.scala" => ["scala"], -"*.sce" => ["scilab"], -"*.sci" => ["scilab"], -"*.scm" => ["scheme"], -"*.scope" => ["systemd"], -"*.scss" => ["scss"], -"*.sed" => ["sed"], -"*.service" => ["systemd", "ini"], -"*.sh" => ["bash"], -"*.sh-session" => ["bash_session"], -"*.sieve" => ["sieve"], -"*.sig" => ["standard_ml"], -"*.siv" => ["sieve"], -"*.slice" => ["systemd"], -"*.smali" => ["smali"], -"*.sml" => ["standard_ml"], -"*.snobol" => ["snobol"], -"*.socket" => ["systemd", "ini"], -"*.sol" => ["solidity"], -"*.sp" => ["sourcepawn"], -"*.sparql" => ["sparql"], -"*.spec" => ["rpm_spec"], -"*.spt" => ["cheetah"], -"*.sql" => ["mysql", "sql"], -"*.ss" => ["scheme"], -"*.st" => ["smalltalk"], -"*.stas" => ["stas"], -"*.styl" => ["stylus"], -"*.sv" => ["systemverilog"], -"*.svg" => ["xml"], -"*.svh" => ["systemverilog"], -"*.swap" => ["systemd"], -"*.swift" => ["swift"], -"*.t" => ["perl"], -"*.tac" => ["python"], -"*.tal" => ["tal"], -"*.tape" => ["vhs"], -"*.target" => ["systemd"], -"*.tasm" => ["tasm"], -"*.tcl" => ["tcl"], -"*.tcsh" => ["tcsh"], -"*.td" => ["tablegen"], -"*.tex" => ["tex"], -"*.tf" => ["terraform"], -"*.thrift" => ["thrift"], -"*.timer" => ["systemd"], -"*.tmpl" => ["cheetah"], -"*.toc" => ["tex"], -"*.toml" => ["toml"], -"*.tpl" => ["smarty"], -"*.tpp" => ["c++"], -"*.trig" => ["psl"], -"*.ts" => ["typoscript", "typescript"], -"*.tst" => ["scilab"], -"*.tsx" => ["typescript"], -"*.ttl" => ["turtle"], -"*.tu" => ["turing"], -"*.turing" => ["turing"], -"*.tv" => ["tradingview"], -"*.twig" => ["twig"], -"*.txt" => ["plaintext"], -"*.uc" => ["ucode"], -"*.v" => ["coq", "v", "verilog"], -"*.vala" => ["vala"], -"*.vapi" => ["vala"], -"*.vb" => ["vb_net"], -"*.vcxproj" => ["xml"], -"*.vert" => ["glsl"], -"*.vhd" => ["vhdl"], -"*.vhdl" => ["vhdl"], -"*.vim" => ["viml"], -"*.vm" => ["VelocityLexer"], -"*.vsh" => ["v_shell"], -"*.vue" => ["vue"], -"*.vv" => ["v"], -"*.w" => ["openedge_abl"], -"*.wdte" => ["wdte"], -"*.wgsl" => ["webgpu_shading_language"], -"*.whiley" => ["whiley"], -"*.wl" => ["mathematica"], -"*.wlua" => ["lua"], -"*.wsdl" => ["xml"], -"*.wsf" => ["xml"], -"*.x[bp]m" => ["c"], -"*.xhtml" => ["html"], -"*.xml" => ["xml"], -"*.xsd" => ["xml"], -"*.xsl" => ["xml"], -"*.xslt" => ["xml", "html"], -"*.yaml" => ["yaml"], -"*.yang" => ["yang"], -"*.yml" => ["yaml"], -"*.z80" => ["z80_assembly"], -"*.zed" => ["zed"], -"*.zig" => ["zig"], -"*.zone" => ["dns"], -"*.zsh" => ["bash"], -"*.zshrc" => ["bash"], -".bash_*" => ["bash"], -".bashrc" => ["bash"], -".editorconfig" => ["ini"], -".env" => ["bash"], -".exrc" => ["viml"], -".gitconfig" => ["ini"], -".gvimrc" => ["viml"], -".htaccess" => ["apacheconf"], -".justfile" => ["makefile"], -".pylintrc" => ["ini"], -".renviron" => ["r"], -".rhistory" => ["r"], -".rprofile" => ["r"], -".vimrc" => ["viml"], -".zshrc" => ["bash"], -"_exrc" => ["viml"], -"_gvimrc" => ["viml"], -"_vimrc" => ["viml"], -"apache.conf" => ["apacheconf"], -"apache2.conf" => ["apacheconf"], -"autodelegate" => ["myghty"], -"autohandler" => ["mason"], -"bash_*" => ["bash"], -"bashrc" => ["bash"], -"bsdmakefile" => ["makefile"], -"buck" => ["python"], -"build" => ["python"], -"build.bazel" => ["python"], -"cmakelists.txt" => ["cmake"], -"dhandler" => ["mason"], -"dhcpd.conf" => ["iscdhcpd"], -"dockerfile" => ["docker"], -"dockerfile.*" => ["docker"], -"gemfile" => ["ruby"], -"gnumakefile" => ["makefile"], -"gvimrc" => ["viml"], -"justfile" => ["makefile"], -"makefile" => ["makefile"], -"makefile.*" => ["makefile"], -"meson.build" => ["meson"], -"meson_options.txt" => ["meson"], -"module.bazel" => ["python"], -"nginx.conf" => ["nginx_configuration_file"], -"pacman.conf" => ["pacmanconf"], -"pipfile" => ["toml"], -"pkgbuild" => ["bash"], -"poetry.lock" => ["toml"], -"pylintrc" => ["ini"], -"rakefile" => ["ruby"], -"repo.bazel" => ["python"], -"sconscript" => ["python"], -"sconstruct" => ["python"], -"squid.conf" => ["squidconf"], -"termcap" => ["termcap"], -"termcap.src" => ["termcap"], -"terminfo" => ["terminfo"], -"terminfo.src" => ["terminfo"], -"v.mod" => ["v"], -"vagrantfile" => ["ruby"], -"vimrc" => ["viml"], -"workspace" => ["python"], -"workspace.bazel" => ["python"], -"workspace.bzlmod" => ["python"], -"xorg.conf" => ["xorg"], -"zshrc" => ["bash"], -} + "*.1p" => ["groff"], + "*.3pm" => ["groff"], + "*.[1-9]" => ["groff"], + "*.[gs]sed" => ["sed"], + "*.abap" => ["abap"], + "*.abnf" => ["abnf"], + "*.ada" => ["ada"], + "*.adb" => ["ada"], + "*.ads" => ["ada"], + "*.agda" => ["agda"], + "*.ahk" => ["autohotkey"], + "*.ahkl" => ["autohotkey"], + "*.al" => ["al"], + "*.als" => ["alloy"], + "*.apl" => ["apl"], + "*.applescript" => ["applescript"], + "*.aql" => ["arangodb_aql"], + "*.arexx" => ["rexx"], + "*.as" => ["actionscript", "actionscript_3"], + "*.asm" => ["nasm", "z80_assembly", "tasm"], + "*.au3" => ["autoit"], + "*.automount" => ["systemd"], + "*.aux" => ["tex"], + "*.avsc" => ["json"], + "*.awk" => ["awk"], + "*.b" => ["brainfuck"], + "*.bal" => ["ballerina"], + "*.bas" => ["vb_net", "qbasic"], + "*.bash" => ["bash"], + "*.bat" => ["batchfile"], + "*.batch" => ["psl"], + "*.bb" => ["blitzbasic"], + "*.bf" => ["brainfuck"], + "*.bib" => ["bibtex"], + "*.bicep" => ["bicep"], + "*.bnf" => ["bnf"], + "*.bqn" => ["bqn"], + "*.bzl" => ["python"], + "*.c" => ["c", "c++"], + "*.c++" => ["c++"], + "*.capnp" => ["cap_n_proto"], + "*.cc" => ["c++"], + "*.cdf" => ["mathematica"], + "*.ceylon" => ["ceylon"], + "*.cf" => ["cfengine3"], + "*.cfg" => ["ini"], + "*.cginc" => ["hlsl"], + "*.chai" => ["chaiscript"], + "*.chpl" => ["chapel"], + "*.cjs" => ["javascript"], + "*.cl" => ["common_lisp"], + "*.clj" => ["clojure"], + "*.cls" => ["openedge_abl"], + "*.cmake" => ["cmake"], + "*.cmd" => ["batchfile"], + "*.cob" => ["cobol"], + "*.coffee" => ["coffeescript"], + "*.cp" => ["c++"], + "*.cpp" => ["c++"], + "*.cpy" => ["cobol"], + "*.cql" => ["cassandra_cql"], + "*.cr" => ["crystal"], + "*.cs" => ["c#"], + "*.csh" => ["tcsh"], + "*.csproj" => ["xml"], + "*.css" => ["css"], + "*.cts" => ["typescript"], + "*.cue" => ["cue"], + "*.cxx" => ["c++"], + "*.d" => ["d"], + "*.dal" => ["al"], + "*.dart" => ["dart"], + "*.dax" => ["dax"], + "*.decls" => ["blitzbasic"], + "*.def" => ["modula-2"], + "*.desktop" => ["desktop_entry"], + "*.device" => ["systemd"], + "*.di" => ["d"], + "*.diff" => ["diff"], + "*.dnssd" => ["systemd"], + "*.docker" => ["docker"], + "*.dockerfile" => ["docker"], + "*.dpk" => ["objectpascal"], + "*.dpr" => ["objectpascal"], + "*.dtd" => ["dtd"], + "*.duby" => ["ruby"], + "*.dyl" => ["dylan"], + "*.dylan" => ["dylan"], + "*.dzn" => ["minizinc"], + "*.ebnf" => ["ebnf"], + "*.ebuild" => ["bash"], + "*.ecl" => ["prolog"], + "*.eclass" => ["bash"], + "*.edn" => ["clojure"], + "*.eex" => ["elixir"], + "*.el" => ["emacslisp"], + "*.elm" => ["elm"], + "*.env" => ["bash"], + "*.epf" => ["onesenterprise"], + "*.eps" => ["postscript"], + "*.erf" => ["onesenterprise"], + "*.erl" => ["erlang"], + "*.es" => ["erlang"], + "*.escript" => ["erlang"], + "*.ex" => ["elixir"], + "*.exheres-0" => ["bash"], + "*.exlib" => ["bash"], + "*.exs" => ["elixir"], + "*.f" => ["fortranfixed"], + "*.f03" => ["fortran"], + "*.f90" => ["fortran"], + "*.f95" => ["fortran"], + "*.factor" => ["factor"], + "*.feature" => ["gherkin"], + "*.fennel" => ["fennel"], + "*.fhtml" => ["VelocityLexer"], + "*.fish" => ["fish"], + "*.frag" => ["glsl"], + "*.frt" => ["forth"], + "*.fs" => ["forth", "fsharp"], + "*.fsi" => ["fsharp"], + "*.fsproj" => ["xml"], + "*.fth" => ["forth"], + "*.fun" => ["standard_ml"], + "*.fx" => ["hlsl"], + "*.fxh" => ["hlsl"], + "*.fzn" => ["minizinc"], + "*.gd" => ["gdscript3", "gdscript"], + "*.gemspec" => ["ruby"], + "*.geo" => ["glsl"], + "*.gleam" => ["gleam"], + "*.go.tmpl" => ["go_template"], + "*.gotmpl" => ["go_template"], + "*.gradle" => ["groovy"], + "*.graphql" => ["graphql"], + "*.graphqls" => ["graphql"], + "*.groovy" => ["groovy"], + "*.h" => ["objective-c", "c", "c++"], + "*.h++" => ["c++"], + "*.ha" => ["hare"], + "*.handlebars" => ["handlebars"], + "*.hbs" => ["handlebars"], + "*.hc" => ["holyc"], + "*.hc.z" => ["holyc"], + "*.hcl" => ["hcl"], + "*.hh" => ["holyc", "c++"], + "*.hlb" => ["hlb"], + "*.hlsl" => ["hlsl"], + "*.hlsli" => ["hlsl"], + "*.hpp" => ["c++"], + "*.hrl" => ["erlang"], + "*.hs" => ["haskell"], + "*.htm" => ["html"], + "*.html" => ["html"], + "*.hxx" => ["c++"], + "*.hy" => ["hy"], + "*.i" => ["openedge_abl"], + "*.idc" => ["c"], + "*.idr" => ["idris"], + "*.ijs" => ["j"], + "*.inc" => ["php", "sourcepawn", "objectpascal", "povray"], + "*.inf" => ["ini"], + "*.ini" => ["ini"], + "*.ino" => ["arduino"], + "*.intr" => ["dylan"], + "*.io" => ["io"], + "*.ipf" => ["igor"], + "*.java" => ["java"], + "*.jl" => ["julia"], + "*.js" => ["javascript"], + "*.jsm" => ["javascript"], + "*.json" => ["json"], + "*.jsonata" => ["jsonata"], + "*.jsx" => ["react"], + "*.jungle" => ["jungle"], + "*.jy" => ["python"], + "*.ksh" => ["bash"], + "*.kt" => ["kotlin"], + "*.link" => ["systemd"], + "*.liquid" => ["LiquidLexer"], + "*.lisp" => ["common_lisp"], + "*.ll" => ["llvm"], + "*.load" => ["fish"], + "*.lpk" => ["objectpascal"], + "*.lpr" => ["objectpascal"], + "*.lua" => ["lua"], + "*.m" => ["mason", "mathematica", "matlab", "octave", "objective-c"], + "*.ma" => ["mathematica"], + "*.mak" => ["makefile"], + "*.man" => ["groff"], + "*.mao" => ["mako"], + "*.markdown" => ["markdown"], + "*.mc" => ["monkeyc", "mason"], + "*.mcfunction" => ["mcfunction"], + "*.md" => ["markdown"], + "*.metal" => ["metal"], + "*.mhtml" => ["mason"], + "*.mi" => ["mason"], + "*.mjs" => ["javascript"], + "*.mk" => ["makefile"], + "*.ml" => ["ocaml"], + "*.mli" => ["ocaml"], + "*.mlir" => ["mlir"], + "*.mll" => ["ocaml"], + "*.mly" => ["ocaml"], + "*.mod" => ["modula-2"], + "*.mount" => ["systemd"], + "*.mt" => ["mathematica"], + "*.mts" => ["typescript"], + "*.mx" => ["mathematica"], + "*.myt" => ["myghty"], + "*.mzn" => ["minizinc"], + "*.nasm" => ["nasm"], + "*.nb" => ["mathematica"], + "*.nbp" => ["mathematica"], + "*.netdev" => ["systemd"], + "*.network" => ["systemd"], + "*.nim" => ["nim"], + "*.nimrod" => ["nim"], + "*.nix" => ["nix"], + "*.ns2" => ["newspeak"], + "*.ns7" => ["natural"], + "*.nsa" => ["natural"], + "*.nsc" => ["natural"], + "*.nsg" => ["natural"], + "*.nsh" => ["natural"], + "*.nsl" => ["natural"], + "*.nsm" => ["natural"], + "*.nsn" => ["natural"], + "*.nsp" => ["natural"], + "*.nss" => ["natural"], + "*.odin" => ["odin"], + "*.org" => ["org_mode"], + "*.p" => ["openedge_abl"], + "*.pas" => ["objectpascal"], + "*.patch" => ["diff"], + "*.path" => ["systemd"], + "*.pc" => ["pkgconfig"], + "*.php" => ["php"], + "*.php[345]" => ["php"], + "*.pig" => ["pig"], + "*.pl" => ["prolog", "perl"], + "*.plc" => ["plutus_core"], + "*.plot" => ["gnuplot"], + "*.plt" => ["gnuplot"], + "*.pm" => ["perl", "promela"], + "*.pml" => ["promela"], + "*.pony" => ["pony"], + "*.pov" => ["povray"], + "*.pp" => ["objectpascal", "puppet"], + "*.pq" => ["powerquery"], + "*.pr" => ["promela"], + "*.prm" => ["promela"], + "*.pro" => ["prolog"], + "*.proc" => ["psl"], + "*.prolog" => ["prolog"], + "*.prom" => ["promela"], + "*.promela" => ["promela"], + "*.promql" => ["promql"], + "*.properties" => ["properties"], + "*.proto" => ["protocol_buffer"], + "*.prql" => ["prql"], + "*.ps" => ["postscript"], + "*.ps1" => ["powershell"], + "*.psd1" => ["powershell"], + "*.psl" => ["psl"], + "*.psm1" => ["powershell"], + "*.pxd" => ["cython"], + "*.pxi" => ["cython"], + "*.py" => ["python"], + "*.pyi" => ["python"], + "*.pyw" => ["python"], + "*.pyx" => ["cython"], + "*.qbs" => ["qml"], + "*.qml" => ["qml"], + "*.r" => ["r"], + "*.rake" => ["ruby"], + "*.rb" => ["ruby"], + "*.rbw" => ["ruby"], + "*.rbx" => ["ruby"], + "*.re" => ["reasonml"], + "*.react" => ["react"], + "*.reg" => ["reg"], + "*.rego" => ["rego"], + "*.rei" => ["reasonml"], + "*.rex" => ["rexx"], + "*.rexx" => ["rexx"], + "*.rkt" => ["racket"], + "*.rktd" => ["racket"], + "*.rktl" => ["racket"], + "*.rq" => ["sparql"], + "*.rs" => ["rust"], + "*.rs.in" => ["rust"], + "*.rss" => ["xml"], + "*.rvt" => ["tcl"], + "*.rx" => ["rexx"], + "*.s" => ["r", "armasm", "gas"], + "*.sage" => ["python"], + "*.sas" => ["sas"], + "*.sass" => ["sass"], + "*.sc" => ["python"], + "*.scad" => ["openscad"], + "*.scala" => ["scala"], + "*.sce" => ["scilab"], + "*.sci" => ["scilab"], + "*.scm" => ["scheme"], + "*.scope" => ["systemd"], + "*.scss" => ["scss"], + "*.sed" => ["sed"], + "*.service" => ["systemd", "ini"], + "*.sh" => ["bash"], + "*.sh-session" => ["bash_session"], + "*.sieve" => ["sieve"], + "*.sig" => ["standard_ml"], + "*.siv" => ["sieve"], + "*.slice" => ["systemd"], + "*.smali" => ["smali"], + "*.sml" => ["standard_ml"], + "*.snobol" => ["snobol"], + "*.socket" => ["systemd", "ini"], + "*.sol" => ["solidity"], + "*.sp" => ["sourcepawn"], + "*.sparql" => ["sparql"], + "*.spec" => ["rpm_spec"], + "*.spt" => ["cheetah"], + "*.sql" => ["mysql", "sql"], + "*.ss" => ["scheme"], + "*.st" => ["smalltalk"], + "*.stas" => ["stas"], + "*.styl" => ["stylus"], + "*.sv" => ["systemverilog"], + "*.svg" => ["xml"], + "*.svh" => ["systemverilog"], + "*.swap" => ["systemd"], + "*.swift" => ["swift"], + "*.t" => ["perl"], + "*.tac" => ["python"], + "*.tal" => ["tal"], + "*.tape" => ["vhs"], + "*.target" => ["systemd"], + "*.tasm" => ["tasm"], + "*.tcl" => ["tcl"], + "*.tcsh" => ["tcsh"], + "*.td" => ["tablegen"], + "*.tex" => ["tex"], + "*.tf" => ["terraform"], + "*.thrift" => ["thrift"], + "*.timer" => ["systemd"], + "*.tmpl" => ["cheetah"], + "*.toc" => ["tex"], + "*.toml" => ["toml"], + "*.tpl" => ["smarty"], + "*.tpp" => ["c++"], + "*.trig" => ["psl"], + "*.ts" => ["typoscript", "typescript"], + "*.tst" => ["scilab"], + "*.tsx" => ["typescript"], + "*.ttl" => ["turtle"], + "*.tu" => ["turing"], + "*.turing" => ["turing"], + "*.tv" => ["tradingview"], + "*.twig" => ["twig"], + "*.txt" => ["plaintext"], + "*.uc" => ["ucode"], + "*.v" => ["coq", "v", "verilog"], + "*.vala" => ["vala"], + "*.vapi" => ["vala"], + "*.vb" => ["vb_net"], + "*.vcxproj" => ["xml"], + "*.vert" => ["glsl"], + "*.vhd" => ["vhdl"], + "*.vhdl" => ["vhdl"], + "*.vim" => ["viml"], + "*.vm" => ["VelocityLexer"], + "*.vsh" => ["v_shell"], + "*.vue" => ["vue"], + "*.vv" => ["v"], + "*.w" => ["openedge_abl"], + "*.wdte" => ["wdte"], + "*.wgsl" => ["webgpu_shading_language"], + "*.whiley" => ["whiley"], + "*.wl" => ["mathematica"], + "*.wlua" => ["lua"], + "*.wsdl" => ["xml"], + "*.wsf" => ["xml"], + "*.x[bp]m" => ["c"], + "*.xhtml" => ["html"], + "*.xml" => ["xml"], + "*.xsd" => ["xml"], + "*.xsl" => ["xml"], + "*.xslt" => ["xml", "html"], + "*.yaml" => ["yaml"], + "*.yang" => ["yang"], + "*.yml" => ["yaml"], + "*.z80" => ["z80_assembly"], + "*.zed" => ["zed"], + "*.zig" => ["zig"], + "*.zone" => ["dns"], + "*.zsh" => ["bash"], + "*.zshrc" => ["bash"], + ".bash_*" => ["bash"], + ".bashrc" => ["bash"], + ".editorconfig" => ["ini"], + ".env" => ["bash"], + ".exrc" => ["viml"], + ".gitconfig" => ["ini"], + ".gvimrc" => ["viml"], + ".htaccess" => ["apacheconf"], + ".justfile" => ["makefile"], + ".pylintrc" => ["ini"], + ".renviron" => ["r"], + ".rhistory" => ["r"], + ".rprofile" => ["r"], + ".vimrc" => ["viml"], + ".zshrc" => ["bash"], + "_exrc" => ["viml"], + "_gvimrc" => ["viml"], + "_vimrc" => ["viml"], + "apache.conf" => ["apacheconf"], + "apache2.conf" => ["apacheconf"], + "autodelegate" => ["myghty"], + "autohandler" => ["mason"], + "bash_*" => ["bash"], + "bashrc" => ["bash"], + "bsdmakefile" => ["makefile"], + "buck" => ["python"], + "build" => ["python"], + "build.bazel" => ["python"], + "cmakelists.txt" => ["cmake"], + "dhandler" => ["mason"], + "dhcpd.conf" => ["iscdhcpd"], + "dockerfile" => ["docker"], + "dockerfile.*" => ["docker"], + "gemfile" => ["ruby"], + "gnumakefile" => ["makefile"], + "gvimrc" => ["viml"], + "justfile" => ["makefile"], + "makefile" => ["makefile"], + "makefile.*" => ["makefile"], + "meson.build" => ["meson"], + "meson_options.txt" => ["meson"], + "module.bazel" => ["python"], + "nginx.conf" => ["nginx_configuration_file"], + "pacman.conf" => ["pacmanconf"], + "pipfile" => ["toml"], + "pkgbuild" => ["bash"], + "poetry.lock" => ["toml"], + "pylintrc" => ["ini"], + "rakefile" => ["ruby"], + "repo.bazel" => ["python"], + "sconscript" => ["python"], + "sconstruct" => ["python"], + "squid.conf" => ["squidconf"], + "termcap" => ["termcap"], + "termcap.src" => ["termcap"], + "terminfo" => ["terminfo"], + "terminfo.src" => ["terminfo"], + "v.mod" => ["v"], + "vagrantfile" => ["ruby"], + "vimrc" => ["viml"], + "workspace" => ["python"], + "workspace.bazel" => ["python"], + "workspace.bzlmod" => ["python"], + "xorg.conf" => ["xorg"], + "zshrc" => ["bash"], + } end diff --git a/src/lexer.cr b/src/lexer.cr index 30c82e9..20b0eb9 100644 --- a/src/lexer.cr +++ b/src/lexer.cr @@ -42,7 +42,7 @@ module Tartrazine struct Tokenizer include Iterator(Token) - property lexer : Lexer + property lexer : BaseLexer property text : Bytes property pos : Int32 = 0 @dq = Deque(Token).new @@ -106,13 +106,16 @@ module Tartrazine end end + abstract struct BaseLexer + end + # This implements a lexer for Pygments RegexLexers as expressed # in Chroma's XML serialization. # # For explanations on what actions and states do # the Pygments documentation is a good place to start. # https://pygments.org/docs/lexerdevelopment/ - struct Lexer + struct Lexer < BaseLexer property config = { name: "", priority: 0.0, @@ -204,6 +207,56 @@ module Tartrazine end end + # A lexer that takes two lexers as arguments. A root lexer + # and a language lexer. Everything is scalled using the + # language lexer, afterwards all `Other` tokens are lexed + # using the root lexer. + # + # This is useful for things like template languages, where + # you have Jinja + HTML or Jinja + CSS and so on. + struct DelegatingLexer < BaseLexer + property root_lexer : Lexer + property language_lexer : Lexer + + def initialize(@lexer : Lexer, @delegate : Lexer) + end + end + + # This Tokenizer works with a DelegatingLexer. It first tokenizes + # using the language lexer, and "Other" tokens are tokenized using + # the root lexer. + struct DelegatingTokenizer + include Iterator(Token) + @dq = Deque(Token).new + + def initialize(@lexer : Lexer, text : String, secondary = false) + # Respect the `ensure_nl` config option + if text.size > 0 && text[-1] != '\n' && @lexer.config[:ensure_nl] && !secondary + text += "\n" + end + @language_tokenizer = Tokenizer.new(@lexer.language_lexer, text, true) + end + + def next : Iterator::Stop | Token + if @dq.size > 0 + return @dq.shift + end + token = @language_tokenizer.next + if token == Iterator::Stop + return stop + end + if token[:type] == "Other" + @root_tokenizer = Tokenizer.new(@lexer.root_lexer, token[:value], true) + @root_tokenizer.each do |root_token| + @dq << root_token + end + else + dq << token + end + self.next + end + end + # A Lexer state. A state has a name and a list of rules. # The state machine has a state stack containing references # to states to decide which rules to apply.