1867 lines
45 KiB
TypeScript
1867 lines
45 KiB
TypeScript
export interface LangConfig {
|
||
aliases?: string[];
|
||
name: string;
|
||
monacoLang?: string;
|
||
daemon?: string;
|
||
setup?: string;
|
||
repl?: string;
|
||
main: string;
|
||
prefix?: string;
|
||
suffix?: string;
|
||
createEmpty?: string;
|
||
compile?: string;
|
||
run: string;
|
||
pkg?: {
|
||
install: string;
|
||
uninstall?: string;
|
||
all?: string;
|
||
search?: string;
|
||
};
|
||
lspSetup?: string;
|
||
lsp?: string;
|
||
lspDisableDynamicRegistration?: boolean;
|
||
lspInit?: any;
|
||
lspConfig?: any;
|
||
lspLang?: string;
|
||
template: string;
|
||
hacks?: "ghci-config"[];
|
||
test?: {
|
||
ensure?: string;
|
||
};
|
||
}
|
||
|
||
export const langs: { [key: string]: LangConfig } = {
|
||
"><>": {
|
||
aliases: ["esofish"],
|
||
name: "><>",
|
||
main: "main.fish",
|
||
run: "esofish main.fish",
|
||
template: `"Hello, world!"r\\
|
||
o;!?l<
|
||
`,
|
||
},
|
||
ada: {
|
||
aliases: ["adb"],
|
||
name: "Ada",
|
||
main: "main.adb",
|
||
compile: "x86_64-linux-gnu-gnatmake-9 main.adb",
|
||
run: "./main",
|
||
lsp: "ada_language_server",
|
||
template: `with Ada.Text_IO;
|
||
|
||
procedure Main is
|
||
begin
|
||
Ada.Text_IO.Put_Line("Hello, world!");
|
||
end Main;
|
||
`,
|
||
},
|
||
algol: {
|
||
aliases: ["alg"],
|
||
name: "ALGOL 68",
|
||
main: "main.alg",
|
||
run: "a68g main.alg",
|
||
template: `print(("Hello, world!",new line))
|
||
`,
|
||
},
|
||
apl: {
|
||
name: "APL",
|
||
repl: "apl",
|
||
main: "main.apl",
|
||
run: "apl -f main.apl",
|
||
template: `'Hello, world!'
|
||
`,
|
||
},
|
||
arm: {
|
||
name: "ARM",
|
||
main: "main.S",
|
||
compile: "arm-linux-gnueabihf-gcc main.S -o main -static",
|
||
run: "qemu-arm-static main",
|
||
template: ` .text
|
||
.globl main
|
||
main:
|
||
mov r7, #4
|
||
mov r0, #1
|
||
ldr r1, =message
|
||
mov r2, #14
|
||
swi 0
|
||
mov r7, #1
|
||
mov r0, #0
|
||
swi 0
|
||
.data
|
||
message:
|
||
.string "Hello, world!\\n"
|
||
`,
|
||
},
|
||
asciidoc: {
|
||
aliases: ["adoc", "asc"],
|
||
name: "AsciiDoc",
|
||
main: "main.adoc",
|
||
compile: "asciidoc -s main.adoc",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
ats: {
|
||
aliases: ["dats"],
|
||
name: "ATS",
|
||
monacoLang: "postiats",
|
||
main: "main.dats",
|
||
compile: "patscc main.dats -o main",
|
||
run: "./main",
|
||
template: `val _ = print ("Hello, world!\\n")
|
||
implement main0 () = ()
|
||
`,
|
||
},
|
||
awk: {
|
||
aliases: ["gawk", "mawk"],
|
||
name: "Awk",
|
||
main: "main.awk",
|
||
run: `awk -f main.awk`,
|
||
template: `BEGIN { print "Hello, world!" }
|
||
`,
|
||
},
|
||
bash: {
|
||
aliases: ["bashrc", "bourneshell"],
|
||
name: "Bash",
|
||
monacoLang: "shell",
|
||
repl: "bash --rcfile /dev/null",
|
||
main: "main.bash",
|
||
run: "bash --rcfile main.bash",
|
||
lsp: "bash-language-server start",
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
basic: {
|
||
aliases: ["bas", "qbasic"],
|
||
name: "BASIC",
|
||
repl: "bwbasic",
|
||
main: "main.bas",
|
||
run: "bwbasic main.bas",
|
||
template: `PRINT "Hello, world!"
|
||
`,
|
||
},
|
||
beatnik: {
|
||
name: "Beatnik",
|
||
main: "main.beatnik",
|
||
run: "beatnik main.beatnik",
|
||
template: `Soars, larkspurs, rains.
|
||
Indistinctness.
|
||
Mario snarl (nurses, natures, rules...) sensuously retries goal.
|
||
Agribusinesses' costs par lain ropes (mopes) autos' cores.
|
||
Tuner ambitiousness.
|
||
Flit.
|
||
Dour entombment.
|
||
Legals' saner kinking lapse.
|
||
Nests glint.
|
||
Dread, tied futures, dourer usual tumor grunts alter atonal
|
||
garb tries shouldered coins.
|
||
Taste a vast lustiness.
|
||
Stile stuns gad subgroup gram lanes.
|
||
Draftee insurer road: cuckold blunt, strut sunnier.
|
||
Rely enure pantheism: arty gain groups (genies, pan) titters, tattles, nears.
|
||
Bluffer tapes? Idle diatom stooge!
|
||
Feted antes anklets ague? Remit goiter gout!
|
||
Doubtless teared toed alohas will dull gangs' aerials' tails' sluices;
|
||
Gusset ends! Gawkier halo!
|
||
|
||
Enter abstruse rested loser beer guy louts.
|
||
Curtain roams lasso weir lupus stunt.
|
||
Truant bears animate talon. Entire torte originally timer.
|
||
Redo stilt gobs.
|
||
|
||
Utter centaurs;
|
||
Urgent stars;
|
||
Usurers (dilute);
|
||
Noses;
|
||
Bones;
|
||
Brig sonar graders;
|
||
Utensil silts;
|
||
Lazies.
|
||
Fret arson veterinary rows.
|
||
|
||
Atlas grunted: "Pates, slues, sulfuric manor liaising tines,
|
||
trailers, rep... unfair! Instant snots!"
|
||
|
||
Sled rested until eatery fail.
|
||
Ergs fortitude
|
||
Indent spotter
|
||
Euros enter egg.
|
||
Curious tenures.
|
||
Torus cutlasses.
|
||
Sarong torso earns cruel lags it reeled.
|
||
|
||
Engineer: "Erase handbag -- unite ratification!"
|
||
|
||
oaring oaten donkeys unsold, surer rapid saltest tags
|
||
BUTTERED TIBIA LUGS REWIRING TOILETS
|
||
anion festers raring edit epilogues.
|
||
DIRGE ROTOR.
|
||
linnet oaring.
|
||
GORE BOOTIES.
|
||
Ironed goon lists tallest sublets --
|
||
Riots,
|
||
Raucous onset.
|
||
|
||
Ignobly, runners' diet anguishes sunrise loner.
|
||
Erode mob, slier switcher!
|
||
Loaners stilt drudge pearl atoll, risking hats' ends.
|
||
|
||
Rebind sitters.
|
||
|
||
Toga epistles -- crud lard. (Pager purse dons souls.)
|
||
|
||
glob title a curio hired rites shed suds lade grease strut arctic revs toad
|
||
unless idlers rind stilt region land GERMICIDES SULTANA GUTS gill siting leans
|
||
nice spurs
|
||
tests gloves
|
||
roused asp
|
||
|
||
Holes! Moles! (Sores!)
|
||
Hygienists! Scars! (Asses!)
|
||
Smells spell rares.
|
||
|
||
Cubs instant sing in parse goodies.
|
||
Rosin. Unhelpful sisal acres. Slope told.
|
||
MALENESS PASTA LAB. "Infirmary vine," rang illiterates (beans).
|
||
Rosin sours, insults truss abalones, nailed rules, helical atlases.
|
||
Dear remodeling stings mar rents.
|
||
Sunless shiner orb (silly idol.)
|
||
Clarity disses senna.
|
||
Vagabonds sauted; sloes performed gelds.
|
||
Alter post radial lip sectioning gums.
|
||
Saint Towellings.
|
||
Larger aeons telephone stolid char, pal!
|
||
Boats Dean forsook, rosters, tunas, terrariums -- united, traced.
|
||
Nude pagoda careens.
|
||
`,
|
||
},
|
||
befunge: {
|
||
aliases: ["be"],
|
||
name: "Befunge",
|
||
main: "main.be",
|
||
run: "befunge-repl main.be",
|
||
template: `64+"!dlrow ,olleH">:#,_@
|
||
`,
|
||
},
|
||
blc: {
|
||
aliases: [
|
||
"binarylambdacalculus",
|
||
"lc",
|
||
"binary",
|
||
"lambdacalculus",
|
||
"lambda",
|
||
],
|
||
name: "Binary Lambda Calculus",
|
||
main: "main.blc",
|
||
run: "cat main.blc | binary-to-text | tromp",
|
||
template: `001010100100100001100101011011000110110001101111001011000010
|
||
000001110111011011110111001001101100011001000010000100001010
|
||
`,
|
||
},
|
||
brainf: {
|
||
aliases: ["brainfuck", "bf"],
|
||
name: "Brainf***",
|
||
repl: "brainf-repl",
|
||
main: "main.bf",
|
||
run: "brainf-repl main.bf",
|
||
template: `++++++++
|
||
[
|
||
>++++
|
||
[
|
||
>++
|
||
>+++
|
||
>+++
|
||
>+
|
||
<<<<-
|
||
]
|
||
>+
|
||
>+
|
||
>-
|
||
>>+
|
||
[<]
|
||
|
||
<-
|
||
]
|
||
|
||
>>.
|
||
>---.
|
||
+++++++..+++.
|
||
>>.
|
||
<-.
|
||
<.
|
||
+++.------.--------.
|
||
>>+.
|
||
>++.
|
||
`,
|
||
},
|
||
c: {
|
||
aliases: ["gcc", "clang", "h", "cc", "c99", "c11", "c18"],
|
||
name: "C",
|
||
monacoLang: "c",
|
||
main: "main.c",
|
||
compile: "clang -Wall -Wextra main.c -o main",
|
||
run: "./main",
|
||
lspSetup: `echo '-Wall -Wextra' | sed -E 's/\\s+/\\n/g' > compile_flags.txt`,
|
||
lsp: "clangd",
|
||
template: `#include <stdio.h>
|
||
|
||
int main() {
|
||
printf("Hello, world!\\n");
|
||
return 0;
|
||
}
|
||
`,
|
||
},
|
||
chef: {
|
||
name: "Chef",
|
||
main: "main.chef",
|
||
run: "chef main.chef",
|
||
template: `Hello World Cake with Chocolate Sauce.
|
||
|
||
Ingredients.
|
||
33 g chocolate chips
|
||
100 g butter
|
||
54 ml double cream
|
||
2 pinches baking powder
|
||
114 g sugar
|
||
111 ml beaten eggs
|
||
119 g flour
|
||
32 g cocoa powder
|
||
0 g cake mixture
|
||
|
||
Cooking time: 25 minutes.
|
||
|
||
Pre-heat oven to 180 degrees Celsius.
|
||
|
||
Method.
|
||
Put chocolate chips into the mixing bowl.
|
||
Put butter into the mixing bowl.
|
||
Put sugar into the mixing bowl.
|
||
Put beaten eggs into the mixing bowl.
|
||
Put flour into the mixing bowl.
|
||
Put baking powder into the mixing bowl.
|
||
Put cocoa powder into the mixing bowl.
|
||
Stir the mixing bowl for 1 minute.
|
||
Combine double cream into the mixing bowl.
|
||
Stir the mixing bowl for 4 minutes.
|
||
Liquefy the contents of the mixing bowl.
|
||
Pour contents of the mixing bowl into the baking dish.
|
||
bake the cake mixture.
|
||
Wait until baked.
|
||
Serve with chocolate sauce.
|
||
|
||
Chocolate Sauce.
|
||
|
||
Ingredients.
|
||
111 g sugar
|
||
108 ml hot water
|
||
108 ml heated double cream
|
||
101 g dark chocolate
|
||
72 g milk chocolate
|
||
|
||
Method.
|
||
Clean the mixing bowl.
|
||
Put sugar into the mixing bowl.
|
||
Put hot water into the mixing bowl.
|
||
Put heated double cream into the mixing bowl.
|
||
dissolve the sugar.
|
||
agitate the sugar until dissolved.
|
||
Liquefy the dark chocolate.
|
||
Put dark chocolate into the mixing bowl.
|
||
Liquefy the milk chocolate.
|
||
Put milk chocolate into the mixing bowl.
|
||
Liquefy contents of the mixing bowl.
|
||
Pour contents of the mixing bowl into the baking dish.
|
||
Refrigerate for 1 hour.
|
||
`,
|
||
},
|
||
cmd: {
|
||
aliases: ["bat", "batch", "wine"],
|
||
name: "Cmd",
|
||
monacoLang: "bat",
|
||
repl: "wine cmd",
|
||
main: "main.bat",
|
||
run: `wine cmd /k main.bat`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
commonlisp: {
|
||
aliases: ["lisp", "sbcl"],
|
||
name: "Common Lisp",
|
||
repl: "rlwrap sbcl",
|
||
main: "main.lisp",
|
||
run: "rlwrap sbcl --userinit main.lisp",
|
||
template: `(format t "Hello, world!")
|
||
`,
|
||
},
|
||
confluence: {
|
||
aliases: ["jira", "atlassian"],
|
||
name: "Confluence",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f jira -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
"c++": {
|
||
aliases: [
|
||
"cpp",
|
||
"g++",
|
||
"clang++",
|
||
"c++98",
|
||
"c++03",
|
||
"c++11",
|
||
"c++14",
|
||
"c++17",
|
||
"c++20",
|
||
"cpp98",
|
||
"cpp03",
|
||
"cpp11",
|
||
"cpp14",
|
||
"cpp17",
|
||
"cpp20",
|
||
"hpp",
|
||
"cxx",
|
||
"hxx",
|
||
],
|
||
name: "C++",
|
||
monacoLang: "cpp",
|
||
main: "main.cpp",
|
||
compile: "clang++ -Wall -Wextra main.cpp -o main",
|
||
run: "./main",
|
||
lspSetup: `echo '-Wall -Wextra' | sed -E 's/\\s+/\\n/g' > compile_flags.txt`,
|
||
lsp: "clangd",
|
||
template: `#include <iostream>
|
||
|
||
int main() {
|
||
std::cout << "Hello, world!" << std::endl;
|
||
return 0;
|
||
}
|
||
`,
|
||
},
|
||
crystal: {
|
||
aliases: ["cr"],
|
||
name: "Crystal",
|
||
main: "main.cr",
|
||
run: "crystal main.cr",
|
||
template: `puts "Hello, world!"
|
||
`,
|
||
},
|
||
csharp: {
|
||
aliases: ["cs", "mcs"],
|
||
name: "C#",
|
||
monacoLang: "csharp",
|
||
main: "main.cs",
|
||
compile: "mcs main.cs",
|
||
run: "mono main.exe",
|
||
template: `class main {
|
||
static void Main(string[] args) {
|
||
System.Console.WriteLine("Hello, world!");
|
||
}
|
||
}
|
||
`,
|
||
},
|
||
clojure: {
|
||
aliases: ["clj"],
|
||
name: "Clojure",
|
||
monacoLang: "clojure",
|
||
repl: "clojure",
|
||
main: "main.clj",
|
||
run: "clojure -i main.clj -r",
|
||
lsp: "clojure-lsp",
|
||
template: `(println "Hello, world!")
|
||
`,
|
||
},
|
||
clojurescript: {
|
||
aliases: ["cljs", "lumo"],
|
||
name: "ClojureScript",
|
||
monacoLang: "clojure",
|
||
repl: "lumo -r",
|
||
main: "main.cljs",
|
||
run: "lumo -i main.cljs -r",
|
||
template: `(println "Hello, world!")
|
||
`,
|
||
},
|
||
cobol: {
|
||
aliases: ["cbl", "cobc"],
|
||
name: "COBOL",
|
||
main: "main.cbl",
|
||
compile: "cobc -free -x main.cbl -o main",
|
||
run: "./main",
|
||
template: `IDENTIFICATION DIVISION.
|
||
PROGRAM-ID. MAIN.
|
||
PROCEDURE DIVISION.
|
||
DISPLAY "Hello, world!".
|
||
STOP RUN.
|
||
`,
|
||
},
|
||
coffeescript: {
|
||
aliases: ["coffee"],
|
||
name: "CoffeeScript",
|
||
monacoLang: "coffee",
|
||
repl: "coffee",
|
||
main: "main.coffee",
|
||
compile: "coffee -b -c main.coffee",
|
||
run: `node -e '
|
||
eval.apply(this, [require("fs").readFileSync("main.js", {encoding: "utf-8"})])
|
||
require("/usr/lib/node_modules/coffeescript/repl").start()
|
||
'`,
|
||
template: `console.log "Hello, world!"
|
||
`,
|
||
},
|
||
d: {
|
||
aliases: ["dmd"],
|
||
name: "D",
|
||
main: "main.d",
|
||
compile: "dmd main.d",
|
||
run: "./main",
|
||
template: `import std.stdio;
|
||
|
||
void main() {
|
||
writeln("Hello, world!");
|
||
}
|
||
`,
|
||
},
|
||
dart: {
|
||
name: "Dart",
|
||
monacoLang: "dart",
|
||
main: "main.dart",
|
||
run: "dart main.dart",
|
||
template: `void main() {
|
||
print('Hello, world!');
|
||
}
|
||
`,
|
||
},
|
||
dogescript: {
|
||
aliases: ["doge", "ds", "wow"],
|
||
name: "Dogescript",
|
||
repl: "dogescript",
|
||
main: "main.djs",
|
||
run: "dogescript main.djs | node; dogescript",
|
||
template: `plz console.loge with "Hello, world!"
|
||
`,
|
||
},
|
||
dhall: {
|
||
name: "Dhall",
|
||
main: "main.dhall",
|
||
compile: "cat main.dhall | dhall-to-json > main.json",
|
||
run: "cat main.json | jq .",
|
||
template: `{ output = "Hello, world!" }
|
||
`,
|
||
},
|
||
dokuwiki: {
|
||
aliases: ["doku"],
|
||
name: "DokuWiki",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f dokuwiki -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
elixir: {
|
||
aliases: ["iex", "exs"],
|
||
name: "Elixir",
|
||
repl: "iex",
|
||
main: "main.exs",
|
||
run: "iex main.exs",
|
||
lsp: "/opt/elixir-ls/language_server.sh",
|
||
template: `IO.puts("Hello, world!")
|
||
`,
|
||
},
|
||
elm: {
|
||
name: "Elm",
|
||
repl: "elm repl",
|
||
main: "Main.elm",
|
||
run: "cp /opt/elm/elm.json elm.json && run-elm Main.elm; elm repl",
|
||
lsp: "elm-language-server --stdio",
|
||
lspSetup: "cp /opt/elm/elm.json elm.json",
|
||
template: `module Main exposing (..)
|
||
|
||
output : String
|
||
output = "Hello, world!"
|
||
`,
|
||
},
|
||
elvish: {
|
||
aliases: ["elv"],
|
||
name: "Elvish",
|
||
repl: `SHELL=/usr/bin/elvish HOME="$PWD" elvish`,
|
||
main: ".elvish/rc.elv",
|
||
createEmpty: ``,
|
||
run: `SHELL=/usr/bin/elvish HOME="$PWD" elvish`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
emacs: {
|
||
aliases: ["emacslisp", "elisp", "gnuemacs", "xemacs", "ielm"],
|
||
name: "Emacs Lisp",
|
||
repl: `emacs --eval "(progn (require 'package) (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) (package-initialize) (ielm))"`,
|
||
main: "main.el",
|
||
run: `emacs --load main.el --eval "(progn (require 'package) (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) (package-initialize) (ielm))"`,
|
||
pkg: {
|
||
install: `emacs -Q --batch --eval "(progn (require 'package) (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) (package-initialize) (unless (ignore-errors (>= (length (directory-files \"~/.emacs.d/elpa/archives\")) 4)) (package-refresh-contents)) (package-install 'NAME))"`,
|
||
uninstall: `ls ~/.emacs.d/elpa | grep -- - | grep '^NAME-[0-9]' | while read pkg; do emacs -Q --batch --eval "(progn (require 'package) (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) (package-initialize) (unless (ignore-errors (>= (length (directory-files \"~/.emacs.d/elpa/archives\")) 4)) (package-refresh-contents)) (call-interactively 'package-delete))" <<< "$pkg"; done`,
|
||
all: `set -o pipefail; (curl -sS https://elpa.gnu.org/packages/ | grep '<td>' | grep -Eo '[^>]+</a>' | grep -Eo '^[^<]+' && curl -sS https://melpa.org/archive.json | jq -r 'keys | .[]') | sort | uniq`,
|
||
},
|
||
template: `(message "Hello, world!")
|
||
`,
|
||
},
|
||
entropy: {
|
||
aliases: ["ent", "entc", "vge"],
|
||
name: "Entropy",
|
||
main: "main.vge",
|
||
compile: `mono /opt/entropy/entc.exe main.vge | grep -Ev 'WARNING:|Using default' > main.cs && mcs -lib:/opt/entropy -r:Rottytooth.Esolang.Entropy main.cs`,
|
||
run: "MONO_PATH=/opt/entropy mono main.exe",
|
||
template: `Program MyNamespace MyProgram [
|
||
print "Hello, world!";
|
||
]
|
||
`,
|
||
},
|
||
erlang: {
|
||
aliases: ["erl"],
|
||
name: "Erlang",
|
||
repl: "erl",
|
||
main: "main.erl",
|
||
compile: "erl -compile main",
|
||
run: "erl -s main main",
|
||
lsp: "erlang_ls",
|
||
template: `-module(main).
|
||
-export([main/0]).
|
||
|
||
main() ->
|
||
io:fwrite("Hello, world!\\n").
|
||
`,
|
||
},
|
||
euphoria: {
|
||
aliases: ["ex", "exw", "exu", "euc", "eui", "eub"],
|
||
name: "Euphoria",
|
||
main: "main.exu",
|
||
run: "eui main.exu",
|
||
template: `puts(1, "Hello, world!\\n")
|
||
`,
|
||
},
|
||
factor: {
|
||
aliases: ["fact"],
|
||
name: "Factor",
|
||
repl: "factor-lang",
|
||
main: ".factor-rc",
|
||
createEmpty: ``,
|
||
run: "factor-lang",
|
||
template: `USE: io
|
||
|
||
"Hello, world!" print
|
||
`,
|
||
},
|
||
fish: {
|
||
name: "Fish",
|
||
repl: "SHELL=/usr/bin/fish fish",
|
||
main: "main.fish",
|
||
run: 'SHELL=/usr/bin/fish fish -C "$(< main.fish)"',
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
forth: {
|
||
aliases: ["fs", "gforth"],
|
||
name: "Forth",
|
||
repl: "gforth",
|
||
main: "main.fs",
|
||
run: "gforth main.fs",
|
||
template: `." Hello, world!" CR
|
||
`,
|
||
},
|
||
fortran: {
|
||
aliases: [
|
||
"f",
|
||
"flang",
|
||
"fortran77",
|
||
"fortran90",
|
||
"fortran95",
|
||
"fortran2003",
|
||
"fortran2008",
|
||
],
|
||
name: "FORTRAN",
|
||
main: "main.f",
|
||
compile: "flang main.f -o main",
|
||
run: "./main",
|
||
lsp: "fortls",
|
||
template: ` program hello
|
||
print *, "Hello, world!"
|
||
end program hello
|
||
`,
|
||
},
|
||
fsharp: {
|
||
aliases: ["fsharpi", "fsx", "fs"],
|
||
name: "F#",
|
||
monacoLang: "fsharp",
|
||
repl: "fsharpi",
|
||
main: "main.fsx",
|
||
run: "fsharpi --use:main.fsx",
|
||
template: `printfn "Hello, world!"
|
||
`,
|
||
},
|
||
go: {
|
||
aliases: ["golang"],
|
||
name: "Go",
|
||
monacoLang: "go",
|
||
main: "main.go",
|
||
compile: "go build main.go",
|
||
run: "./main",
|
||
lsp: "gopls",
|
||
template: `package main
|
||
|
||
import "fmt"
|
||
|
||
func main() {
|
||
fmt.Println("Hello, world!")
|
||
}
|
||
`,
|
||
},
|
||
golfscript: {
|
||
aliases: ["gs", "golf"],
|
||
name: "GolfScript",
|
||
main: "main.gs",
|
||
run: "golfscript main.gs",
|
||
template: `'Hello, world!'
|
||
`,
|
||
},
|
||
groovy: {
|
||
name: "Groovy",
|
||
repl: `JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh`,
|
||
main: "main.groovy",
|
||
run: `JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh main.groovy`,
|
||
template: `print "Hello, world!";
|
||
`,
|
||
},
|
||
hack: {
|
||
name: "Hack",
|
||
repl: "hhvm -a",
|
||
main: "main.hack",
|
||
run: "hhvm -a main.hack",
|
||
template: `<<__EntryPoint>>
|
||
function main(): void {
|
||
echo "Hello, world!\\n";
|
||
}
|
||
`,
|
||
},
|
||
haskell: {
|
||
aliases: ["ghc", "ghci", "hs"],
|
||
name: "Haskell",
|
||
repl: "ghci",
|
||
main: "Main.hs",
|
||
run: "ghci",
|
||
lspSetup: "cp /opt/haskell/hie.yaml hie.yaml",
|
||
lsp: "HIE_HOOGLE_DATABASE=/opt/haskell/hoogle.hoo hie --lsp",
|
||
lspInit: {
|
||
languageServerHaskell: {},
|
||
},
|
||
template: `module Main where
|
||
|
||
main :: IO ()
|
||
main = putStrLn "Hello, world!"
|
||
`,
|
||
hacks: ["ghci-config"],
|
||
},
|
||
hcl: {
|
||
aliases: ["tf", "terraform", "hashicorp", "hc"],
|
||
name: "HCL",
|
||
main: "main.hcl",
|
||
compile: "cat main.hcl | yj -cj > main.json",
|
||
run: "cat main.json | jq .",
|
||
template: `output = "Hello, world!"
|
||
`,
|
||
},
|
||
hexagony: {
|
||
aliases: ["hxg", "hex"],
|
||
name: "Hexagony",
|
||
main: "main.hxg",
|
||
run: "/opt/hexagony/interpreter.rb main.hxg",
|
||
template: ` H ; e ;
|
||
l ; d ; *
|
||
; r ; o ; w
|
||
l ; ; o ; * 4
|
||
3 3 ; @ . >
|
||
; 2 3 < \\
|
||
4 ; * /
|
||
`,
|
||
},
|
||
hy: {
|
||
name: "Hy",
|
||
repl: "hy",
|
||
main: "main.hy",
|
||
run: "hy -i main.hy",
|
||
template: `(print "Hello, world!")
|
||
`,
|
||
},
|
||
ink: {
|
||
name: "Ink",
|
||
repl: "ink",
|
||
main: "main.ink",
|
||
run: "ink main.ink; ink",
|
||
template: `std := load('../../../opt/ink/std')
|
||
str := load('../../../opt/ink/str')
|
||
|
||
log := std.log
|
||
|
||
log('Hello, world!')
|
||
`,
|
||
},
|
||
intercal: {
|
||
aliases: ["i", "ick"],
|
||
name: "INTERCAL",
|
||
main: "main.i",
|
||
compile: "ick main.i",
|
||
run: "./main",
|
||
template: `DO ,1 <- #14
|
||
PLEASE DO ,1 SUB #1 <- #238
|
||
DO ,1 SUB #2 <- #108
|
||
DO ,1 SUB #3 <- #112
|
||
DO ,1 SUB #4 <- #0
|
||
DO ,1 SUB #5 <- #64
|
||
DO ,1 SUB #6 <- #194
|
||
DO ,1 SUB #7 <- #48
|
||
PLEASE DO ,1 SUB #8 <- #22
|
||
DO ,1 SUB #9 <- #248
|
||
DO ,1 SUB #10 <- #168
|
||
DO ,1 SUB #11 <- #24
|
||
DO ,1 SUB #12 <- #16
|
||
PLEASE DO ,1 SUB #13 <- #162
|
||
DO ,1 SUB #14 <- #52
|
||
PLEASE READ OUT ,1
|
||
PLEASE GIVE UP
|
||
`,
|
||
},
|
||
java: {
|
||
aliases: ["javac"],
|
||
name: "Java",
|
||
monacoLang: "java",
|
||
main: "Main.java",
|
||
compile: "javac Main.java",
|
||
run: "java Main",
|
||
template: `public class Main {
|
||
public static void main(String[] args) {
|
||
System.out.println("Hello, world!");
|
||
}
|
||
}
|
||
`,
|
||
},
|
||
julia: {
|
||
aliases: ["jl"],
|
||
name: "Julia",
|
||
repl: "julia",
|
||
main: "main.jl",
|
||
run: "julia -L main.jl",
|
||
lsp: `JULIA_DEPOT_PATH=:/opt/julia julia -e 'using LanguageServer; run(LanguageServerInstance(stdin, stdout))'`,
|
||
lspConfig: null,
|
||
template: `println("Hello, world!")
|
||
`,
|
||
},
|
||
kalyn: {
|
||
name: "Kalyn",
|
||
main: "src-kalyn/Main.kalyn",
|
||
compile: "kalyn",
|
||
run: "out-kalyn/Main",
|
||
template: `(import "/opt/kalyn/Stdlib.kalyn")
|
||
|
||
(public def main (IO Empty)
|
||
(print "Hello, world!\\n"))
|
||
`,
|
||
},
|
||
kotlin: {
|
||
aliases: ["kts", "kotlinc"],
|
||
name: "Kotlin",
|
||
monacoLang: "kotlin",
|
||
repl: "kotlinc",
|
||
main: "main.kts",
|
||
run: "kotlinc -script main.kts; kotlinc",
|
||
template: `println("Hello, world!")
|
||
`,
|
||
},
|
||
ksh: {
|
||
aliases: ["kshell"],
|
||
name: "Ksh",
|
||
monacoLang: "shell",
|
||
repl: `SHELL=/usr/bin/ksh HOME="$PWD" ksh`,
|
||
main: ".kshrc",
|
||
createEmpty: ``,
|
||
run: `SHELL=/usr/bin/ksh HOME="$PWD" ksh`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
less: {
|
||
aliases: ["lessc"],
|
||
name: "Less",
|
||
monacoLang: "less",
|
||
main: "main.less",
|
||
run: "lessc main.less",
|
||
template: `body:before {
|
||
content: "Hello, world!";
|
||
}
|
||
`,
|
||
},
|
||
livescript: {
|
||
aliases: ["lsc", "ls"],
|
||
name: "LiveScript",
|
||
repl: "lsc",
|
||
main: "main.ls",
|
||
run: "lsc -r ./main.ls; lsc",
|
||
template: `console.log "Hello, world!"
|
||
`,
|
||
},
|
||
llvm: {
|
||
name: "LLVM",
|
||
monacoLang: "shell",
|
||
main: "main.ll",
|
||
compile: "clang -Wno-override-module main.ll -o main",
|
||
run: "./main",
|
||
template: `; Copied directly from the documentation
|
||
; Declare the string constant as a global constant.
|
||
@.str = private unnamed_addr constant [13 x i8] c"hello world\\0A\\00"
|
||
|
||
; External declaration of the puts function
|
||
declare i32 @puts(i8* nocapture) nounwind
|
||
|
||
; Definition of main function
|
||
define i32 @main() { ; i32()*
|
||
; Convert [13 x i8]* to i8 *...
|
||
%cast210 = getelementptr [13 x i8],[13 x i8]* @.str, i64 0, i64 0
|
||
|
||
; Call puts function to write out the string to stdout.
|
||
call i32 @puts(i8* %cast210)
|
||
ret i32 0
|
||
}
|
||
|
||
; Named metadata
|
||
!0 = !{i32 42, null, !"string"}
|
||
!foo = !{!0}
|
||
`,
|
||
},
|
||
lolcode: {
|
||
aliases: ["lol", "lci"],
|
||
name: "LOLCODE",
|
||
main: "main.lol",
|
||
run: "lci main.lol",
|
||
template: `HAI 1.2
|
||
VISIBLE "Hello, world!"
|
||
KTHXBYE
|
||
`,
|
||
},
|
||
lua: {
|
||
name: "Lua",
|
||
monacoLang: "lua",
|
||
repl: "lua",
|
||
main: "main.lua",
|
||
run: "lua -i main.lua",
|
||
lsp: "java -cp /usr/lib/EmmyLua-LS.jar com.tang.vscode.MainKt",
|
||
template: `print("Hello, world!")
|
||
`,
|
||
},
|
||
malbolge: {
|
||
aliases: ["mb"],
|
||
name: "Malbolge",
|
||
main: "main.mb",
|
||
run: "malbolge main.mb",
|
||
template:
|
||
" (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)\"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc\n",
|
||
},
|
||
mariadb: {
|
||
aliases: ["maria"],
|
||
name: "MariaDB",
|
||
repl: `rm -rf data && /opt/mariadb/scripts/mariadb-install-db --user="$(id -un)" && (/opt/mariadb/bin/mysqld --datadir="$PWD/data" --socket="$PWD/socket" --skip-networking &) && while [[ ! -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket"`,
|
||
main: "main.sql",
|
||
run: `rm -rf data && /opt/mariadb/scripts/mariadb-install-db --user="$(id -un)" && (/opt/mariadb/bin/mysqld --datadir="$PWD/data" --socket="$PWD/socket" --skip-networking &) && while [[ ! -e socket ]]; do sleep 0.01; done && (mysql --socket="$PWD/socket" < main.sql; mysql --socket="$PWD/socket")`,
|
||
template: `SELECT 'Hello, world!'
|
||
`,
|
||
},
|
||
markdown: {
|
||
aliases: [
|
||
"mdown",
|
||
"mkdn",
|
||
"md",
|
||
"mkd",
|
||
"mdwn",
|
||
"mdtxt",
|
||
"mdtext",
|
||
"text",
|
||
"rmd",
|
||
],
|
||
name: "Markdown",
|
||
monacoLang: "markdown",
|
||
main: "main.md",
|
||
compile: "pandoc main.md -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
mediawiki: {
|
||
aliases: ["media"],
|
||
name: "MediaWiki",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f mediawiki -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
mips: {
|
||
aliases: ["mips64"],
|
||
name: "MIPS",
|
||
monacoLang: "mips",
|
||
main: "main.S",
|
||
compile: "mips64-linux-gnuabi64-gcc main.S -o main -static",
|
||
run: "qemu-mips64-static main",
|
||
template: ` .text
|
||
.global main
|
||
main:
|
||
li $v0, 5001
|
||
li $a0, 1
|
||
dla $a1, message
|
||
li $a2, 14
|
||
syscall
|
||
li $v0, 5058
|
||
li $a0, 0
|
||
syscall
|
||
.data
|
||
message:
|
||
.string "Hello, world!\\n"
|
||
`,
|
||
},
|
||
mumps: {
|
||
aliases: ["mlang", "gtm", "fisgtm"],
|
||
name: "MUMPS",
|
||
main: "main.m",
|
||
run:
|
||
"gtm_dist=/usr/lib/x86_64-linux-gnu/fis-gtm/V6.3-007_x86_64 /usr/lib/x86_64-linux-gnu/fis-gtm/V6.3-007_x86_64/utf8/mumps -r main main.m",
|
||
template: `main()
|
||
write "Hello, world!",!
|
||
quit
|
||
`,
|
||
},
|
||
mysql: {
|
||
aliases: ["my"],
|
||
name: "MySQL",
|
||
repl: `rm -rf data && mysqld -h "$PWD/data" --initialize-insecure && (mysqld -h "$PWD/data" --socket="$PWD/socket" --pid-file="$PWD/pid-file" --mysqlx=OFF --skip-networking &) && while [[ ! -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" -u root`,
|
||
main: "main.sql",
|
||
run: `rm -rf data && mysqld -h "$PWD/data" --initialize-insecure && (mysqld -h "$PWD/data" --socket="$PWD/socket" --pid-file="$PWD/pid-file" --mysqlx=OFF --skip-networking &) && while [[ ! -e socket ]]; do sleep 0.01; done && (mysql --socket="$PWD/socket" -u root < main.sql; mysql --socket="$PWD/socket" -u root)`,
|
||
template: `SELECT 'Hello, world!'
|
||
`,
|
||
},
|
||
nim: {
|
||
name: "Nim",
|
||
main: "main.nim",
|
||
compile: "nim compile main.nim",
|
||
run: "./main",
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
nodejs: {
|
||
aliases: ["node", "js", "javascript", "web", "jsx", "v8", "closure"],
|
||
name: "Node.js",
|
||
monacoLang: "javascript",
|
||
repl: "node",
|
||
main: "main.js",
|
||
run: `node -e '
|
||
eval.apply(this, [require("fs").readFileSync("main.js", {encoding: "utf-8"})])
|
||
require("repl").start()
|
||
'`,
|
||
pkg: {
|
||
install: "yarn add NAME",
|
||
uninstall: "yarn remove NAME",
|
||
search:
|
||
"curl -sS 'https://registry.npmjs.org/-/v1/search?text=NAME' | jq -r '.objects | map(.package.name) | .[]'",
|
||
},
|
||
template: `console.log("Hello, world!")
|
||
`,
|
||
},
|
||
objectivec: {
|
||
aliases: ["objc", "gnustep"],
|
||
name: "Objective-C",
|
||
monacoLang: "objective-c",
|
||
main: "main.m",
|
||
compile:
|
||
"gcc $(gnustep-config --objc-flags) main.m $(gnustep-config --base-libs) -o main",
|
||
run: "./main",
|
||
lspSetup: `(gnustep-config --objc-flags && gnustep-config --base-libs) | sed -E 's/\\s+/\\n/g' > compile_flags.txt`,
|
||
lsp: "clangd",
|
||
template: `#import <Foundation/Foundation.h>
|
||
|
||
int main() {
|
||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||
NSLog(@"Hello, world!");
|
||
[pool drain];
|
||
return 0;
|
||
}
|
||
`,
|
||
},
|
||
ocaml: {
|
||
name: "OCaml",
|
||
main: "main.ml",
|
||
repl: "ocaml",
|
||
run: "ocaml -init main.ml",
|
||
template: `print_string "Hello, world!\\n";;
|
||
`,
|
||
},
|
||
octave: {
|
||
aliases: ["matlab", "m", "mathworks"],
|
||
name: "Octave",
|
||
repl: "octave",
|
||
main: "main.m",
|
||
run: "octave --persist main.m",
|
||
template: `disp("Hello, world!")
|
||
`,
|
||
},
|
||
omgrofl: {
|
||
aliases: ["omg", "rofl"],
|
||
name: "Omgrofl",
|
||
main: "main.omgrofl",
|
||
run: "java -jar /opt/omgrofl/Omgrofl.jar main.omgrofl",
|
||
template: `lol iz 72
|
||
rofl lol
|
||
lol iz 101
|
||
rofl lol
|
||
lol iz 108
|
||
rofl lol
|
||
rofl lol
|
||
lool iz 111
|
||
rofl lool
|
||
loool iz 44
|
||
rofl loool
|
||
loool iz 32
|
||
rofl loool
|
||
loool iz 119
|
||
rofl loool
|
||
rofl lool
|
||
lool iz 114
|
||
rofl lool
|
||
rofl lol
|
||
lol iz 100
|
||
rofl lol
|
||
lol iz 33
|
||
rofl lol
|
||
lol iz 10
|
||
rofl lol
|
||
`,
|
||
},
|
||
org: {
|
||
aliases: ["orgmode"],
|
||
name: "Org",
|
||
main: "main.org",
|
||
compile: "pandoc main.org -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
pascal: {
|
||
aliases: ["pas", "fpc"],
|
||
name: "Pascal",
|
||
monacoLang: "pascal",
|
||
main: "main.pas",
|
||
compile: "fpc main.pas",
|
||
run: "./main",
|
||
template: `program Main;
|
||
begin
|
||
writeln('Hello, world!');
|
||
end.
|
||
`,
|
||
},
|
||
perl: {
|
||
aliases: ["pl", "repl"],
|
||
name: "Perl",
|
||
monacoLang: "perl",
|
||
repl: "re.pl",
|
||
main: "main.pl",
|
||
run: "re.pl --rcfile ./main.pl",
|
||
template: `print("Hello, world!\\n")
|
||
`,
|
||
},
|
||
php: {
|
||
aliases: ["phpcli"],
|
||
name: "PHP",
|
||
monacoLang: "php",
|
||
repl: "php -a",
|
||
main: "main.php",
|
||
run: "php -d auto_prepend_file=main.php -a",
|
||
lsp: "intelephense --stdio",
|
||
template: `<?php
|
||
|
||
echo "Hello, world!\\n";
|
||
`,
|
||
},
|
||
pikachu: {
|
||
aliases: [
|
||
"pika",
|
||
"pi",
|
||
"ka",
|
||
"chu",
|
||
"pipi",
|
||
"pichu",
|
||
"pikapi",
|
||
"poke",
|
||
"pokemon",
|
||
"pokeball",
|
||
],
|
||
name: "Pikachu",
|
||
main: "main.pokeball",
|
||
run: "pikalang main.pokeball",
|
||
template: `pi pi pi pi pi pi pi pi pi pi pika pipi pi pi pi pi pi pi pi pipi pi pi
|
||
pi pi pi pi pi pi pi pi pipi pi pi pi pipi pi pichu pichu pichu pichu ka
|
||
chu pipi pi pi pikachu pipi pi pikachu pi pi pi pi pi pi pi pikachu
|
||
pikachu pi pi pi pikachu pipi pi pi pikachu pichu pichu pi pi pi pi pi
|
||
pi pi pi pi pi pi pi pi pi pi pikachu pipi pikachu pi pi pi pikachu ka
|
||
ka ka ka ka ka pikachu ka ka ka ka ka ka ka ka pikachu pipi pi pikachu
|
||
pipi pikachu
|
||
`,
|
||
},
|
||
postgresql: {
|
||
aliases: ["psql", "postgres", "pgsql", "postgre"],
|
||
name: "PostgreSQL",
|
||
monacoLang: "pgsql",
|
||
repl: `rm -rf data && /usr/lib/postgresql/*/bin/initdb -D data && (echo "listen_addresses = ''" && echo "unix_socket_directories = '.'") >> data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && psql -h "$PWD/data" postgres`,
|
||
main: "main.sql",
|
||
run: `rm -rf data && /usr/lib/postgresql/*/bin/initdb -D data && (echo "listen_addresses = ''" && echo "unix_socket_directories = '.'") >> data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && (psql -h "$PWD/data" postgres -f main.sql; psql -h "$PWD/data" postgres)`,
|
||
template: `SELECT 'Hello, world!';
|
||
`,
|
||
},
|
||
powershell: {
|
||
aliases: ["pwsh", "ps1"],
|
||
name: "PowerShell",
|
||
monacoLang: "powershell",
|
||
repl: "SHELL=/usr/bin/pwsh pwsh",
|
||
main: "main.ps1",
|
||
run: "SHELL=/usr/bin/pwsh pwsh -NoExit main.ps1",
|
||
lsp: `pwsh -NoLogo -NoProfile -Command "/opt/powershell-editor-services/PowerShellEditorServices/Start-EditorServices.ps1 -BundledModulesPath /opt/powershell-editor-services -LogPath '$PWD/.powershell-editor-services/lsp.log' -SessionDetailsPath '$PWD/.powershell-editor-services/session.json' -FeatureFlags @() -AdditionalModules @() -HostName Riju -HostProfileId 'riju' -HostVersion 0.0 -Stdio -LogLevel Normal"`,
|
||
template: `Write-Host "Hello, world!"
|
||
`,
|
||
},
|
||
prolog: {
|
||
name: "Prolog",
|
||
repl: "prolog",
|
||
main: "main.pl",
|
||
run: "prolog main.pl",
|
||
template: `:- initialization main.
|
||
|
||
main :-
|
||
write("Hello, world!"), nl.
|
||
`,
|
||
},
|
||
pug: {
|
||
name: "Pug",
|
||
monacoLang: "pug",
|
||
main: "main.pug",
|
||
compile: "pug main.pug",
|
||
run: "prettier --no-config main.html",
|
||
template: `html
|
||
body
|
||
p Hello, world!
|
||
`,
|
||
},
|
||
purescript: {
|
||
aliases: ["purs", "pure", "ps"],
|
||
name: "PureScript",
|
||
setup: `shopt -s dotglob; cp -R /opt/purescript/project-template/* "$PWD/"`,
|
||
repl: "spago repl",
|
||
main: "src/Main.purs",
|
||
run: `if spago build -n; then spago run -n; (echo 'import Prelude'; echo 'import Main') > .purs-repl; spago repl; else echo 'import Prelude' > .purs-repl; spago repl -d; fi`,
|
||
template: `module Main where
|
||
|
||
import Prelude
|
||
|
||
import Effect (Effect)
|
||
import Effect.Console (log)
|
||
|
||
main :: Effect Unit
|
||
main = do
|
||
log "Hello, world!"
|
||
`,
|
||
},
|
||
python: {
|
||
aliases: ["python3", "python2", "py"],
|
||
name: "Python",
|
||
monacoLang: "python",
|
||
repl: "python3 -u",
|
||
main: "main.py",
|
||
run: "python3 -u -i main.py",
|
||
pkg: {
|
||
install: "pip3 install --user NAME",
|
||
uninstall: "pip3 uninstall NAME",
|
||
search: `python3 -c 'import json; from xmlrpc import client; print(json.dumps(client.ServerProxy("https://pypi.org/pypi").search({"name": "NAME"})))' | jq -r 'map(.name) | .[]'`,
|
||
},
|
||
lsp: "Microsoft.Python.LanguageServer",
|
||
lspInit: {
|
||
interpreter: {
|
||
properties: {
|
||
InterpreterPath: "/usr/bin/python3",
|
||
},
|
||
},
|
||
},
|
||
template: `print("Hello, world!")
|
||
`,
|
||
},
|
||
قلب: {
|
||
aliases: ["qalb"],
|
||
name: "قلب",
|
||
repl: "node /opt/qalb/repl.js",
|
||
main: "main.qalb",
|
||
run: "node /opt/qalb/repl.js main.qalb",
|
||
template: `(قول "مرحبا يا عالم")
|
||
`,
|
||
},
|
||
r: {
|
||
aliases: ["rlang"],
|
||
name: "R",
|
||
monacoLang: "r",
|
||
repl: "R",
|
||
main: ".Rprofile",
|
||
run: "R --no-save",
|
||
template: `print("Hello, world!")
|
||
`,
|
||
},
|
||
racket: {
|
||
aliases: ["rkt"],
|
||
name: "Racket",
|
||
repl: "racket",
|
||
main: "main.rkt",
|
||
run: `racket -i -e '(enter! "main.rkt") (display "[ type (enter! \\"main.rkt\\") to access local variables ]\\n")'`,
|
||
template: `#lang racket/base
|
||
(display "Hello, world!\\n")
|
||
`,
|
||
},
|
||
рапира: {
|
||
aliases: ["rap", "rerap", "rerap2", "rapira"],
|
||
name: "Рапира",
|
||
main: "main.rap",
|
||
run: "rapira main.rap",
|
||
template: `вывод: "Hello, world!"
|
||
`,
|
||
},
|
||
reasonml: {
|
||
aliases: ["re", "reason", "bsc", "buckle", "bucklescript"],
|
||
name: "ReasonML",
|
||
main: "main.re",
|
||
compile: "bsc main.re > main.js",
|
||
run: "NODE_PATH=/usr/lib/node_modules node main.js",
|
||
template: `print_string("Hello, world!\\n")
|
||
`,
|
||
},
|
||
redis: {
|
||
name: "Redis",
|
||
monacoLang: "redis",
|
||
repl:
|
||
"rm -f socket; (redis-server --port 0 --unixsocket socket &); while [[ ! -e socket ]]; do sleep 0.01; done; redis-cli -s socket",
|
||
main: "main.redis",
|
||
run:
|
||
"rm -f socket; (redis-server --port 0 --unixsocket socket &); while [[ ! -e socket ]]; do sleep 0.01; done; redis-cli -s socket < main.redis; redis-cli -s socket",
|
||
template: `ECHO "Hello, world!"
|
||
`,
|
||
},
|
||
restructuredtext: {
|
||
aliases: ["rst"],
|
||
name: "reStructuredText",
|
||
monacoLang: "restructuredtext",
|
||
main: "main.rst",
|
||
compile: "pandoc main.rst -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
riscv: {
|
||
aliases: ["risc"],
|
||
name: "RISC-V",
|
||
main: "main.S",
|
||
compile: "riscv64-linux-gnu-gcc main.S -o main -static",
|
||
run: "qemu-riscv64-static main",
|
||
template: ` .text
|
||
.global main
|
||
main:
|
||
addi a7, x0, 64
|
||
addi a0, x0, 1
|
||
la a1, message
|
||
addi a2, x0, 14
|
||
ecall
|
||
addi a7, x0, 93
|
||
addi a0, x0, 0
|
||
ecall
|
||
.data
|
||
message:
|
||
.string "Hello, world!\\n"
|
||
`,
|
||
},
|
||
roff: {
|
||
aliases: [
|
||
"groff",
|
||
"nroff",
|
||
"troff",
|
||
"1",
|
||
"2",
|
||
"3",
|
||
"4",
|
||
"5",
|
||
"6",
|
||
"7",
|
||
"8",
|
||
"9",
|
||
"man",
|
||
"manual",
|
||
],
|
||
name: "roff",
|
||
main: "main.roff",
|
||
compile: "pandoc main.roff -f man -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `.PP
|
||
Hello, world!
|
||
`,
|
||
},
|
||
ruby: {
|
||
aliases: ["irb", "rb"],
|
||
name: "Ruby",
|
||
monacoLang: "ruby",
|
||
repl: "irb",
|
||
main: "main.rb",
|
||
suffix: `
|
||
require 'irb'
|
||
IRB.setup(ARGV[0], argv: [])
|
||
workspace = IRB::WorkSpace.new(binding)
|
||
binding_irb = IRB::Irb.new(workspace)
|
||
binding_irb.run(IRB.conf)
|
||
`,
|
||
run: "ruby main.rb",
|
||
pkg: {
|
||
install: "gem install --user-install NAME",
|
||
uninstall: "gem uninstall --user-install NAME",
|
||
search: `curl -sS 'https://rubygems.org/api/v1/search.json?query=NAME' | jq -r 'map(.name) | .[]'`,
|
||
},
|
||
lsp: "solargraph stdio",
|
||
template: `puts "Hello, world!"
|
||
`,
|
||
test: {
|
||
ensure: `ruby -e 'raise "version mismatch, expected #{RUBY_VERSION}" unless ENV["PATH"].include? ".gem/ruby/#{RUBY_VERSION}/bin"'`,
|
||
},
|
||
},
|
||
rust: {
|
||
aliases: ["rs", "rustc"],
|
||
name: "Rust",
|
||
monacoLang: "rust",
|
||
main: "main.rs",
|
||
compile: "rustc main.rs",
|
||
run: "./main",
|
||
lsp: "rls",
|
||
template: `fn main() {
|
||
println!("Hello, world!");
|
||
}
|
||
`,
|
||
},
|
||
sass: {
|
||
name: "Sass",
|
||
main: "main.sass",
|
||
run: "sass main.sass",
|
||
template: `body:before
|
||
content: "Hello, world!"
|
||
`,
|
||
},
|
||
scala: {
|
||
name: "Scala",
|
||
repl: "scala",
|
||
main: "main.scala",
|
||
run: "scala -i main.scala",
|
||
template: `println("Hello, world!")
|
||
`,
|
||
},
|
||
scheme: {
|
||
aliases: ["scm", "mitscheme"],
|
||
name: "Scheme",
|
||
monacoLang: "scheme",
|
||
repl: "mit-scheme",
|
||
main: "main.scm",
|
||
run: "mit-scheme --load main.scm",
|
||
template: `(begin
|
||
(display "Hello, world!")
|
||
(newline))
|
||
`,
|
||
},
|
||
scss: {
|
||
name: "SCSS",
|
||
monacoLang: "scss",
|
||
main: "main.scss",
|
||
run: "sass main.scss",
|
||
template: `body:before {
|
||
content: "Hello, world!";
|
||
}
|
||
`,
|
||
},
|
||
sh: {
|
||
aliases: ["shell", "posix", "posixsh", "ash", "dash", "posh"],
|
||
name: "Sh",
|
||
monacoLang: "shell",
|
||
repl: `SHELL=/usr/bin/sh HOME="$PWD" posh -l`,
|
||
main: ".profile",
|
||
createEmpty: ``,
|
||
run: `SHELL=/usr/bin/sh HOME="$PWD" posh -l`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
shakespeare: {
|
||
aliases: ["spl"],
|
||
name: "Shakespeare",
|
||
repl: "shakespeare console",
|
||
main: "main.spl",
|
||
suffix: "\n[A pause]",
|
||
run: "shakespeare debug main.spl",
|
||
template: `The Infamous Hello World Program.
|
||
|
||
Romeo, a young man with a remarkable patience.
|
||
Juliet, a likewise young woman of remarkable grace.
|
||
Ophelia, a remarkable woman much in dispute with Hamlet.
|
||
Hamlet, the flatterer of Andersen Insulting A/S.
|
||
|
||
|
||
Act I: Hamlet's insults and flattery.
|
||
|
||
Scene I: The insulting of Romeo.
|
||
|
||
[Enter Hamlet and Romeo]
|
||
|
||
Hamlet:
|
||
You lying stupid fatherless big smelly half-witted coward!
|
||
You are as stupid as the difference between a handsome rich brave
|
||
hero and thyself! Speak your mind!
|
||
|
||
You are as brave as the sum of your fat little stuffed misused dusty
|
||
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
|
||
day. You are as healthy as the difference between the sum of the
|
||
sweetest reddest rose and my father and yourself! Speak your mind!
|
||
|
||
You are as cowardly as the sum of yourself and the difference
|
||
between a big mighty proud kingdom and a horse. Speak your mind.
|
||
|
||
Speak your mind!
|
||
|
||
[Exit Romeo]
|
||
|
||
Scene II: The praising of Juliet.
|
||
|
||
[Enter Juliet]
|
||
|
||
Hamlet:
|
||
Thou art as sweet as the sum of the sum of Romeo and his horse and his
|
||
black cat! Speak thy mind!
|
||
|
||
[Exit Juliet]
|
||
|
||
Scene III: The praising of Ophelia.
|
||
|
||
[Enter Ophelia]
|
||
|
||
Hamlet:
|
||
Thou art as lovely as the product of a large rural town and my amazing
|
||
bottomless embroidered purse. Speak thy mind!
|
||
|
||
Thou art as loving as the product of the bluest clearest sweetest sky
|
||
and the sum of a squirrel and a white horse. Thou art as beautiful as
|
||
the difference between Juliet and thyself. Speak thy mind!
|
||
|
||
[Exeunt Ophelia and Hamlet]
|
||
|
||
|
||
Act II: Behind Hamlet's back.
|
||
|
||
Scene I: Romeo and Juliet's conversation.
|
||
|
||
[Enter Romeo and Juliet]
|
||
|
||
Romeo:
|
||
Speak your mind. You are as worried as the sum of yourself and the
|
||
difference between my small smooth hamster and my nose. Speak your
|
||
mind!
|
||
|
||
Juliet:
|
||
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
|
||
difference between the square of the difference between my little pony
|
||
and your big hairy hound and the cube of your sorry little
|
||
codpiece. Speak your mind!
|
||
|
||
[Exit Romeo]
|
||
|
||
Scene II: Juliet and Ophelia's conversation.
|
||
|
||
[Enter Ophelia]
|
||
|
||
Juliet:
|
||
Thou art as good as the quotient between Romeo and the sum of a small
|
||
furry animal and a leech. Speak your mind!
|
||
|
||
Ophelia:
|
||
Thou art as disgusting as the quotient between Romeo and twice the
|
||
difference between a mistletoe and an oozing infected blister! Speak
|
||
your mind!
|
||
|
||
[Exeunt]
|
||
`,
|
||
},
|
||
smalltalk: {
|
||
aliases: ["gst", "st"],
|
||
name: "Smalltalk",
|
||
repl: "gst",
|
||
main: "main.st",
|
||
run: "gst main.st; gst",
|
||
template: `'Hello, world!' displayNl !
|
||
`,
|
||
},
|
||
snobol: {
|
||
aliases: ["snobol4", "spitbol", "sno"],
|
||
name: "SNOBOL",
|
||
repl: "snobol4",
|
||
main: "main.sno",
|
||
run: "snobol4 main.sno; snobol4",
|
||
template: ` OUTPUT = "Hello, world!"
|
||
END
|
||
`,
|
||
},
|
||
sqlite: {
|
||
aliases: ["sql", "db", "sqlite3"],
|
||
name: "SQLite",
|
||
monacoLang: "sql",
|
||
repl: "sqlite3",
|
||
main: "main.sql",
|
||
run: `sqlite3 -cmd "$(< main.sql)"`,
|
||
template: `SELECT 'Hello, world!';
|
||
`,
|
||
},
|
||
standardml: {
|
||
aliases: ["sml", "ml"],
|
||
name: "Standard ML",
|
||
repl: "rlwrap sml",
|
||
main: "main.sml",
|
||
run: "rlwrap sml main.sml",
|
||
template: `print "Hello, world!\\n";
|
||
`,
|
||
},
|
||
swift: {
|
||
aliases: ["swiftc"],
|
||
name: "Swift",
|
||
monacoLang: "swift",
|
||
main: "main.swift",
|
||
compile: "swiftc main.swift",
|
||
run: "./main",
|
||
lsp: "sourcekit-lsp",
|
||
template: `print("Hello, world!")
|
||
`,
|
||
},
|
||
tcl: {
|
||
aliases: ["tclsh", "tclshrc"],
|
||
name: "Tcl",
|
||
monacoLang: "tcl",
|
||
repl: "tclsh",
|
||
main: ".tclshrc",
|
||
createEmpty: ``,
|
||
run: `HOME="$PWD" tclsh`,
|
||
template: `puts {Hello, world!}
|
||
`,
|
||
},
|
||
tcsh: {
|
||
aliases: ["tcshell", "tcshrc"],
|
||
name: "Tcsh",
|
||
monacoLang: "shell",
|
||
repl: `SHELL=/usr/bin/tcsh HOME="$PWD" tcsh`,
|
||
main: ".tcshrc",
|
||
createEmpty: ``,
|
||
run: `SHELL=/usr/bin/tcsh HOME="$PWD" tcsh`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
tex: {
|
||
aliases: ["latex", "xetex", "plaintex"],
|
||
name: "TeX",
|
||
repl: "tex",
|
||
main: "main.tex",
|
||
run: "tex main.tex",
|
||
lsp: "digestif",
|
||
lspLang: "tex",
|
||
template: `\\message{Hello, world!}
|
||
`,
|
||
},
|
||
textile: {
|
||
name: "Textile",
|
||
main: "main.textile",
|
||
compile: "pandoc main.textile -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
thue: {
|
||
name: "Thue",
|
||
main: "main.thue",
|
||
run: "thue main.thue",
|
||
template: `a::=~Hello, world!
|
||
::=
|
||
a
|
||
`,
|
||
},
|
||
tikiwiki: {
|
||
aliases: ["tiki"],
|
||
name: "Tiki Wiki",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f tikiwiki -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
toml: {
|
||
aliases: ["tom"],
|
||
name: "TOML",
|
||
main: "main.toml",
|
||
compile: "cat main.toml | yj -tj > main.json",
|
||
run: "cat main.json | jq .",
|
||
template: `output = "Hello, world!"
|
||
`,
|
||
},
|
||
twiki: {
|
||
name: "TWiki",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f twiki -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
typescript: {
|
||
aliases: ["ts", "tsnode", "tsc"],
|
||
name: "TypeScript",
|
||
monacoLang: "typescript",
|
||
repl: "ts-node",
|
||
main: "main.ts",
|
||
run: `ts-node -i -e "$(< main.ts)"`,
|
||
template: `console.log("Hello, world!");
|
||
`,
|
||
},
|
||
unlambda: {
|
||
aliases: ["unl"],
|
||
name: "Unlambda",
|
||
repl: "unlambda-repl",
|
||
main: "main.unl",
|
||
run: "unlambda-repl main.unl",
|
||
template: "`.\n`.!`.d`.l`.r`.o`.w`. `.,`.o`.l`.l`.e`.Hi\n",
|
||
},
|
||
vim: {
|
||
aliases: ["viml", "vimscript"],
|
||
name: "Vimscript",
|
||
repl: "vim",
|
||
main: "main.vim",
|
||
run: `vim -c "$(< main.vim)"`,
|
||
lsp: "vim-language-server --stdio",
|
||
template: `:echo "Hello, world!"
|
||
`,
|
||
},
|
||
vimwiki: {
|
||
name: "Vimwiki",
|
||
main: "main.txt",
|
||
compile: "pandoc main.txt -f vimwiki -o main.html",
|
||
run: "prettier --no-config main.html",
|
||
template: `Hello, world!
|
||
`,
|
||
},
|
||
visualbasic: {
|
||
aliases: ["vbasic", "vb", "vbnc"],
|
||
name: "Visual Basic",
|
||
monacoLang: "vb",
|
||
main: "main.vb",
|
||
compile: "vbnc main.vb",
|
||
run: "mono main.exe",
|
||
template: `Module Main
|
||
Sub Main(args As String())
|
||
Console.WriteLine("Hello, world!")
|
||
End Sub
|
||
End Module
|
||
`,
|
||
},
|
||
whitespace: {
|
||
aliases: ["ws"],
|
||
name: "Whitespace",
|
||
main: "main.ws",
|
||
run: "whitespace main.ws",
|
||
template: `Hello, world! \t \t \n\t\n \t\t \t \t\n\t\n \t\t \t\t \n\t\n \t\t \t\t \n\t\n \t\t \t\t\t\t\n\t\n \t \t\t \n\t\n \t \n\t\n \t\t\t \t\t\t\n\t\n \t\t \t\t\t\t\n\t\n \t\t\t \t \n\t\n \t\t \t\t \n\t\n \t\t \t \n\t\n \n\n\n`,
|
||
},
|
||
wolframlanguage: {
|
||
aliases: [
|
||
"wolfram",
|
||
"mathematica",
|
||
"mathics",
|
||
"wolframmathematica",
|
||
"wls",
|
||
"expreduce",
|
||
"symja",
|
||
],
|
||
name: "Wolfram Language",
|
||
repl: "mathics",
|
||
main: "main.wls",
|
||
run: "mathics --persist main.wls",
|
||
template: `Print["Hello, world!"]
|
||
`,
|
||
},
|
||
x86: {
|
||
aliases: ["s", "asm", "assembly", "x86-64"],
|
||
name: "x86",
|
||
main: "main.S",
|
||
compile: "clang main.S -o main",
|
||
run: "./main",
|
||
template: ` .text
|
||
.globl main
|
||
main:
|
||
movq $1, %rax
|
||
movq $1, %rdi
|
||
leaq message(%rip), %rsi
|
||
movq $14, %rdx
|
||
syscall
|
||
movq $60, %rax
|
||
movq $0, %rdi
|
||
syscall
|
||
.data
|
||
message:
|
||
.string "Hello, world!\\n"
|
||
`,
|
||
},
|
||
yaml: {
|
||
aliases: ["yml"],
|
||
name: "YAML",
|
||
monacoLang: "yaml",
|
||
main: "main.yaml",
|
||
compile: "cat main.yaml | yj -yj > main.json",
|
||
run: "cat main.json | jq .",
|
||
template: `output: "Hello, world!"
|
||
`,
|
||
},
|
||
zot: {
|
||
name: "Zot",
|
||
main: "main.zot",
|
||
run: "zot --file main.zot",
|
||
template: `111101010100111010101001001101010010010011101010100111010101
|
||
001101010010101010011101010100110101001101010100110101001010
|
||
101001110101010011101010100110101001010101001110101010011010
|
||
100110101010011010100101010100111010101001101010011010101001
|
||
101010011010101001110101010011101010100111010101001110101010
|
||
010011010100100110101001001101010010011010100101010011101010
|
||
100110101001101010100110101001101010100110101001010100111010
|
||
101001110101010011010100101010100111010101001101010011010101
|
||
001101010010101010011101010100110101001101010100111010101001
|
||
101010010101010010101001110101010011010100101010011101010100
|
||
111010101001101010010101010011101010100110101001010100111010
|
||
101001101010010101010010101001101010011101010100110101001101
|
||
010100100101010011010100101010011101010100110101001101010100
|
||
110101001101010100110101001010100111010101001110101010011010
|
||
100101010100111010101001101010011010101001101010010101010011
|
||
101010100110101001101010100111010101001101010010101010010101
|
||
001110101010011010100101010011101010100111010101001101010010
|
||
101010011101010100110101001010100111010101001101010010101010
|
||
010101001101010011101010100110101001101010100100101010011010
|
||
100101010011101010100110101001010100101010001010000100001000
|
||
010011000110110010011101111011011101110000001000011010011110
|
||
11000110110001101101010011000010010
|
||
`,
|
||
},
|
||
zsh: {
|
||
aliases: ["zshell", "zshrc"],
|
||
name: "Zsh",
|
||
monacoLang: "shell",
|
||
repl: "SHELL=/usr/bin/zsh zsh",
|
||
main: ".zshrc",
|
||
createEmpty: ``,
|
||
run: `SHELL=/usr/bin/zsh ZDOTDIR="$PWD" zsh`,
|
||
template: `echo "Hello, world!"
|
||
`,
|
||
},
|
||
};
|