.comment
can become .namespace--comment
) or replace them with your defined ones (like .editor__comment
). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword matched in the code. For example, the keyword if
will have the class keyword-if
as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the highlightAll
and highlightAllUnder
methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}};
+var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"bash":{"title":"Bash","alias":"shell","aliasTitles":{"shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"cobol":{"title":"COBOL","owner":"RunDevelopment"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"coq":{"title":"Coq","owner":"RunDevelopment"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"csv":{"title":"CSV","owner":"RunDevelopment"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"http":{"title":"HTTP","optional":["css","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jexl":{"title":"Jexl","owner":"czosel"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"log":{"title":"Log file","owner":"RunDevelopment"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"matlab":{"title":"MATLAB","owner":"Golmote"},"mel":{"title":"MEL","owner":"Golmote"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nevod":{"title":"Nevod","owner":"nezaboodka"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"openqasm":{"title":"OpenQasm","alias":"qasm","owner":"RunDevelopment"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"qsharp":{"title":"Q#","require":"clike","alias":"qs","owner":"fedonman"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren'py","alias":"rpy","owner":"HyuchiaDiego"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","owner":"Golmote"},"scss":{"title":"Sass (Scss)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"swift":{"title":"Swift","require":"clike","owner":"chrischares"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":{"title":"Line Highlight","description":"Highlights specific lines and/or line ranges."},"line-numbers":{"title":"Line Numbers","description":"Line number at the beginning of code lines.","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","description":"Show hidden characters such as tabs and line breaks.","optional":["autolinker","data-uri-highlight"]},"autolinker":{"title":"Autolinker","description":"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},"wpd":{"title":"WebPlatform Docs","description":"Makes tokens link to WebPlatform.org documentation. The links open in a new tab."},"custom-class":{"title":"Custom Class","description":"This plugin allows you to prefix Prism's default classes (.comment
can become .namespace--comment
) or replace them with your defined ones (like .editor__comment
). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword matched in the code. For example, the keyword if
will have the class keyword-if
as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the highlightAll
and highlightAllUnder
methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}};
if (typeof module !== 'undefined' && module.exports) { module.exports = components; }
\ No newline at end of file
diff --git a/components.json b/components.json
index 559ace8c6e..2e2f6d4174 100644
--- a/components.json
+++ b/components.json
@@ -280,6 +280,10 @@
"title": "Content-Security-Policy",
"owner": "ScottHelme"
},
+ "coq": {
+ "title": "Coq",
+ "owner": "RunDevelopment"
+ },
"crystal": {
"title": "Crystal",
"require": "ruby",
diff --git a/components/prism-coq.js b/components/prism-coq.js
new file mode 100644
index 0000000000..55a16b46e8
--- /dev/null
+++ b/components/prism-coq.js
@@ -0,0 +1,54 @@
+(function (Prism) {
+
+ // https://github.com/coq/coq
+
+ var commentSource = /\(\*(?:[^(*]|\((?!\*)|\*(?!\))|(* Source: https://coq.inria.fr/a-short-introduction-to-coq *)
+
+Inductive seq : nat -> Set :=
+| niln : seq 0
+| consn : forall n : nat, nat -> seq n -> seq (S n).
+
+Fixpoint length (n : nat) (s : seq n) {struct s} : nat :=
+ match s with
+ | niln => 0
+ | consn i _ s' => S (length i s')
+ end.
+
+Theorem length_corr : forall (n : nat) (s : seq n), length n s = n.
+Proof.
+ intros n s.
+
+ (* reasoning by induction over s. Then, we have two new goals
+ corresponding on the case analysis about s (either it is
+ niln or some consn *)
+ induction s.
+
+ (* We are in the case where s is void. We can reduce the
+ term: length 0 niln *)
+ simpl.
+
+ (* We obtain the goal 0 = 0. *)
+ trivial.
+
+ (* now, we treat the case s = consn n e s with induction
+ hypothesis IHs *)
+ simpl.
+
+ (* The induction hypothesis has type length n s = n.
+ So we can use it to perform some rewriting in the goal: *)
+ rewrite IHs.
+
+ (* Now the goal is the trivial equality: S n = S n *)
+ trivial.
+
+ (* Now all sub cases are closed, we perform the ultimate
+ step: typing the term built using tactics and save it as
+ a witness of the theorem. *)
+Qed.
+
diff --git a/tests/languages/coq/attribute_feature.test b/tests/languages/coq/attribute_feature.test
new file mode 100644
index 0000000000..a4636681ea
--- /dev/null
+++ b/tests/languages/coq/attribute_feature.test
@@ -0,0 +1,73 @@
+#[program]
+#[program=yes]
+#[deprecated(since="8.9.0")]
+#[local, universes(polymorphic)]
+#[universes(polymorphic(foo,bar))]
+#[canonical=yes, canonical=no]
+#[ export ]
+
+----------------------------------------------------
+
+[
+ ["attribute", [
+ ["punctuation", "#["],
+ "program",
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ "program",
+ ["operator", "="],
+ "yes",
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ "deprecated",
+ ["punctuation", "("],
+ "since",
+ ["operator", "="],
+ ["string", "\"8.9.0\""],
+ ["punctuation", ")"],
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ "local",
+ ["punctuation", ","],
+ " universes",
+ ["punctuation", "("],
+ "polymorphic",
+ ["punctuation", ")"],
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ "universes",
+ ["punctuation", "("],
+ "polymorphic",
+ ["punctuation", "("],
+ "foo",
+ ["punctuation", ","],
+ "bar",
+ ["punctuation", ")"],
+ ["punctuation", ")"],
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ "canonical",
+ ["operator", "="],
+ "yes",
+ ["punctuation", ","],
+ " canonical",
+ ["operator", "="],
+ "no",
+ ["punctuation", "]"]
+ ]],
+ ["attribute", [
+ ["punctuation", "#["],
+ " export ",
+ ["punctuation", "]"]
+ ]]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/comment_feature.test b/tests/languages/coq/comment_feature.test
new file mode 100644
index 0000000000..9564560a59
--- /dev/null
+++ b/tests/languages/coq/comment_feature.test
@@ -0,0 +1,17 @@
+(**)
+(* comment *)
+(*
+ comment
+ *)
+
+(* comments (* can be (* nested *) *) *)
+
+----------------------------------------------------
+
+[
+ ["comment", "(**)"],
+ ["comment", "(* comment *)"],
+ ["comment", "(*\r\n comment\r\n *)"],
+
+ ["comment", "(* comments (* can be (* nested *) *) *)"]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/keyword_feature.test b/tests/languages/coq/keyword_feature.test
new file mode 100644
index 0000000000..8e17324efe
--- /dev/null
+++ b/tests/languages/coq/keyword_feature.test
@@ -0,0 +1,547 @@
+_
+Abort
+About
+Add
+Admit
+Admitted
+All
+apply
+Arguments
+as
+As
+Assumptions
+at
+Axiom
+Axioms
+Back
+BackTo
+Backtrace
+Bind
+BinOp
+BinOpSpec
+BinRel
+Blacklist
+by
+Canonical
+Case
+Cd
+Check
+Class
+Classes
+Close
+Coercion
+Coercions
+cofix
+CoFixpoint
+CoInductive
+Collection
+Combined
+Compute
+Conjecture
+Conjectures
+Constant
+Constants
+Constraint
+Constructors
+Context
+Corollary
+Create
+CstOp
+Custom
+Cut
+Debug
+Declare
+Defined
+Definition
+Delimit
+Dependencies
+Dependent
+Derive
+Diffs
+Drop
+Elimination
+else
+end
+End
+Entry
+Equality
+Eval
+Example
+Existential
+Existentials
+Existing
+exists
+exists2
+Export
+Extern
+Extraction
+Fact
+Fail
+Field
+File
+Firstorder
+fix
+Fixpoint
+Flags
+Focus
+for
+forall
+From
+fun
+Funclass
+Function
+Functional
+GC
+Generalizable
+Goal
+Grab
+Grammar
+Graph
+Guarded
+Haskell
+Heap
+Hide
+Hint
+HintDb
+Hints
+Hypotheses
+Hypothesis
+Identity
+if
+IF
+Immediate
+Implicit
+Implicits
+Import
+in
+Include
+Induction
+Inductive
+Infix
+Info
+Initial
+InjTyp
+Inline
+Inspect
+Instance
+Instances
+Intro
+Intros
+Inversion
+Inversion_clear
+JSON
+Language
+Left
+Lemma
+let
+Let
+Lia
+Libraries
+Library
+Load
+LoadPath
+Locate
+Ltac
+Ltac2
+match
+Match
+measure
+Method
+Minimality
+ML
+Module
+Modules
+Morphism
+move
+Next
+NoInline
+Notation
+Number
+Obligation
+Obligations
+OCaml
+Opaque
+Open
+Optimize
+Parameter
+Parameters
+Parametric
+Path
+Paths
+Prenex
+Preterm
+Primitive
+Print
+Profile
+Projections
+Proof
+Prop
+PropBinOp
+Property
+PropOp
+Proposition
+PropUOp
+Pwd
+Qed
+Quit
+Rec
+Record
+Recursive
+Redirect
+Reduction
+Register
+Relation
+Remark
+Remove
+removed
+Require
+Reserved
+Reset
+Resolve
+Restart
+return
+Rewrite
+Right
+Ring
+Rings
+Saturate
+Save
+Scheme
+Scope
+Scopes
+Search
+SearchHead
+SearchPattern
+SearchRewrite
+Section
+Separate
+Set
+Setoid
+Show
+Signatures
+Solve
+Solver
+Sort
+Sortclass
+Sorted
+Spec
+SProp
+Step
+Strategies
+Strategy
+String
+struct
+Structure
+SubClass
+Subgraph
+SuchThat
+Tactic
+Term
+TestCompile
+then
+Theorem
+Time
+Timeout
+To
+Transparent
+Type
+Typeclasses
+Types
+Typing
+Undelimit
+Undo
+Unfocus
+Unfocused
+Unfold
+Universe
+Universes
+UnOp
+UnOpSpec
+Unshelve
+using
+Variable
+Variables
+Variant
+Verbose
+View
+Visibility
+wf
+where
+with
+Zify
+
+----------------------------------------------------
+
+[
+ ["keyword", "_"],
+ ["keyword", "Abort"],
+ ["keyword", "About"],
+ ["keyword", "Add"],
+ ["keyword", "Admit"],
+ ["keyword", "Admitted"],
+ ["keyword", "All"],
+ ["keyword", "apply"],
+ ["keyword", "Arguments"],
+ ["keyword", "as"],
+ ["keyword", "As"],
+ ["keyword", "Assumptions"],
+ ["keyword", "at"],
+ ["keyword", "Axiom"],
+ ["keyword", "Axioms"],
+ ["keyword", "Back"],
+ ["keyword", "BackTo"],
+ ["keyword", "Backtrace"],
+ ["keyword", "Bind"],
+ ["keyword", "BinOp"],
+ ["keyword", "BinOpSpec"],
+ ["keyword", "BinRel"],
+ ["keyword", "Blacklist"],
+ ["keyword", "by"],
+ ["keyword", "Canonical"],
+ ["keyword", "Case"],
+ ["keyword", "Cd"],
+ ["keyword", "Check"],
+ ["keyword", "Class"],
+ ["keyword", "Classes"],
+ ["keyword", "Close"],
+ ["keyword", "Coercion"],
+ ["keyword", "Coercions"],
+ ["keyword", "cofix"],
+ ["keyword", "CoFixpoint"],
+ ["keyword", "CoInductive"],
+ ["keyword", "Collection"],
+ ["keyword", "Combined"],
+ ["keyword", "Compute"],
+ ["keyword", "Conjecture"],
+ ["keyword", "Conjectures"],
+ ["keyword", "Constant"],
+ ["keyword", "Constants"],
+ ["keyword", "Constraint"],
+ ["keyword", "Constructors"],
+ ["keyword", "Context"],
+ ["keyword", "Corollary"],
+ ["keyword", "Create"],
+ ["keyword", "CstOp"],
+ ["keyword", "Custom"],
+ ["keyword", "Cut"],
+ ["keyword", "Debug"],
+ ["keyword", "Declare"],
+ ["keyword", "Defined"],
+ ["keyword", "Definition"],
+ ["keyword", "Delimit"],
+ ["keyword", "Dependencies"],
+ ["keyword", "Dependent"],
+ ["keyword", "Derive"],
+ ["keyword", "Diffs"],
+ ["keyword", "Drop"],
+ ["keyword", "Elimination"],
+ ["keyword", "else"],
+ ["keyword", "end"],
+ ["keyword", "End"],
+ ["keyword", "Entry"],
+ ["keyword", "Equality"],
+ ["keyword", "Eval"],
+ ["keyword", "Example"],
+ ["keyword", "Existential"],
+ ["keyword", "Existentials"],
+ ["keyword", "Existing"],
+ ["keyword", "exists"],
+ ["keyword", "exists2"],
+ ["keyword", "Export"],
+ ["keyword", "Extern"],
+ ["keyword", "Extraction"],
+ ["keyword", "Fact"],
+ ["keyword", "Fail"],
+ ["keyword", "Field"],
+ ["keyword", "File"],
+ ["keyword", "Firstorder"],
+ ["keyword", "fix"],
+ ["keyword", "Fixpoint"],
+ ["keyword", "Flags"],
+ ["keyword", "Focus"],
+ ["keyword", "for"],
+ ["keyword", "forall"],
+ ["keyword", "From"],
+ ["keyword", "fun"],
+ ["keyword", "Funclass"],
+ ["keyword", "Function"],
+ ["keyword", "Functional"],
+ ["keyword", "GC"],
+ ["keyword", "Generalizable"],
+ ["keyword", "Goal"],
+ ["keyword", "Grab"],
+ ["keyword", "Grammar"],
+ ["keyword", "Graph"],
+ ["keyword", "Guarded"],
+ ["keyword", "Haskell"],
+ ["keyword", "Heap"],
+ ["keyword", "Hide"],
+ ["keyword", "Hint"],
+ ["keyword", "HintDb"],
+ ["keyword", "Hints"],
+ ["keyword", "Hypotheses"],
+ ["keyword", "Hypothesis"],
+ ["keyword", "Identity"],
+ ["keyword", "if"],
+ ["keyword", "IF"],
+ ["keyword", "Immediate"],
+ ["keyword", "Implicit"],
+ ["keyword", "Implicits"],
+ ["keyword", "Import"],
+ ["keyword", "in"],
+ ["keyword", "Include"],
+ ["keyword", "Induction"],
+ ["keyword", "Inductive"],
+ ["keyword", "Infix"],
+ ["keyword", "Info"],
+ ["keyword", "Initial"],
+ ["keyword", "InjTyp"],
+ ["keyword", "Inline"],
+ ["keyword", "Inspect"],
+ ["keyword", "Instance"],
+ ["keyword", "Instances"],
+ ["keyword", "Intro"],
+ ["keyword", "Intros"],
+ ["keyword", "Inversion"],
+ ["keyword", "Inversion_clear"],
+ ["keyword", "JSON"],
+ ["keyword", "Language"],
+ ["keyword", "Left"],
+ ["keyword", "Lemma"],
+ ["keyword", "let"],
+ ["keyword", "Let"],
+ ["keyword", "Lia"],
+ ["keyword", "Libraries"],
+ ["keyword", "Library"],
+ ["keyword", "Load"],
+ ["keyword", "LoadPath"],
+ ["keyword", "Locate"],
+ ["keyword", "Ltac"],
+ ["keyword", "Ltac2"],
+ ["keyword", "match"],
+ ["keyword", "Match"],
+ ["keyword", "measure"],
+ ["keyword", "Method"],
+ ["keyword", "Minimality"],
+ ["keyword", "ML"],
+ ["keyword", "Module"],
+ ["keyword", "Modules"],
+ ["keyword", "Morphism"],
+ ["keyword", "move"],
+ ["keyword", "Next"],
+ ["keyword", "NoInline"],
+ ["keyword", "Notation"],
+ ["keyword", "Number"],
+ ["keyword", "Obligation"],
+ ["keyword", "Obligations"],
+ ["keyword", "OCaml"],
+ ["keyword", "Opaque"],
+ ["keyword", "Open"],
+ ["keyword", "Optimize"],
+ ["keyword", "Parameter"],
+ ["keyword", "Parameters"],
+ ["keyword", "Parametric"],
+ ["keyword", "Path"],
+ ["keyword", "Paths"],
+ ["keyword", "Prenex"],
+ ["keyword", "Preterm"],
+ ["keyword", "Primitive"],
+ ["keyword", "Print"],
+ ["keyword", "Profile"],
+ ["keyword", "Projections"],
+ ["keyword", "Proof"],
+ ["keyword", "Prop"],
+ ["keyword", "PropBinOp"],
+ ["keyword", "Property"],
+ ["keyword", "PropOp"],
+ ["keyword", "Proposition"],
+ ["keyword", "PropUOp"],
+ ["keyword", "Pwd"],
+ ["keyword", "Qed"],
+ ["keyword", "Quit"],
+ ["keyword", "Rec"],
+ ["keyword", "Record"],
+ ["keyword", "Recursive"],
+ ["keyword", "Redirect"],
+ ["keyword", "Reduction"],
+ ["keyword", "Register"],
+ ["keyword", "Relation"],
+ ["keyword", "Remark"],
+ ["keyword", "Remove"],
+ ["keyword", "removed"],
+ ["keyword", "Require"],
+ ["keyword", "Reserved"],
+ ["keyword", "Reset"],
+ ["keyword", "Resolve"],
+ ["keyword", "Restart"],
+ ["keyword", "return"],
+ ["keyword", "Rewrite"],
+ ["keyword", "Right"],
+ ["keyword", "Ring"],
+ ["keyword", "Rings"],
+ ["keyword", "Saturate"],
+ ["keyword", "Save"],
+ ["keyword", "Scheme"],
+ ["keyword", "Scope"],
+ ["keyword", "Scopes"],
+ ["keyword", "Search"],
+ ["keyword", "SearchHead"],
+ ["keyword", "SearchPattern"],
+ ["keyword", "SearchRewrite"],
+ ["keyword", "Section"],
+ ["keyword", "Separate"],
+ ["keyword", "Set"],
+ ["keyword", "Setoid"],
+ ["keyword", "Show"],
+ ["keyword", "Signatures"],
+ ["keyword", "Solve"],
+ ["keyword", "Solver"],
+ ["keyword", "Sort"],
+ ["keyword", "Sortclass"],
+ ["keyword", "Sorted"],
+ ["keyword", "Spec"],
+ ["keyword", "SProp"],
+ ["keyword", "Step"],
+ ["keyword", "Strategies"],
+ ["keyword", "Strategy"],
+ ["keyword", "String"],
+ ["keyword", "struct"],
+ ["keyword", "Structure"],
+ ["keyword", "SubClass"],
+ ["keyword", "Subgraph"],
+ ["keyword", "SuchThat"],
+ ["keyword", "Tactic"],
+ ["keyword", "Term"],
+ ["keyword", "TestCompile"],
+ ["keyword", "then"],
+ ["keyword", "Theorem"],
+ ["keyword", "Time"],
+ ["keyword", "Timeout"],
+ ["keyword", "To"],
+ ["keyword", "Transparent"],
+ ["keyword", "Type"],
+ ["keyword", "Typeclasses"],
+ ["keyword", "Types"],
+ ["keyword", "Typing"],
+ ["keyword", "Undelimit"],
+ ["keyword", "Undo"],
+ ["keyword", "Unfocus"],
+ ["keyword", "Unfocused"],
+ ["keyword", "Unfold"],
+ ["keyword", "Universe"],
+ ["keyword", "Universes"],
+ ["keyword", "UnOp"],
+ ["keyword", "UnOpSpec"],
+ ["keyword", "Unshelve"],
+ ["keyword", "using"],
+ ["keyword", "Variable"],
+ ["keyword", "Variables"],
+ ["keyword", "Variant"],
+ ["keyword", "Verbose"],
+ ["keyword", "View"],
+ ["keyword", "Visibility"],
+ ["keyword", "wf"],
+ ["keyword", "where"],
+ ["keyword", "with"],
+ ["keyword", "Zify"]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/number_feature.test b/tests/languages/coq/number_feature.test
new file mode 100644
index 0000000000..3027ea8b35
--- /dev/null
+++ b/tests/languages/coq/number_feature.test
@@ -0,0 +1,33 @@
+0
+123
+123.456
+123.456e65
+123.456e+65
+1_2_3.4_5_6e-6_5
+1_2_3e-6_5
+
+0x0
+0X0
+0xbad.345e
+0xbad.345ep54
+0xbad.345ep+54
+0xb_a_d.3_4_5_ep-5_4
+
+----------------------------------------------------
+
+[
+ ["number", "0"],
+ ["number", "123"],
+ ["number", "123.456"],
+ ["number", "123.456e65"],
+ ["number", "123.456e+65"],
+ ["number", "1_2_3.4_5_6e-6_5"],
+ ["number", "1_2_3e-6_5"],
+
+ ["number", "0x0"],
+ ["number", "0X0"],
+ ["number", "0xbad.345e"],
+ ["number", "0xbad.345ep54"],
+ ["number", "0xbad.345ep+54"],
+ ["number", "0xb_a_d.3_4_5_ep-5_4"]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/operator_feature.test b/tests/languages/coq/operator_feature.test
new file mode 100644
index 0000000000..227cf1943a
--- /dev/null
+++ b/tests/languages/coq/operator_feature.test
@@ -0,0 +1,83 @@
+->
++
+<
+<-
+<->
+<:
+<+
+<<:
+<=
+=
+=>
+>
+>->
+>=
+|
+|-
+||
+@
+*
+**
+/
+/\
+\/
+&
+%
+-
+!
+?
+^
+~
+
+..
+...
+
+::=
+:=
+=
+
+'
+
+----------------------------------------------------
+
+[
+ ["operator", "->"],
+ ["operator", "+"],
+ ["operator", "<"],
+ ["operator", "<-"],
+ ["operator", "<->"],
+ ["operator", "<:"],
+ ["operator", "<+"],
+ ["operator", "<<:"],
+ ["operator", "<="],
+ ["operator", "="],
+ ["operator", "=>"],
+ ["operator", ">"],
+ ["operator", ">->"],
+ ["operator", ">="],
+ ["operator", "|"],
+ ["operator", "|-"],
+ ["operator", "||"],
+ ["operator", "@"],
+ ["operator", "*"],
+ ["operator", "**"],
+ ["operator", "/"],
+ ["operator", "/\\"],
+ ["operator", "\\/"],
+ ["operator", "&"],
+ ["operator", "%"],
+ ["operator", "-"],
+ ["operator", "!"],
+ ["operator", "?"],
+ ["operator", "^"],
+ ["operator", "~"],
+
+ ["operator", ".."],
+ ["operator", "..."],
+
+ ["operator", "::="],
+ ["operator", ":="],
+ ["operator", "="],
+
+ ["operator", "'"]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/punctuation_feature.test b/tests/languages/coq/punctuation_feature.test
new file mode 100644
index 0000000000..6d4579d9cb
--- /dev/null
+++ b/tests/languages/coq/punctuation_feature.test
@@ -0,0 +1,35 @@
+, ; .
+( ) .( `(
+{ } @{ } `{ } {| }
+[ ] [= ]
+
+: :>
+
+----------------------------------------------------
+
+[
+ ["punctuation", ","],
+ ["punctuation", ";"],
+ ["punctuation", "."],
+
+ ["punctuation", "("],
+ ["punctuation", ")"],
+ ["punctuation", ".("],
+ ["punctuation", "`("],
+
+ ["punctuation", "{"],
+ ["punctuation", "}"],
+ ["punct", "@{"],
+ ["punctuation", "}"],
+ ["punctuation", "`{"],
+ ["punctuation", "}"],
+ ["punct", "{|"],
+ ["punctuation", "}"],
+
+ ["punctuation", "["],
+ ["punctuation", "]"],
+ ["punct", "[="],
+ ["punctuation", "]"],
+
+ ["punctuation", ":"], ["punct", ":>"]
+]
\ No newline at end of file
diff --git a/tests/languages/coq/string_feature.test b/tests/languages/coq/string_feature.test
new file mode 100644
index 0000000000..c03f3f51cf
--- /dev/null
+++ b/tests/languages/coq/string_feature.test
@@ -0,0 +1,9 @@
+""
+"foo""bar"
+
+----------------------------------------------------
+
+[
+ ["string", "\"\""],
+ ["string", "\"foo\"\"bar\""]
+]
\ No newline at end of file