From 2daa11c7aae932d0e95530abb477058fa721b41b Mon Sep 17 00:00:00 2001 From: Radon Rosborough Date: Sat, 2 Jan 2021 09:59:29 -0800 Subject: [PATCH] Import all language configs into YAML This was an absolutely disgusting operation. Here's the commands I used to do it (see for the tool): $ node > require('fs').writeFile('langs.json', JSON.stringify(require('./langs').langs), console.log) $ ./gomplate -c .=langs.json -f template.yaml > langs.yaml $ cat langs.json | jq 'keys[]' -r L | while read lang; do cat langs.yaml | sed -n "/^ #START $lang\$/,/^ #END $lang\$/p" | tail -n+2 | head -n-1 | sed 's/^ //' > langs/$lang.yaml; done I had some difficulty getting valid YAML to be generated, so I found the tool at to be helpful in identifying errors. For validation that nothing important had changed in the transformation, I used to compare langs.json against the output of this command: $ ./gomplate -c .=langs.json -f template.yaml | node yaml2json.js | jq '(.. | select(type == "string")) |= sub("\n+$";"") | (.. | select(.template?) | .template?) |= (.+"\n") | (.. | select(.format?.input?) | .format?.input?) |= (.+"\n")' Here's yaml2json.js: import fs from "fs"; import YAML from "yaml"; console.log(JSON.stringify(YAML.parse(fs.readFileSync(0, "utf-8")), null, 2)); And here's the template.yaml, which is approximately the worst thing ever: {{ range . }} "{{ .id }}": #START {{ .id }} id: "{{ .id }}" {{ if has . "aliases" }} aliases: {{ range .aliases }} - "{{ . }}" {{ end }}{{ end }} name: "{{ .name }}" {{ if has . "monacoLang" }} monacoLang: {{ .monacoLang }} {{ end }}{{ if has . "info" }} info: {{ if has .info "impl" }} impl: "{{ .info.impl }}" {{ end }}{{ if has .info "version" }} version: "{{ .info.version }}" {{ end }} year: {{ .info.year }} desc: "{{ .info.desc }}" {{ if eq "string" (printf "%T" .info.ext) }} ext: {{ .info.ext }} {{ else if eq 0 (len .info.ext) }} ext: [] {{ else }} ext: {{ range .info.ext }} - {{ . }} {{ end }}{{ end }} web: {{ if has .info.web "wiki" }} wiki: "{{ .info.web.wiki }}" {{ end }}{{ if has .info.web "esolang" }} esolang: "{{ .info.web.esolang }}" {{ end }}{{ if has .info.web "home" }} home: "{{ .info.web.home }}" {{ end }}{{ if has .info.web "impl" }} impl: "{{ .info.web.impl }}" {{ end }} source: {{ if eq "string" (printf "%T" .info.web.source) }}"{{ .info.web.source }}" {{ else }}null {{ end }}{{ if eq "string" (printf "%T" .info.category) }} category: {{ .info.category }} {{ else if eq 0 (len .info.category) }} category: [] {{ else }} category: {{ range .info.category }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.mode) }} mode: {{ .info.mode }} {{ else if eq 0 (len .info.mode) }} mode: [] {{ else }} mode: {{ range .info.mode }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.platform) }} platform: {{ .info.platform }} {{ else if eq 0 (len .info.platform) }} platform: [] {{ else }} platform: {{ range .info.platform }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.syntax) }} syntax: {{ .info.syntax }} {{ else if eq 0 (len .info.syntax) }} syntax: [] {{ else }} syntax: {{ range .info.syntax }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.typing) }} typing: {{ .info.typing }} {{ else if eq 0 (len .info.typing) }} typing: [] {{ else }} typing: {{ range .info.typing }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.paradigm) }} paradigm: {{ .info.paradigm }} {{ else if eq 0 (len .info.paradigm) }} paradigm: [] {{ else }} paradigm: {{ range .info.paradigm }} - {{ . }} {{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.usage) }} usage: {{ .info.usage }} {{ else if eq 0 (len .info.usage) }} usage: [] {{ else }} usage: {{ range .info.usage }} - {{ . }} {{ end }}{{ end }}{{ end }}{{ if or (has . "daemon") (has . "setup") }} {{ end }}{{ if has . "daemon" }} daemon: | {{ .daemon | indent 4 }} {{ end }}{{ if has . "setup" }} setup: | {{ .setup | indent 4 }} {{ end }}{{ if has . "repl" }} repl: | {{ .repl | indent 4 }} {{ end }}{{ if has . "input" }}{{ if .input | strings.Contains "\x1b" }} input: "{{ .input | strings.ReplaceAll "\x1b" "\\x1b" }}" {{ else }} input: |{{ if .input | regexp.Match "^\\s" }}2{{ end }} {{ .input | indent 4 }} {{ end }}{{ end }}{{ if has . "output" }} output: | {{ .output | indent 4 }} {{ end }} main: "{{ .main }}" template: {{ if eq .id "whitespace" }}{{ .template | strings.Quote }} {{ else }}|{{ if .template | regexp.Match "^\\s" }}2{{ end }} {{ .template | indent 4 }}{{ end }}{{ if has . "prefix" }} prefix: | {{ .prefix | indent 4 }} {{ end }}{{ if has . "suffix" }} suffix: | {{ .suffix | indent 4 }} {{ end }}{{ if has . "createEmpty" }} createEmpty: "{{ .createEmpty }}" {{ end }} {{ if has . "compile" }} compile: | {{ .compile | indent 4 }} {{ end }} run: | {{ .run | indent 4 }} {{ if has . "helloInput" }} helloInput: | {{ .helloInput | indent 4 }} {{ end }}{{ if has . "hello" }} hello: | {{ .hello | indent 4 }} {{ end }}{{ if has . "helloMaxLength" }} helloMaxLength: {{ .helloMaxLength }} {{ end }}{{ if has . "runReplInput" }} runReplInput: | {{ .runReplInput | indent 4 }} {{ end }}{{ if has . "runReplOutput" }} runReplOutput: | {{ .runReplOutput | indent 4 }} {{ end }}{{ if has . "scope" }} scope: code: | {{ .scope.code | indent 6 }} {{ if has .scope "after" }} after: "{{ .scope.after }}" {{ end }}{{ if has .scope "input" }}{{ if .scope.input | strings.Contains "\x1b" }} input: "{{ .scope.input | strings.ReplaceAll "\x1b" "\\x1b" }}" {{ else }} input: | {{ .scope.input | indent 6 }} {{ end }}{{ end }}{{ if has .scope "output" }} output: | {{ .scope.output | indent 6 }} {{ end }}{{ end }}{{ if has . "format" }} format: run: | {{ .format.run | indent 6 }} {{ if has .format "input" }} input: | {{ .format.input | indent 6 }}{{ end }}{{ if has .format "output" }} output: | {{ .format.output | indent 6 }}{{ end }}{{ end }}{{ if has . "pkg" }} pkg: install: | {{ .pkg.install | indent 6 }} {{ if has .pkg "uninstall" }} uninstall: | {{ .pkg.uninstall | indent 6 }} {{ end }}{{ if has .pkg "all" }} all: | {{ .pkg.all | indent 6 }} {{ end }}{{ if has .pkg "search" }} search: | {{ .pkg.search | indent 6 }} {{ end }}{{ end }}{{ if has . "lsp" }} lsp: {{ if has .lsp "setup" }} setup: | {{ .lsp.setup | indent 6 }} {{ end }} start: | {{ .lsp.start | indent 6 }} {{ if has .lsp "disableDynamicRegistration" }} disableDynamicRegistration: {{ .lsp.disableDynamicRegistration }} {{ end }}{{ if has .lsp "init" }} init: {{ .lsp.init | data.ToYAML | indent 6 }}{{ end }}{{ if has .lsp "config" }} config: {{ .lsp.config | data.ToYAML }}{{ end }}{{ if has .lsp "lang" }} lang: "{{ .lsp.lang }}" {{ end }}{{ if has .lsp "code" }} code: {{ .lsp.code | strings.Quote }} {{ end }}{{ if has .lsp "after" }} after: {{ .lsp.after | strings.Quote }} {{ end }}{{ if has .lsp "item" }} item: {{ .lsp.item | strings.Quote }} {{ end }}{{ end }}{{ if has . "skip" }} skip: {{ range .skip }} - {{ . }} {{ end }}{{ end }} #END {{ .id }} {{ end }} --- backend/api.js | 2 +- backend/langs.js | 3 + backend/test-runner.js | 2 +- langs/><>.yaml | 29 +++++ langs/a+.yaml | 21 ++++ langs/abc.yaml | 20 ++++ langs/ada.yaml | 48 ++++++++ langs/afnix.yaml | 19 +++ langs/algol.yaml | 34 ++++++ langs/ante.yaml | 18 +++ langs/antecards.yaml | 9 ++ langs/apl.yaml | 41 +++++++ langs/arm.yaml | 42 +++++++ langs/asciidoc.yaml | 30 +++++ langs/aspectc++.yaml | 18 +++ langs/aspectj.yaml | 17 +++ langs/asymptote.yaml | 14 +++ langs/ats.yaml | 45 +++++++ langs/awk.yaml | 30 +++++ langs/bash.yaml | 49 ++++++++ langs/basic.yaml | 43 +++++++ langs/battlestar.yaml | 31 +++++ langs/bc.yaml | 13 ++ langs/beanshell.yaml | 23 ++++ langs/beatnik.yaml | 115 ++++++++++++++++++ langs/befunge.yaml | 37 ++++++ langs/blc.yaml | 34 ++++++ langs/boo.yaml | 42 +++++++ langs/brainf.yaml | 68 +++++++++++ langs/bython.yaml | 11 ++ langs/c++.yaml | 88 ++++++++++++++ langs/c.yaml | 66 +++++++++++ langs/cat.yaml | 32 +++++ langs/ceylon.yaml | 29 +++++ langs/chef.yaml | 86 ++++++++++++++ langs/cil.yaml | 25 ++++ langs/clean.yaml | 44 +++++++ langs/clojure.yaml | 54 +++++++++ langs/clojurescript.yaml | 48 ++++++++ langs/cmake.yaml | 11 ++ langs/cmd.yaml | 44 +++++++ langs/cobol.yaml | 43 +++++++ langs/coffeescript.yaml | 50 ++++++++ langs/commonlisp.yaml | 54 +++++++++ langs/confluence.yaml | 32 +++++ langs/crystal.yaml | 27 +++++ langs/csharp.yaml | 31 +++++ langs/curry.yaml | 20 ++++ langs/d.yaml | 28 +++++ langs/dafny.yaml | 15 +++ langs/dart.yaml | 21 ++++ langs/dc.yaml | 20 ++++ langs/dhall.yaml | 11 ++ langs/dogescript.yaml | 16 +++ langs/dokuwiki.yaml | 13 ++ langs/dylan.yaml | 24 ++++ langs/ec.yaml | 22 ++++ langs/elixir.yaml | 36 ++++++ langs/elm.yaml | 31 +++++ langs/elvish.yaml | 23 ++++ langs/emacs.yaml | 34 ++++++ langs/emojicode.yaml | 17 +++ langs/entropy.yaml | 20 ++++ langs/erlang.yaml | 38 ++++++ langs/euphoria.yaml | 16 +++ langs/factor.yaml | 28 +++++ langs/false.yaml | 11 ++ langs/fish.yaml | 20 ++++ langs/flex.yaml | 30 +++++ langs/forth.yaml | 23 ++++ langs/fortran.yaml | 28 +++++ langs/fsharp.yaml | 25 ++++ langs/gambas.yaml | 12 ++ langs/gap.yaml | 20 ++++ langs/gdb.yaml | 20 ++++ langs/gel.yaml | 19 +++ langs/gnuplot.yaml | 20 ++++ langs/go.yaml | 39 ++++++ langs/golfscript.yaml | 11 ++ langs/grass.yaml | 11 ++ langs/groovy.yaml | 16 +++ langs/hack.yaml | 30 +++++ langs/haskell.yaml | 44 +++++++ langs/haxe.yaml | 17 +++ langs/hcl.yaml | 16 +++ langs/hexagony.yaml | 18 +++ langs/hmmm.yaml | 53 +++++++++ langs/hy.yaml | 18 +++ langs/icon.yaml | 17 +++ langs/idris.yaml | 23 ++++ langs/ink.yaml | 17 +++ langs/intercal.yaml | 30 +++++ langs/ioke.yaml | 14 +++ langs/j.yaml | 15 +++ langs/jasmin.yaml | 26 ++++ langs/java.yaml | 146 +++++++++++++++++++++++ langs/javascript.yaml | 41 +++++++ langs/jq.yaml | 20 ++++ langs/jsf.yaml | 141 ++++++++++++++++++++++ langs/julia.yaml | 26 ++++ langs/kalyn.yaml | 14 +++ langs/kitten.yaml | 16 +++ langs/kotlin.yaml | 16 +++ langs/ksh.yaml | 24 ++++ langs/lazyk.yaml | 15 +++ langs/less.yaml | 22 ++++ langs/limbo.yaml | 30 +++++ langs/lisaac.yaml | 18 +++ langs/livescript.yaml | 18 +++ langs/llvm.yaml | 20 ++++ langs/lolcode.yaml | 14 +++ langs/lua.yaml | 24 ++++ langs/m4.yaml | 18 +++ langs/make.yaml | 18 +++ langs/malbolge.yaml | 13 ++ langs/mariadb.yaml | 23 ++++ langs/markdown.yaml | 29 +++++ langs/mediawiki.yaml | 13 ++ langs/minizinc.yaml | 13 ++ langs/mips.yaml | 27 +++++ langs/mongodb.yaml | 15 +++ langs/mumps.yaml | 15 +++ langs/mysql.yaml | 23 ++++ langs/neko.yaml | 13 ++ langs/nickle.yaml | 19 +++ langs/nim.yaml | 11 ++ langs/oberon.yaml | 20 ++++ langs/objectivec++.yaml | 44 +++++++ langs/objectivec.yaml | 44 +++++++ langs/ocaml.yaml | 36 ++++++ langs/octave.yaml | 20 ++++ langs/omgrofl.yaml | 36 ++++++ langs/ook.yaml | 28 +++++ langs/openscad.yaml | 11 ++ langs/org.yaml | 13 ++ langs/oz.yaml | 21 ++++ langs/parigp.yaml | 18 +++ langs/parser3.yaml | 12 ++ langs/pascal.yaml | 18 +++ langs/pawn.yaml | 18 +++ langs/perl.yaml | 28 +++++ langs/php.yaml | 32 +++++ langs/pikachu.yaml | 28 +++++ langs/pike.yaml | 18 +++ langs/postgresql.yaml | 27 +++++ langs/postscript.yaml | 24 ++++ langs/powershell.yaml | 34 ++++++ langs/prolog.yaml | 23 ++++ langs/promela.yaml | 14 +++ langs/pseint.yaml | 15 +++ langs/pug.yaml | 14 +++ langs/purescript.yaml | 27 +++++ langs/python.yaml | 74 ++++++++---- langs/qsharp.yaml | 24 ++++ langs/r.yaml | 19 +++ langs/racket.yaml | 24 ++++ langs/ratfor.yaml | 14 +++ langs/rc.yaml | 16 +++ langs/reasonml.yaml | 32 +++++ langs/rebol.yaml | 16 +++ langs/red.yaml | 20 ++++ langs/redis.yaml | 16 +++ langs/restructuredtext.yaml | 14 +++ langs/rexx.yaml | 12 ++ langs/riscv.yaml | 26 ++++ langs/roff.yaml | 27 +++++ langs/ruby.yaml | 54 +++++++++ langs/rust.yaml | 24 ++++ langs/sagemath.yaml | 19 +++ langs/sass.yaml | 10 ++ langs/scala.yaml | 16 +++ langs/scheme.yaml | 23 ++++ langs/scilab.yaml | 24 ++++ langs/scss.yaml | 20 ++++ langs/sed.yaml | 13 ++ langs/setl.yaml | 9 ++ langs/sh.yaml | 29 +++++ langs/shakespeare.yaml | 115 ++++++++++++++++++ langs/slang.yaml | 21 ++++ langs/slick.yaml | 16 +++ langs/smalltalk.yaml | 15 +++ langs/snobol.yaml | 20 ++++ langs/sqlite.yaml | 26 ++++ langs/squirrel.yaml | 17 +++ langs/standardml.yaml | 23 ++++ langs/subleq.yaml | 29 +++++ langs/swift.yaml | 21 ++++ langs/tabloid.yaml | 12 ++ langs/tcl.yaml | 25 ++++ langs/tcsh.yaml | 26 ++++ langs/teco.yaml | 23 ++++ langs/tex.yaml | 37 ++++++ langs/textile.yaml | 11 ++ langs/thue.yaml | 11 ++ langs/tikiwiki.yaml | 13 ++ langs/toml.yaml | 13 ++ langs/twiki.yaml | 11 ++ langs/typescript.yaml | 27 +++++ langs/unison.yaml | 38 ++++++ langs/unlambda.yaml | 17 +++ langs/vala.yaml | 15 +++ langs/velato.yaml | 230 ++++++++++++++++++++++++++++++++++++ langs/verilog.yaml | 21 ++++ langs/vim.yaml | 30 +++++ langs/vimwiki.yaml | 11 ++ langs/visualbasic.yaml | 21 ++++ langs/whitespace.yaml | 12 ++ langs/wolframlanguage.yaml | 24 ++++ langs/x86.yaml | 29 +++++ langs/xslt.yaml | 24 ++++ langs/yaml.yaml | 20 ++++ langs/yorick.yaml | 21 ++++ langs/zoem.yaml | 17 +++ langs/zot.yaml | 32 +++++ langs/zsh.yaml | 25 ++++ langs/рапира.yaml | 14 +++ langs/قلب.yaml | 24 ++++ langs/எழில்.yaml | 19 +++ langs/아희.yaml | 28 +++++ 219 files changed, 5958 insertions(+), 27 deletions(-) create mode 100644 langs/><>.yaml create mode 100644 langs/a+.yaml create mode 100644 langs/abc.yaml create mode 100644 langs/ada.yaml create mode 100644 langs/afnix.yaml create mode 100644 langs/algol.yaml create mode 100644 langs/ante.yaml create mode 100644 langs/antecards.yaml create mode 100644 langs/apl.yaml create mode 100644 langs/arm.yaml create mode 100644 langs/asciidoc.yaml create mode 100644 langs/aspectc++.yaml create mode 100644 langs/aspectj.yaml create mode 100644 langs/asymptote.yaml create mode 100644 langs/ats.yaml create mode 100644 langs/awk.yaml create mode 100644 langs/bash.yaml create mode 100644 langs/basic.yaml create mode 100644 langs/battlestar.yaml create mode 100644 langs/bc.yaml create mode 100644 langs/beanshell.yaml create mode 100644 langs/beatnik.yaml create mode 100644 langs/befunge.yaml create mode 100644 langs/blc.yaml create mode 100644 langs/boo.yaml create mode 100644 langs/brainf.yaml create mode 100644 langs/bython.yaml create mode 100644 langs/c++.yaml create mode 100644 langs/c.yaml create mode 100644 langs/cat.yaml create mode 100644 langs/ceylon.yaml create mode 100644 langs/chef.yaml create mode 100644 langs/cil.yaml create mode 100644 langs/clean.yaml create mode 100644 langs/clojure.yaml create mode 100644 langs/clojurescript.yaml create mode 100644 langs/cmake.yaml create mode 100644 langs/cmd.yaml create mode 100644 langs/cobol.yaml create mode 100644 langs/coffeescript.yaml create mode 100644 langs/commonlisp.yaml create mode 100644 langs/confluence.yaml create mode 100644 langs/crystal.yaml create mode 100644 langs/csharp.yaml create mode 100644 langs/curry.yaml create mode 100644 langs/d.yaml create mode 100644 langs/dafny.yaml create mode 100644 langs/dart.yaml create mode 100644 langs/dc.yaml create mode 100644 langs/dhall.yaml create mode 100644 langs/dogescript.yaml create mode 100644 langs/dokuwiki.yaml create mode 100644 langs/dylan.yaml create mode 100644 langs/ec.yaml create mode 100644 langs/elixir.yaml create mode 100644 langs/elm.yaml create mode 100644 langs/elvish.yaml create mode 100644 langs/emacs.yaml create mode 100644 langs/emojicode.yaml create mode 100644 langs/entropy.yaml create mode 100644 langs/erlang.yaml create mode 100644 langs/euphoria.yaml create mode 100644 langs/factor.yaml create mode 100644 langs/false.yaml create mode 100644 langs/fish.yaml create mode 100644 langs/flex.yaml create mode 100644 langs/forth.yaml create mode 100644 langs/fortran.yaml create mode 100644 langs/fsharp.yaml create mode 100644 langs/gambas.yaml create mode 100644 langs/gap.yaml create mode 100644 langs/gdb.yaml create mode 100644 langs/gel.yaml create mode 100644 langs/gnuplot.yaml create mode 100644 langs/go.yaml create mode 100644 langs/golfscript.yaml create mode 100644 langs/grass.yaml create mode 100644 langs/groovy.yaml create mode 100644 langs/hack.yaml create mode 100644 langs/haskell.yaml create mode 100644 langs/haxe.yaml create mode 100644 langs/hcl.yaml create mode 100644 langs/hexagony.yaml create mode 100644 langs/hmmm.yaml create mode 100644 langs/hy.yaml create mode 100644 langs/icon.yaml create mode 100644 langs/idris.yaml create mode 100644 langs/ink.yaml create mode 100644 langs/intercal.yaml create mode 100644 langs/ioke.yaml create mode 100644 langs/j.yaml create mode 100644 langs/jasmin.yaml create mode 100644 langs/java.yaml create mode 100644 langs/javascript.yaml create mode 100644 langs/jq.yaml create mode 100644 langs/jsf.yaml create mode 100644 langs/julia.yaml create mode 100644 langs/kalyn.yaml create mode 100644 langs/kitten.yaml create mode 100644 langs/kotlin.yaml create mode 100644 langs/ksh.yaml create mode 100644 langs/lazyk.yaml create mode 100644 langs/less.yaml create mode 100644 langs/limbo.yaml create mode 100644 langs/lisaac.yaml create mode 100644 langs/livescript.yaml create mode 100644 langs/llvm.yaml create mode 100644 langs/lolcode.yaml create mode 100644 langs/lua.yaml create mode 100644 langs/m4.yaml create mode 100644 langs/make.yaml create mode 100644 langs/malbolge.yaml create mode 100644 langs/mariadb.yaml create mode 100644 langs/markdown.yaml create mode 100644 langs/mediawiki.yaml create mode 100644 langs/minizinc.yaml create mode 100644 langs/mips.yaml create mode 100644 langs/mongodb.yaml create mode 100644 langs/mumps.yaml create mode 100644 langs/mysql.yaml create mode 100644 langs/neko.yaml create mode 100644 langs/nickle.yaml create mode 100644 langs/nim.yaml create mode 100644 langs/oberon.yaml create mode 100644 langs/objectivec++.yaml create mode 100644 langs/objectivec.yaml create mode 100644 langs/ocaml.yaml create mode 100644 langs/octave.yaml create mode 100644 langs/omgrofl.yaml create mode 100644 langs/ook.yaml create mode 100644 langs/openscad.yaml create mode 100644 langs/org.yaml create mode 100644 langs/oz.yaml create mode 100644 langs/parigp.yaml create mode 100644 langs/parser3.yaml create mode 100644 langs/pascal.yaml create mode 100644 langs/pawn.yaml create mode 100644 langs/perl.yaml create mode 100644 langs/php.yaml create mode 100644 langs/pikachu.yaml create mode 100644 langs/pike.yaml create mode 100644 langs/postgresql.yaml create mode 100644 langs/postscript.yaml create mode 100644 langs/powershell.yaml create mode 100644 langs/prolog.yaml create mode 100644 langs/promela.yaml create mode 100644 langs/pseint.yaml create mode 100644 langs/pug.yaml create mode 100644 langs/purescript.yaml create mode 100644 langs/qsharp.yaml create mode 100644 langs/r.yaml create mode 100644 langs/racket.yaml create mode 100644 langs/ratfor.yaml create mode 100644 langs/rc.yaml create mode 100644 langs/reasonml.yaml create mode 100644 langs/rebol.yaml create mode 100644 langs/red.yaml create mode 100644 langs/redis.yaml create mode 100644 langs/restructuredtext.yaml create mode 100644 langs/rexx.yaml create mode 100644 langs/riscv.yaml create mode 100644 langs/roff.yaml create mode 100644 langs/ruby.yaml create mode 100644 langs/rust.yaml create mode 100644 langs/sagemath.yaml create mode 100644 langs/sass.yaml create mode 100644 langs/scala.yaml create mode 100644 langs/scheme.yaml create mode 100644 langs/scilab.yaml create mode 100644 langs/scss.yaml create mode 100644 langs/sed.yaml create mode 100644 langs/setl.yaml create mode 100644 langs/sh.yaml create mode 100644 langs/shakespeare.yaml create mode 100644 langs/slang.yaml create mode 100644 langs/slick.yaml create mode 100644 langs/smalltalk.yaml create mode 100644 langs/snobol.yaml create mode 100644 langs/sqlite.yaml create mode 100644 langs/squirrel.yaml create mode 100644 langs/standardml.yaml create mode 100644 langs/subleq.yaml create mode 100644 langs/swift.yaml create mode 100644 langs/tabloid.yaml create mode 100644 langs/tcl.yaml create mode 100644 langs/tcsh.yaml create mode 100644 langs/teco.yaml create mode 100644 langs/tex.yaml create mode 100644 langs/textile.yaml create mode 100644 langs/thue.yaml create mode 100644 langs/tikiwiki.yaml create mode 100644 langs/toml.yaml create mode 100644 langs/twiki.yaml create mode 100644 langs/typescript.yaml create mode 100644 langs/unison.yaml create mode 100644 langs/unlambda.yaml create mode 100644 langs/vala.yaml create mode 100644 langs/velato.yaml create mode 100644 langs/verilog.yaml create mode 100644 langs/vim.yaml create mode 100644 langs/vimwiki.yaml create mode 100644 langs/visualbasic.yaml create mode 100644 langs/whitespace.yaml create mode 100644 langs/wolframlanguage.yaml create mode 100644 langs/x86.yaml create mode 100644 langs/xslt.yaml create mode 100644 langs/yaml.yaml create mode 100644 langs/yorick.yaml create mode 100644 langs/zoem.yaml create mode 100644 langs/zot.yaml create mode 100644 langs/zsh.yaml create mode 100644 langs/рапира.yaml create mode 100644 langs/قلب.yaml create mode 100644 langs/எழில்.yaml create mode 100644 langs/아희.yaml diff --git a/backend/api.js b/backend/api.js index af90c2c..1083a4b 100644 --- a/backend/api.js +++ b/backend/api.js @@ -307,7 +307,7 @@ export class Session { code = createEmpty !== undefined ? createEmpty : template + "\n"; } if (code && suffix) { - code += suffix; + code += suffix + "\n"; } await this.writeCode(code); const termArgs = this.privilegedSpawn(bash(cmdline)); diff --git a/backend/langs.js b/backend/langs.js index 8e923e1..dc58654 100644 --- a/backend/langs.js +++ b/backend/langs.js @@ -19,6 +19,9 @@ function fixupLangConfig(langConfig) { return langConfig.trim(); } else if (typeof langConfig === "object") { for (const key in langConfig) { + if (langConfig.id === "whitespace" && key === "template") { + continue; + } langConfig[key] = fixupLangConfig(langConfig[key]); } } diff --git a/backend/test-runner.js b/backend/test-runner.js index cd570a9..a6de2ce 100644 --- a/backend/test-runner.js +++ b/backend/test-runner.js @@ -249,7 +249,7 @@ class Test { await this.waitForOutput(output); }; testFormat = async () => { - const input = this.config.format.input; + const input = this.config.format.input + "\n"; const output = (this.config.format.output || this.config.template) + "\n"; this.send({ event: "formatCode", code: input }); const result = await this.wait("formatter response", (msg) => { diff --git a/langs/><>.yaml b/langs/><>.yaml new file mode 100644 index 0000000..50709ed --- /dev/null +++ b/langs/><>.yaml @@ -0,0 +1,29 @@ +id: "><>" +aliases: + - "fishlang" +name: "><>" + +info: + year: 2009 + desc: "Stack-based, reflective, two-dimensional esoteric programming language" + ext: fish + web: + esolang: "https://esolangs.org/wiki/Fish" + source: "https://gist.github.com/anonymous/6392418" + category: esoteric + mode: interpreted + platform: [] + syntax: + - golf + - 2d + typing: float + paradigm: stack + usage: [] + +main: "main.fish" +template: | + "Hello, world!"r\ + o;!?l< + +run: | + fish-lang main.fish diff --git a/langs/a+.yaml b/langs/a+.yaml new file mode 100644 index 0000000..12e1e66 --- /dev/null +++ b/langs/a+.yaml @@ -0,0 +1,21 @@ +id: "a+" +aliases: + - "aplus" +name: "A+" + +repl: | + rlwrap a+ +input: | + 2 * 16 +output: | + 65536 + +main: "main.a+" +template: | + 'Hello, world!' + +run: | + rlwrap a+ main.a+ + +skip: + - scope diff --git a/langs/abc.yaml b/langs/abc.yaml new file mode 100644 index 0000000..4e4aa18 --- /dev/null +++ b/langs/abc.yaml @@ -0,0 +1,20 @@ +id: "abc" +name: "ABC" + +repl: | + abc +input: | + WRITE 123 * 234 + +main: "main.abc" +template: | + WRITE "Hello, world!" / + +run: | + abc "$PWD/main.abc" - + +scope: + code: | + PUT 123 * 234 IN x + input: | + WRITE x diff --git a/langs/ada.yaml b/langs/ada.yaml new file mode 100644 index 0000000..1ebb0c2 --- /dev/null +++ b/langs/ada.yaml @@ -0,0 +1,48 @@ +id: "ada" +aliases: + - "adb" + - "gnat" +name: "Ada" + +info: + impl: "GNAT" + year: 1980 + desc: "Structured, statically typed, imperative, and object-oriented high-level programming language, extended from Pascal and other languages" + ext: + - adb + - ads + web: + wiki: "https://en.wikipedia.org/wiki/Ada_(programming_language)" + home: "https://www.adaic.org/" + impl: "https://www.gnu.org/software/gnat/" + source: "https://gcc.gnu.org/git.html" + category: general + mode: compiled + platform: [] + syntax: pascal + typing: static + paradigm: + - imperative + - oo + usage: popular + +main: "main.adb" +template: | + with Ada.Text_IO; + + procedure Main is + begin + Ada.Text_IO.Put_Line("Hello, world!"); + end Main; + +compile: | + x86_64-linux-gnu-gnatmake-9 main.adb +run: | + ./main + +lsp: + start: | + ada_language_server + code: "\n Ada.IO" + after: ");" + item: "IO_Exceptions" diff --git a/langs/afnix.yaml b/langs/afnix.yaml new file mode 100644 index 0000000..dcaed07 --- /dev/null +++ b/langs/afnix.yaml @@ -0,0 +1,19 @@ +id: "afnix" +aliases: + - "als" + - "axc" + - "axi" +name: "Afnix" + +repl: | + LD_LIBRARY_PATH=/usr/lib/afnix axi +input: | + DELAY: 1 + println (* 123 234) + +main: "main.als" +template: | + println "Hello, world!" + +run: | + LD_LIBRARY_PATH=/usr/lib/afnix axi main.als; LD_LIBRARY_PATH=/usr/lib/afnix axi diff --git a/langs/algol.yaml b/langs/algol.yaml new file mode 100644 index 0000000..e4e70ec --- /dev/null +++ b/langs/algol.yaml @@ -0,0 +1,34 @@ +id: "algol" +aliases: + - "alg" + - "a68g" + - "genie" + - "a68genie" +name: "ALGOL 68" + +info: + impl: "ALGOL 68 Genie" + version: "ALGOL 68" + year: 1958 + desc: "Seminal imperative programming language which introduced lexical scope and formal grammar specification" + ext: alg + web: + wiki: "https://en.wikipedia.org/wiki/ALGOL" + home: "http://algol68.sourceforge.net/" + source: "https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html" + category: general + mode: + - interpreted + - compiled + platform: [] + syntax: pascal + typing: static + paradigm: imperative + usage: [] + +main: "main.alg" +template: | + print(("Hello, world!",new line)) + +run: | + a68g main.alg diff --git a/langs/ante.yaml b/langs/ante.yaml new file mode 100644 index 0000000..7999437 --- /dev/null +++ b/langs/ante.yaml @@ -0,0 +1,18 @@ +id: "ante" +aliases: + - "an" +name: "Ante" + +repl: | + ante +output: | + i32 + +main: "main.an" +template: | + puts("Hello, world!".cStr) + +compile: | + ante main.an +run: | + ./main; ante diff --git a/langs/antecards.yaml b/langs/antecards.yaml new file mode 100644 index 0000000..920de08 --- /dev/null +++ b/langs/antecards.yaml @@ -0,0 +1,9 @@ +id: "antecards" +name: "Ante (Cards)" + +main: "main.ante" +template: | + 9♦8♥J♦A♦2♣3♥7♠J♦A♦7♦J♦J♦A♦3♦J♦5♥6♦4♥J♥A♥6♠6♠J♥A♦8♦J♦A♦8♠J♦A♦3♦J♦A♦6♠J♦A♦8♠J♦A♥3♦2♠J♥A♥2♣6♠J♥ + +run: | + RUBYOPT="-W0" ante-cards main.ante diff --git a/langs/apl.yaml b/langs/apl.yaml new file mode 100644 index 0000000..bee27ab --- /dev/null +++ b/langs/apl.yaml @@ -0,0 +1,41 @@ +id: "apl" +name: "APL" + +info: + impl: "GNU APL" + year: 1966 + desc: "Array-based programming language using large range of special symbols for concision" + ext: apl + web: + wiki: "https://en.wikipedia.org/wiki/APL_(programming_language)" + impl: "https://www.gnu.org/software/apl/" + source: "https://savannah.gnu.org/svn/?group=apl" + category: + - general + mode: interpreted + platform: [] + syntax: + - golf + - symbol + typing: dynamic + paradigm: + - array + - functional + - imperative + usage: [] + +repl: | + apl +input: | + 123 × 234 + +main: "main.apl" +template: | + 'Hello, world!' + +run: | + apl -f main.apl + +scope: + code: | + x ← 123 × 234 diff --git a/langs/arm.yaml b/langs/arm.yaml new file mode 100644 index 0000000..3df08e2 --- /dev/null +++ b/langs/arm.yaml @@ -0,0 +1,42 @@ +id: "arm" +name: "ARM" + +info: + impl: "GCC" + year: 1985 + desc: "Popular RISC architecture used in mobile devices" + ext: S + web: + wiki: "https://en.wikipedia.org/wiki/ARM_architecture" + home: "https://developer.arm.com/architectures/cpu-architecture" + impl: "https://gcc.gnu.org/" + source: "https://gcc.gnu.org/git.html" + category: assembly + mode: compiled + platform: [] + syntax: assembly + typing: weak + paradigm: imperative + usage: [] + +main: "main.S" +template: |2 + .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" + +compile: | + arm-linux-gnueabihf-gcc main.S -o main -static +run: | + qemu-arm-static main diff --git a/langs/asciidoc.yaml b/langs/asciidoc.yaml new file mode 100644 index 0000000..9a17eb1 --- /dev/null +++ b/langs/asciidoc.yaml @@ -0,0 +1,30 @@ +id: "asciidoc" +aliases: + - "adoc" + - "asc" +name: "AsciiDoc" + +info: + year: 2002 + desc: "Human-readable document format, semantically equivalent to DocBook XML, but using plain-text mark-up conventions" + ext: adoc + web: + wiki: "https://en.wikipedia.org/wiki/AsciiDoc" + home: "https://asciidoc.org/" + source: "https://github.com/asciidoc/asciidoc" + category: markup + mode: [] + platform: [] + syntax: text + typing: [] + paradigm: [] + usage: [] + +main: "main.adoc" +template: | + Hello, world! + +compile: | + asciidoc -s main.adoc +run: | + prettier --no-config main.html diff --git a/langs/aspectc++.yaml b/langs/aspectc++.yaml new file mode 100644 index 0000000..0f04085 --- /dev/null +++ b/langs/aspectc++.yaml @@ -0,0 +1,18 @@ +id: "aspectc++" +aliases: + - "aspectcpp" +name: "AspectC++" + +main: "main.cpp" +template: | + #include + + int main() { + std::cout << "Hello, world!" << std::endl; + return 0; + } + +compile: | + ag++ main.cpp -o main | (grep -v "TO BE FIXED" || true) +run: | + ./main diff --git a/langs/aspectj.yaml b/langs/aspectj.yaml new file mode 100644 index 0000000..2ea2220 --- /dev/null +++ b/langs/aspectj.yaml @@ -0,0 +1,17 @@ +id: "aspectj" +aliases: + - "aj" +name: "AspectJ" + +main: "Main.aj" +template: | + public class Main { + public static void main(String[] args) { + System.out.println("Hello, world!"); + } + } + +compile: | + ajc Main.aj +run: | + java Main diff --git a/langs/asymptote.yaml b/langs/asymptote.yaml new file mode 100644 index 0000000..46aee09 --- /dev/null +++ b/langs/asymptote.yaml @@ -0,0 +1,14 @@ +id: "asymptote" +aliases: + - "asy" +name: "Asymptote" + +repl: | + asy + +main: "main.asy" +template: | + write("Hello, world!"); + +run: | + asy main.asy; asy diff --git a/langs/ats.yaml b/langs/ats.yaml new file mode 100644 index 0000000..3251120 --- /dev/null +++ b/langs/ats.yaml @@ -0,0 +1,45 @@ +id: "ats" +aliases: + - "dats" + - "sats" + - "cats" + - "hats" +name: "ATS" +monacoLang: postiats + +info: + impl: "ATS2/Postiats" + year: 2007 + desc: "Programming language designed to unify programming with formal specification" + ext: + - sats + - dats + - cats + - hats + web: + wiki: "https://en.wikipedia.org/wiki/ATS_(programming_language)" + home: "http://www.ats-lang.org/" + source: "https://github.com/githwxi/ATS-Postiats" + category: general + mode: compiled + platform: [] + syntax: + - c + - haskell + typing: + - static + - theorem + paradigm: + - imperative + - declarative + usage: [] + +main: "main.dats" +template: | + val _ = print ("Hello, world!\n") + implement main0 () = () + +compile: | + patscc main.dats -o main +run: | + ./main diff --git a/langs/awk.yaml b/langs/awk.yaml new file mode 100644 index 0000000..5e352ba --- /dev/null +++ b/langs/awk.yaml @@ -0,0 +1,30 @@ +id: "awk" +aliases: + - "gawk" + - "mawk" + - "nawk" +name: "Awk" + +info: + impl: "GNU Awk" + year: 1977 + desc: "Domain-specific language designed for text processing and typically used as a data extraction and reporting tool" + ext: awk + web: + wiki: "https://en.wikipedia.org/wiki/AWK" + impl: "https://www.gnu.org/software/gawk/manual/gawk.html" + source: "https://savannah.gnu.org/git/?group=gawk" + category: tool + mode: interpreted + platform: [] + syntax: c + typing: weak + paradigm: imperative + usage: [] + +main: "main.awk" +template: | + BEGIN { print "Hello, world!" } + +run: | + awk -f main.awk diff --git a/langs/bash.yaml b/langs/bash.yaml new file mode 100644 index 0000000..41e53f6 --- /dev/null +++ b/langs/bash.yaml @@ -0,0 +1,49 @@ +id: "bash" +aliases: + - "bashrc" + - "bourneshell" +name: "Bash" +monacoLang: shell + +info: + impl: "GNU Bash" + year: 1989 + desc: "Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell" + ext: + - bash + - sh + web: + wiki: "https://en.wikipedia.org/wiki/Bash_(Unix_shell)" + impl: "https://www.gnu.org/software/bash/" + source: "https://savannah.gnu.org/projects/bash/" + category: shell + mode: interpreted + platform: [] + syntax: pascal + typing: weak + paradigm: imperative + usage: [] + +repl: | + bash --rcfile /dev/null +input: | + expr 123 \* 234 + +main: "main.bash" +template: | + echo "Hello, world!" + +run: | + bash --rcfile main.bash + +scope: + code: | + x="$(expr 123 \* 234)" + input: | + echo "$x" + +lsp: + start: | + bash-language-server start + code: "read" + item: "readonly" diff --git a/langs/basic.yaml b/langs/basic.yaml new file mode 100644 index 0000000..70107f6 --- /dev/null +++ b/langs/basic.yaml @@ -0,0 +1,43 @@ +id: "basic" +aliases: + - "bas" + - "qbasic" +name: "BASIC" + +info: + impl: "Bywater BASIC" + year: 1964 + desc: "General-purpose, high-level programming language whose design philosophy emphasizes ease of use" + ext: bas + web: + wiki: "https://en.wikipedia.org/wiki/BASIC" + impl: "https://sourceforge.net/projects/bwbasic/" + source: "https://sourceforge.net/projects/bwbasic/files/bwbasic/" + category: general + mode: interpreted + platform: [] + syntax: + - basic + - column + - whitespace + typing: static + paradigm: imperative + usage: [] + +repl: | + bwbasic +input: | + PRINT 123 * 234 + +main: "main.bas" +template: | + PRINT "Hello, world!" + +run: | + bwbasic main.bas + +scope: + code: | + x = 123 * 234 + input: | + PRINT x diff --git a/langs/battlestar.yaml b/langs/battlestar.yaml new file mode 100644 index 0000000..b3c9ed8 --- /dev/null +++ b/langs/battlestar.yaml @@ -0,0 +1,31 @@ +id: "battlestar" +aliases: + - "battlestarc" + - "bts" +name: "Battlestar" + +info: + year: 2014 + desc: "A different take on assembly, with the goal of creating tiny executables" + ext: bts + web: + source: "https://github.com/xyproto/battlestar" + category: assembly + mode: compiled + platform: [] + syntax: assembly + typing: weak + paradigm: imperative + usage: personal + +main: "main.bts" +template: | + const message = "Hello, world! + " + + fun main + syscall(1, 1, message, len(message)) + end + +run: | + bts main.bts diff --git a/langs/bc.yaml b/langs/bc.yaml new file mode 100644 index 0000000..c5802a3 --- /dev/null +++ b/langs/bc.yaml @@ -0,0 +1,13 @@ +id: "bc" +name: "bc" + +repl: | + bc + +main: "main.bc" +template: | + "Hello, world! + " + +run: | + bc main.bc diff --git a/langs/beanshell.yaml b/langs/beanshell.yaml new file mode 100644 index 0000000..5936b26 --- /dev/null +++ b/langs/beanshell.yaml @@ -0,0 +1,23 @@ +id: "beanshell" +aliases: + - "bsh" +name: "Beanshell" + +repl: | + CLASSPATH=/usr/share/java/jline.jar:/usr/share/java/bsh.jar java -Duser.home="$PWD" jline.ConsoleRunner bsh.Interpreter +input: | + print(123 * 234); + +main: ".bshrc" +template: | + print("Hello, world!"); +createEmpty: "" + +run: | + CLASSPATH=/usr/share/java/jline.jar:/usr/share/java/bsh.jar java -Duser.home="$PWD" jline.ConsoleRunner bsh.Interpreter + +scope: + code: | + x = 123 * 234; + input: | + print(x); diff --git a/langs/beatnik.yaml b/langs/beatnik.yaml new file mode 100644 index 0000000..3ddfe3a --- /dev/null +++ b/langs/beatnik.yaml @@ -0,0 +1,115 @@ +id: "beatnik" +name: "Beatnik" + +info: + impl: "Cat's Eye Beatnik" + year: 2001 + desc: "Stack-based esoteric programming language created by Cliff L. Biffle" + ext: beatnik + web: + wiki: "https://en.wikipedia.org/wiki/Beatnik_(programming_language)" + esolang: "https://esolangs.org/wiki/Beatnik" + home: "https://cliffle.com/esoterica/beatnik/" + source: "https://github.com/catseye/Beatnik" + category: esoteric + mode: interpreted + platform: [] + syntax: [] + typing: integer + paradigm: stack + usage: [] + +main: "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. + +run: | + beatnik main.beatnik diff --git a/langs/befunge.yaml b/langs/befunge.yaml new file mode 100644 index 0000000..318528e --- /dev/null +++ b/langs/befunge.yaml @@ -0,0 +1,37 @@ +id: "befunge" +aliases: + - "be" +name: "Befunge" + +info: + impl: "amicloud Befunge-93" + version: "Befunge-93" + year: 1993 + desc: "Two-dimensional esoteric programming language invented in 1993 by Chris Pressey with the goal of being as difficult to compile as possible" + ext: + - be + - bf + - b93 + - b98 + - befunge + web: + wiki: "https://en.wikipedia.org/wiki/Befunge" + esolang: "https://esolangs.org/wiki/Befunge" + home: "https://catseye.tc/article/Languages.md#befunge-93" + source: "https://github.com/amicloud/befunge93" + category: esoteric + mode: interpreted + platform: [] + syntax: + - golf + - 2d + typing: integer + paradigm: stack + usage: [] + +main: "main.be" +template: | + 64+"!dlrow ,olleH">:#,_@ + +run: | + befunge-repl main.be diff --git a/langs/blc.yaml b/langs/blc.yaml new file mode 100644 index 0000000..78e387a --- /dev/null +++ b/langs/blc.yaml @@ -0,0 +1,34 @@ +id: "blc" +aliases: + - "binarylambdacalculus" + - "lc" + - "binary" + - "lambdacalculus" + - "lambda" +name: "Binary Lambda Calculus" + +info: + year: 2004 + desc: "Minimal, pure functional programming language invented by John Tromp in 2004, based on a binary encoding of the untyped lambda calculus in De Bruijn index notation" + ext: blc + web: + wiki: "https://en.wikipedia.org/wiki/Binary_combinatory_logic" + esolang: "https://esolangs.org/wiki/Binary_lambda_calculus" + home: "https://tromp.github.io/cl/Binary_lambda_calculus.html" + impl: "https://www.ioccc.org/2012/tromp/hint.html" + source: "https://www.ioccc.org/2012/tromp/tromp.c" + category: esoteric + mode: interpreted + platform: [] + syntax: [] + typing: lambda + paradigm: functional + usage: [] + +main: "main.blc" +template: | + 001010100100100001100101011011000110110001101111001011000010 + 000001110111011011110111001001101100011001000010000100001010 + +run: | + cat main.blc | binary-to-text | tromp diff --git a/langs/boo.yaml b/langs/boo.yaml new file mode 100644 index 0000000..dc79c53 --- /dev/null +++ b/langs/boo.yaml @@ -0,0 +1,42 @@ +id: "boo" +aliases: + - "booc" +name: "Boo" + +info: + year: 2003 + desc: "Object-oriented, statically typed, general-purpose programming language on Microsoft's Common Language Infrastructure" + ext: boo + web: + wiki: "https://en.wikipedia.org/wiki/Boo_(programming_language)" + home: "https://boo-language.github.io/" + source: "https://github.com/boo-lang/boo" + category: general + mode: compiled + platform: clr + syntax: + - python + - extensible + - whitespace + typing: + - static + - dynamic + paradigm: + - imperative + - oo + usage: [] + +setup: | + mkdir -p "$HOME/.local/share" && touch "$HOME/.local/share/booish_history" + +repl: | + booish + +main: "main.boo" +template: | + print "Hello, world!" + +compile: | + booc main.boo +run: | + mono main.exe; booish diff --git a/langs/brainf.yaml b/langs/brainf.yaml new file mode 100644 index 0000000..a92be48 --- /dev/null +++ b/langs/brainf.yaml @@ -0,0 +1,68 @@ +id: "brainf" +aliases: + - "brainfuck" + - "bf" +name: "Brainf***" + +info: + impl: "Beef" + year: 1993 + desc: "Famous esoteric programming language created in 1993 by Urban Müller" + ext: + - b + - bf + web: + wiki: "https://en.wikipedia.org/wiki/Brainfuck" + esolang: "https://esolangs.org/wiki/Brainfuck" + impl: "https://kiyuko.org/software/beef" + source: "https://github.com/andreabolognani/beef" + category: esoteric + mode: interpreted + platform: bf + syntax: golf + typing: integer + paradigm: turing + usage: [] + +repl: | + brainf-repl +input: | + >++>+[>++++[-<++++>]<<]> [>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]< +output: | + 86 + +main: "main.bf" +template: | + ++++++++ + [ + >++++ + [ + >++ + >+++ + >+++ + >+ + <<<<- + ] + >+ + >+ + >- + >>+ + [<] + + <- + ] + + >>. + >---. + +++++++..+++. + >>. + <-. + <. + +++.------.--------. + >>+. + >++. + +run: | + brainf-repl main.bf +hello: | + Hello World diff --git a/langs/bython.yaml b/langs/bython.yaml new file mode 100644 index 0000000..7c91c12 --- /dev/null +++ b/langs/bython.yaml @@ -0,0 +1,11 @@ +id: "bython" +aliases: + - "by" +name: "Bython" + +main: "main.by" +template: | + print("Hello, world!") + +run: | + bython main.by diff --git a/langs/c++.yaml b/langs/c++.yaml new file mode 100644 index 0000000..5bda9dd --- /dev/null +++ b/langs/c++.yaml @@ -0,0 +1,88 @@ +id: "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 + +info: + impl: "LLVM" + version: "C++20" + year: 1985 + desc: "General-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language" + ext: + - C + - cc + - cpp + - cxx + - c++ + - h + - hh + - hpp + - hxx + - h++ + web: + wiki: "https://en.wikipedia.org/wiki/C%2B%2B" + impl: "https://llvm.org/" + source: "https://github.com/llvm/llvm-project" + category: general + mode: compiled + platform: [] + syntax: c + typing: static + paradigm: + - functional + - imperative + - oo + usage: popular + +main: "main.cpp" +template: | + #include + + int main() { + std::cout << "Hello, world!" << std::endl; + return 0; + } + +compile: | + clang++ -std=c++17 -pedantic -Wall -Wextra main.cpp -o main +run: | + ./main + +format: + run: | + clang-format --assume-filename=format.cpp + input: | + #include + + int main() + { + std::cout << "Hello, world!" << std::endl; + return 0; + } + +lsp: + setup: | + echo '-Wall -Wextra' | sed -E 's/\s+/\n/g' > compile_flags.txt + start: | + clangd + +skip: + - lsp diff --git a/langs/c.yaml b/langs/c.yaml new file mode 100644 index 0000000..bc7c43d --- /dev/null +++ b/langs/c.yaml @@ -0,0 +1,66 @@ +id: "c" +aliases: + - "gcc" + - "clang" + - "h" + - "cc" + - "c99" + - "c11" + - "c18" +name: "C" +monacoLang: c + +info: + impl: "LLVM" + version: "C18" + year: 1972 + desc: "General-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system" + ext: + - c + - h + web: + wiki: "https://en.wikipedia.org/wiki/C_(programming_language)" + impl: "https://llvm.org/" + source: "https://github.com/llvm/llvm-project" + category: general + mode: compiled + platform: [] + syntax: c + typing: static + paradigm: imperative + usage: popular + +main: "main.c" +template: | + #include + + int main() { + printf("Hello, world!\n"); + return 0; + } + +compile: | + clang -std=c17 -pedantic -Wall -Wextra main.c -o main +run: | + ./main + +format: + run: | + clang-format --assume-filename=format.c + input: | + #include + + int main() + { + printf("Hello, world!\n"); + return 0; + } + +lsp: + setup: | + echo '-Wall -Wextra' | sed -E 's/\s+/\n/g' > compile_flags.txt + start: | + clangd + +skip: + - lsp diff --git a/langs/cat.yaml b/langs/cat.yaml new file mode 100644 index 0000000..b6c1998 --- /dev/null +++ b/langs/cat.yaml @@ -0,0 +1,32 @@ +id: "cat" +aliases: + - "cat-language" +name: "Cat" + +info: + year: 2006 + desc: "Statically typed stack-based programming language in C#" + ext: cat + web: + source: "https://github.com/cdiggins/cat-language" + category: pure + mode: interpreted + platform: [] + syntax: tokens + typing: static + paradigm: stack + usage: [] + +repl: | + NODE_PATH=/opt/cat node /opt/cat/repl.js +input: | + 123 234 mul + +main: "main.cat" +template: | + 72 101 108 108 111 44 32 119 111 114 108 100 33 10 + +run: | + NODE_PATH=/opt/cat node /opt/cat/repl.js main.cat +hello: | + 72,101,108,108,111,44,32,119,111,114,108,100,33,10 diff --git a/langs/ceylon.yaml b/langs/ceylon.yaml new file mode 100644 index 0000000..16d2891 --- /dev/null +++ b/langs/ceylon.yaml @@ -0,0 +1,29 @@ +id: "ceylon" +name: "Ceylon" + +info: + year: 2011 + desc: "Object-oriented, strongly statically typed programming language with an emphasis on immutability, created by Red Hat" + ext: ceylon + web: + wiki: "https://en.wikipedia.org/wiki/Ceylon_(programming_language)" + home: "https://ceylon-lang.org/" + source: "https://ceylon-lang.org/code/source/" + category: general + mode: compiled + platform: jvm + syntax: c + typing: static + paradigm: + - imperative + - oo + usage: [] + +main: "source/main.ceylon" +template: | + shared void run() { + print("Hello, world!"); + } + +run: | + PATH="/usr/lib/jvm/java-8-openjdk-amd64/bin:$PATH" ceylon run --compile=force default diff --git a/langs/chef.yaml b/langs/chef.yaml new file mode 100644 index 0000000..8ff6c85 --- /dev/null +++ b/langs/chef.yaml @@ -0,0 +1,86 @@ +id: "chef" +name: "Chef" + +info: + impl: "Acme::Chef" + year: 2002 + desc: "Stack-based language where programs look like cooking recipes" + ext: chef + web: + esolang: "https://esolangs.org/wiki/Chef" + home: "https://www.dangermouse.net/esoteric/chef.html" + source: "http://search.cpan.org/author/SMUELLER/Acme-Chef/" + category: esoteric + mode: + - compiled + - interpreted + platform: [] + syntax: text + typing: integer + paradigm: imperative + usage: [] + +main: "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. + +run: | + chef main.chef +hello: | + Hello world! diff --git a/langs/cil.yaml b/langs/cil.yaml new file mode 100644 index 0000000..2d6c89a --- /dev/null +++ b/langs/cil.yaml @@ -0,0 +1,25 @@ +id: "cil" +aliases: + - "msil" + - "il" + - "ilasm" +name: "CIL" + +main: "main.il" +template: | + .assembly main {} + .class Main + { + .method static void Main() cil managed + { + .entrypoint + ldstr "Hello, world!" + call void [mscorlib]System.Console::WriteLine(string) + ret + } + } + +compile: | + ilasm main.il +run: | + mono main.exe diff --git a/langs/clean.yaml b/langs/clean.yaml new file mode 100644 index 0000000..936c588 --- /dev/null +++ b/langs/clean.yaml @@ -0,0 +1,44 @@ +id: "clean" +aliases: + - "icl" + - "clm" + - "dcl" +name: "Clean" + +info: + year: 1987 + desc: "General-purpose purely functional computer programming language" + ext: + - icl + - dcl + - abc + web: + wiki: "https://en.wikipedia.org/wiki/Clean_(programming_language)" + home: "https://clean.cs.ru.nl/Clean" + source: "https://gitlab.science.ru.nl/clean-compiler-and-rts/compiler" + category: general + mode: compiled + platform: [] + syntax: haskell + typing: static + paradigm: + - declarative + - functional + usage: [] + +main: "main.icl" +template: | + module main + + import StdEnv + + Start world + #(console, world) = stdio world + #console = fwrites "Hello, world!\n" console + #(ok, world) = fclose console world + = world + +compile: | + clm main -o main +run: | + ./main diff --git a/langs/clojure.yaml b/langs/clojure.yaml new file mode 100644 index 0000000..3558cec --- /dev/null +++ b/langs/clojure.yaml @@ -0,0 +1,54 @@ +id: "clojure" +aliases: + - "clj" +name: "Clojure" +monacoLang: clojure + +info: + impl: "Java Clojure" + year: 2007 + desc: "Modern, dynamic, and functional dialect of the Lisp programming language on the Java platform" + ext: + - clj + - cljc + - edn + web: + wiki: "https://en.wikipedia.org/wiki/Clojure" + home: "https://clojure.org/" + source: "https://github.com/clojure/clojure" + category: general + mode: interpreted + platform: jvm + syntax: + - lisp + - extensible + typing: dynamic + paradigm: + - declarative + - functional + - imperative + - oo + usage: [] + +repl: | + clojure +input: | + (* 123 234) + +main: "main.clj" +template: | + (println "Hello, world!") + +run: | + clojure -i main.clj -r + +scope: + code: | + (def x (* 123 234)) + +lsp: + start: | + clojure-lsp + +skip: + - lsp diff --git a/langs/clojurescript.yaml b/langs/clojurescript.yaml new file mode 100644 index 0000000..b3db5d4 --- /dev/null +++ b/langs/clojurescript.yaml @@ -0,0 +1,48 @@ +id: "clojurescript" +aliases: + - "cljs" + - "lumo" +name: "ClojureScript" +monacoLang: clojure + +info: + year: 2011 + desc: "Compiler for Clojure that targets JavaScript" + ext: cljs + web: + wiki: "https://en.wikipedia.org/wiki/Clojure#Platforms" + home: "https://clojurescript.org/" + source: "https://github.com/clojure/clojurescript" + category: general + mode: + - compiled + - interpreted + platform: js + syntax: + - lisp + - extensible + typing: + - dynamic + - weak + paradigm: + - declarative + - functional + - imperative + - oo + usage: [] + +repl: | + lumo -r +input: | + (* 123 234) + +main: "main.cljs" +template: | + (println "Hello, world!") + +run: | + lumo -i main.cljs -r + +scope: + code: | + (def x (* 123 234)) diff --git a/langs/cmake.yaml b/langs/cmake.yaml new file mode 100644 index 0000000..bfcf723 --- /dev/null +++ b/langs/cmake.yaml @@ -0,0 +1,11 @@ +id: "cmake" +aliases: + - "cmakelists" +name: "CMake" + +main: "main.cmake" +template: | + message("Hello, world!") + +run: | + cmake -P main.cmake diff --git a/langs/cmd.yaml b/langs/cmd.yaml new file mode 100644 index 0000000..5defc9a --- /dev/null +++ b/langs/cmd.yaml @@ -0,0 +1,44 @@ +id: "cmd" +aliases: + - "bat" + - "batch" + - "wine" +name: "Cmd" +monacoLang: bat + +info: + year: 1987 + desc: "Obsolete (but still default) command-line interpreter for Microsoft Windows" + ext: bat + web: + wiki: "https://en.wikipedia.org/wiki/Cmd.exe" + home: "https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands" + source: null + category: shell + mode: interpreted + platform: windows + syntax: basic + typing: weak + paradigm: imperative + usage: [] + +setup: | + shopt -s dotglob; cp -R /opt/cmd/home-template/* ./ + +repl: | + wine cmd +input: | + set /a 123 * 234 + +main: "main.bat" +template: | + echo "Hello, world!" + +run: | + wine cmd /k main.bat + +scope: + code: | + set /a x = 123 * 234 + input: | + echo %x% diff --git a/langs/cobol.yaml b/langs/cobol.yaml new file mode 100644 index 0000000..8640992 --- /dev/null +++ b/langs/cobol.yaml @@ -0,0 +1,43 @@ +id: "cobol" +aliases: + - "cbl" + - "cob" + - "cobc" + - "cpy" +name: "COBOL" + +info: + impl: "GnuCOBOL" + version: "COBOL 2014" + year: 1959 + desc: "Compiled English-like computer programming language designed for business use" + ext: + - cbl + - cob + - cpy + web: + wiki: "https://en.wikipedia.org/wiki/COBOL" + impl: "https://sourceforge.net/projects/gnucobol/" + source: "https://sourceforge.net/p/gnucobol/_list/svn" + category: general + mode: compiled + platform: [] + syntax: basic + typing: weak + paradigm: + - imperative + - oo + usage: popular + +main: "main.cbl" +template: | + IDENTIFICATION DIVISION. + PROGRAM-ID. MAIN. + PROCEDURE DIVISION. + DISPLAY "Hello, world!". + STOP RUN. + +compile: | + cobc -free -x main.cbl -o main +run: | + ./main diff --git a/langs/coffeescript.yaml b/langs/coffeescript.yaml new file mode 100644 index 0000000..a982219 --- /dev/null +++ b/langs/coffeescript.yaml @@ -0,0 +1,50 @@ +id: "coffeescript" +aliases: + - "coffee" + - "litcoffee" +name: "CoffeeScript" +monacoLang: coffee + +info: + year: 2009 + desc: "Compile-to-JavaScript programming language adding syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript's brevity and readability" + ext: + - coffee + - litcoffee + web: + wiki: "https://en.wikipedia.org/wiki/CoffeeScript" + home: "https://coffeescript.org/" + source: "https://github.com/jashkenas/coffeescript" + category: general + mode: + - interpreted + - compiled + platform: js + syntax: + - c + - haskell + typing: weak + paradigm: + - declarative + - functional + - imperative + usage: [] + +repl: | + coffee + +main: "main.coffee" +template: | + console.log "Hello, world!" + +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() + ' + +scope: + code: | + x = 123 * 234 diff --git a/langs/commonlisp.yaml b/langs/commonlisp.yaml new file mode 100644 index 0000000..a541591 --- /dev/null +++ b/langs/commonlisp.yaml @@ -0,0 +1,54 @@ +id: "commonlisp" +aliases: + - "lisp" + - "sbcl" +name: "Common Lisp" + +info: + impl: "SBCL" + year: 1984 + desc: "Modern, multi-paradigm, high-performance, compiled, ANSI-standardized, most prominent (along with Scheme) descendant of the Lisp family" + ext: + - lisp + - lsp + - l + - cl + - fasl + web: + wiki: "https://en.wikipedia.org/wiki/Common_Lisp" + home: "https://common-lisp.net/" + impl: "http://www.sbcl.org/" + source: "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/" + category: general + mode: + - compiled + - interpreted + platform: [] + syntax: + - lisp + - extensible + typing: + - static + - dynamic + paradigm: + - declarative + - functional + - imperative + - oo + usage: [] + +repl: | + rlwrap sbcl +input: | + (* 123 234) + +main: "main.lisp" +template: | + (format t "Hello, world!") + +run: | + rlwrap sbcl --userinit main.lisp + +scope: + code: | + (defvar x (* 123 234)) diff --git a/langs/confluence.yaml b/langs/confluence.yaml new file mode 100644 index 0000000..f5b4d69 --- /dev/null +++ b/langs/confluence.yaml @@ -0,0 +1,32 @@ +id: "confluence" +aliases: + - "jira" + - "atlassian" +name: "Confluence" + +info: + impl: "Pandoc" + year: 2004 + desc: "Markup format for a popular web-based corporate wiki developed by Atlassian" + ext: [] + web: + wiki: "https://en.wikipedia.org/wiki/Confluence_(software)" + home: "https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html" + impl: "https://pandoc.org/" + source: "https://github.com/jgm/pandoc" + category: markup + mode: [] + platform: [] + syntax: text + typing: [] + paradigm: [] + usage: [] + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f jira -o main.html +run: | + prettier --no-config main.html diff --git a/langs/crystal.yaml b/langs/crystal.yaml new file mode 100644 index 0000000..4b4240e --- /dev/null +++ b/langs/crystal.yaml @@ -0,0 +1,27 @@ +id: "crystal" +aliases: + - "cr" +name: "Crystal" + +info: + year: 2014 + desc: "General-purpose, object-oriented programming language with syntax inspired by the language Ruby" + ext: cr + web: + wiki: "https://en.wikipedia.org/wiki/Crystal_(programming_language)" + home: "https://crystal-lang.org/" + source: "https://github.com/crystal-lang/crystal" + category: general + mode: compiled + platform: [] + syntax: pascal + typing: static + paradigm: oo + usage: [] + +main: "main.cr" +template: | + puts "Hello, world!" + +run: | + crystal main.cr diff --git a/langs/csharp.yaml b/langs/csharp.yaml new file mode 100644 index 0000000..90792d9 --- /dev/null +++ b/langs/csharp.yaml @@ -0,0 +1,31 @@ +id: "csharp" +aliases: + - "cs" + - "mcs" +name: "C#" +monacoLang: csharp + +main: "main.cs" +template: | + class main { + static void Main(string[] args) { + System.Console.WriteLine("Hello, world!"); + } + } + +compile: | + mcs main.cs +run: | + mono main.exe + +format: + run: | + clang-format --style="{BasedOnStyle: llvm, IndentWidth: 4}" --assume-filename=format.cs + input: | + class main + { + static void Main(string[] args) + { + System.Console.WriteLine("Hello, world!"); + } + } diff --git a/langs/curry.yaml b/langs/curry.yaml new file mode 100644 index 0000000..d4f4a3e --- /dev/null +++ b/langs/curry.yaml @@ -0,0 +1,20 @@ +id: "curry" +aliases: + - "curry2prolog" + - "pakcs" +name: "Curry" + +repl: | + pakcs + +main: "main.curry" +template: | + main :: IO () + main = putStrLn "Hello, world!" + +run: | + pakcs :load main.curry :eval main + +scope: + code: | + x = 123 * 234 diff --git a/langs/d.yaml b/langs/d.yaml new file mode 100644 index 0000000..e65b7ef --- /dev/null +++ b/langs/d.yaml @@ -0,0 +1,28 @@ +id: "d" +aliases: + - "dmd" +name: "D" + +main: "main.d" +template: | + import std.stdio; + + void main() + { + writeln("Hello, world!"); + } + +compile: | + dmd main.d +run: | + ./main + +format: + run: | + dfmt + input: | + import std.stdio; + + void main() { + writeln("Hello, world!"); + } diff --git a/langs/dafny.yaml b/langs/dafny.yaml new file mode 100644 index 0000000..158efcb --- /dev/null +++ b/langs/dafny.yaml @@ -0,0 +1,15 @@ +id: "dafny" +aliases: + - "dfy" +name: "Dafny" + +main: "main.dfy" +template: | + method Main() { + print "Hello, world!\n"; + } + +compile: | + dafny main.dfy +run: | + mono main.exe diff --git a/langs/dart.yaml b/langs/dart.yaml new file mode 100644 index 0000000..f33dde1 --- /dev/null +++ b/langs/dart.yaml @@ -0,0 +1,21 @@ +id: "dart" +name: "Dart" +monacoLang: dart + +main: "main.dart" +template: | + void main() { + print('Hello, world!'); + } + +run: | + dart main.dart + +lsp: + start: | + dart /usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot --lsp + disableDynamicRegistration: true + lang: "dart" + +skip: + - lsp diff --git a/langs/dc.yaml b/langs/dc.yaml new file mode 100644 index 0000000..805dc36 --- /dev/null +++ b/langs/dc.yaml @@ -0,0 +1,20 @@ +id: "dc" +name: "dc" + +repl: | + echo 'Reading from stdin...' >&2; dc +input: | + 123 234 * p + +main: "main.dc" +template: | + [Hello, world!] p + +run: | + echo 'Reading from stdin...' >&2; dc main.dc - + +scope: + code: | + 123 234 * + input: | + p diff --git a/langs/dhall.yaml b/langs/dhall.yaml new file mode 100644 index 0000000..6bfff9d --- /dev/null +++ b/langs/dhall.yaml @@ -0,0 +1,11 @@ +id: "dhall" +name: "Dhall" + +main: "main.dhall" +template: | + { output = "Hello, world!" } + +compile: | + cat main.dhall | dhall-to-json > main.json +run: | + cat main.json | jq . diff --git a/langs/dogescript.yaml b/langs/dogescript.yaml new file mode 100644 index 0000000..83c653d --- /dev/null +++ b/langs/dogescript.yaml @@ -0,0 +1,16 @@ +id: "dogescript" +aliases: + - "doge" + - "ds" + - "wow" +name: "Dogescript" + +repl: | + dogescript + +main: "main.djs" +template: | + plz console.loge with "Hello, world!" + +run: | + dogescript main.djs | node; dogescript diff --git a/langs/dokuwiki.yaml b/langs/dokuwiki.yaml new file mode 100644 index 0000000..a7068df --- /dev/null +++ b/langs/dokuwiki.yaml @@ -0,0 +1,13 @@ +id: "dokuwiki" +aliases: + - "doku" +name: "DokuWiki" + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f dokuwiki -o main.html +run: | + prettier --no-config main.html diff --git a/langs/dylan.yaml b/langs/dylan.yaml new file mode 100644 index 0000000..d0bb582 --- /dev/null +++ b/langs/dylan.yaml @@ -0,0 +1,24 @@ +id: "dylan" +aliases: + - "opendylan" +name: "Dylan" + +setup: | + cp -R /opt/dylan/project-template/* ./ + +main: "main.dylan" +template: | + Module: main + + define function main + (name :: , arguments :: ) + format-out("Hello, world!\n"); + exit-application(0); + end function main; + + main(application-name(), application-arguments()); + +compile: | + dylan-compiler -build main.lid +run: | + _build/bin/main diff --git a/langs/ec.yaml b/langs/ec.yaml new file mode 100644 index 0000000..f83c248 --- /dev/null +++ b/langs/ec.yaml @@ -0,0 +1,22 @@ +id: "ec" +aliases: + - "ecere" + - "ecp" + - "ecs" + - "ecc" +name: "eC" + +main: "main.ec" +template: | + class Main : Application + { + void Main() + { + PrintLn("Hello, world!"); + } + } + +compile: | + ecp -c main.ec -o main.sym && ecc -c main.ec -o main.c && ecs -console main.sym main.imp -o main.main.ec && ecp -c main.main.ec -o main.main.sym && ecc -c main.main.ec -o main.main.c && clang main.c main.main.c -lecereCOM -o main +run: | + ./main diff --git a/langs/elixir.yaml b/langs/elixir.yaml new file mode 100644 index 0000000..6906868 --- /dev/null +++ b/langs/elixir.yaml @@ -0,0 +1,36 @@ +id: "elixir" +aliases: + - "iex" + - "exs" +name: "Elixir" + +repl: | + iex +input: | + DELAY: 1 + 123 * 234 + +main: "main.exs" +template: | + IO.puts("Hello, world!") + +run: | + iex main.exs + +scope: + code: | + defmodule Scope do + def x do + 123 * 234 + end + end + input: | + DELAY: 1 + Scope.x + +lsp: + start: | + /opt/elixir-ls/language_server.sh + +skip: + - lsp diff --git a/langs/elm.yaml b/langs/elm.yaml new file mode 100644 index 0000000..ad16734 --- /dev/null +++ b/langs/elm.yaml @@ -0,0 +1,31 @@ +id: "elm" +name: "Elm" + +repl: | + elm repl + +main: "Main.elm" +template: | + module Main exposing (..) + + output : String + output = "Hello, world!" + +run: | + cp /opt/elm/elm.json elm.json && run-elm Main.elm; elm repl + +scope: + code: | + x = 123 * 234 + input: | + import Main + Main.x + +lsp: + setup: | + cp /opt/elm/elm.json elm.json + start: | + elm-language-server --stdio + +skip: + - lsp diff --git a/langs/elvish.yaml b/langs/elvish.yaml new file mode 100644 index 0000000..92a7e4d --- /dev/null +++ b/langs/elvish.yaml @@ -0,0 +1,23 @@ +id: "elvish" +aliases: + - "elv" +name: "Elvish" + +repl: | + SHELL=/usr/bin/elvish HOME="$PWD" elvish +input: | + * 123 234 + +main: ".elvish/rc.elv" +template: | + echo "Hello, world!" +createEmpty: "" + +run: | + SHELL=/usr/bin/elvish HOME="$PWD" elvish + +scope: + code: | + x = (* 123 234) + input: | + echo $x diff --git a/langs/emacs.yaml b/langs/emacs.yaml new file mode 100644 index 0000000..417f7cb --- /dev/null +++ b/langs/emacs.yaml @@ -0,0 +1,34 @@ +id: "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))" +input: | + (* 123 234) + +main: "main.el" +template: | + (message "Hello, world!") + +run: | + emacs --load main.el --eval "(progn (require 'package) (push '("melpa" . "https://melpa.org/packages/") package-archives) (package-initialize) (ielm))" + +scope: + code: | + (defvar x (* 123 234)) + +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 '' | grep -Eo '[^>]+' | grep -Eo '^[^<]+' && curl -sS https://melpa.org/archive.json | jq -r 'keys | .[]') | sort | uniq diff --git a/langs/emojicode.yaml b/langs/emojicode.yaml new file mode 100644 index 0000000..04e4db8 --- /dev/null +++ b/langs/emojicode.yaml @@ -0,0 +1,17 @@ +id: "emojicode" +aliases: + - "emoji" + - "emojic" + - "emojicodec" +name: "Emojicode" + +main: "main.emojic" +template: | + 🏁 🍇 + 😀 🔤Hello, world!🔤❗️ + 🍉 + +compile: | + emojicodec main.emojic +run: | + ./main diff --git a/langs/entropy.yaml b/langs/entropy.yaml new file mode 100644 index 0000000..020610d --- /dev/null +++ b/langs/entropy.yaml @@ -0,0 +1,20 @@ +id: "entropy" +aliases: + - "ent" + - "entc" + - "vge" +name: "Entropy" + +main: "main.vge" +template: | + Program MyNamespace MyProgram [ + print "Hello, world!"; + ] + +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 +hello: | + [F-J][c-g][j-n][j-n][m-q][*-.][\x1e-"][u-y][m-q][p-t][j-n][b-f][\x1f-#] +helloMaxLength: 13 diff --git a/langs/erlang.yaml b/langs/erlang.yaml new file mode 100644 index 0000000..28aca87 --- /dev/null +++ b/langs/erlang.yaml @@ -0,0 +1,38 @@ +id: "erlang" +aliases: + - "erl" +name: "Erlang" + +repl: | + erl +input: | + 123 * 234. + +main: "main.erl" +template: | + -module(main). + -export([main/0]). + + main() -> + io:fwrite("Hello, world!\n"). + +compile: | + erl -compile main +run: | + erl -s main main + +scope: + code: | + -export([x/0]). + x() -> 123 * 234. + + after: "-export([main/0])." + input: | + main:x(). + +lsp: + start: | + erlang_ls + +skip: + - lsp diff --git a/langs/euphoria.yaml b/langs/euphoria.yaml new file mode 100644 index 0000000..f758ace --- /dev/null +++ b/langs/euphoria.yaml @@ -0,0 +1,16 @@ +id: "euphoria" +aliases: + - "ex" + - "exw" + - "exu" + - "euc" + - "eui" + - "eub" +name: "Euphoria" + +main: "main.exu" +template: | + puts(1, "Hello, world!\n") + +run: | + exu main.exu diff --git a/langs/factor.yaml b/langs/factor.yaml new file mode 100644 index 0000000..1961bc8 --- /dev/null +++ b/langs/factor.yaml @@ -0,0 +1,28 @@ +id: "factor" +aliases: + - "fact" +name: "Factor" + +repl: | + factor-lang +input: | + 123 234 * + +main: ".factor-rc" +template: | + IN: main + USE: io + + "Hello, world!" print +createEmpty: "" + +run: | + factor-lang + +scope: + code: | + USE: math + : x ( -- x ) 123 234 * ; + input: | + USE: main + x diff --git a/langs/false.yaml b/langs/false.yaml new file mode 100644 index 0000000..1f56942 --- /dev/null +++ b/langs/false.yaml @@ -0,0 +1,11 @@ +id: "false" +aliases: + - "falselang" +name: "FALSE" + +main: "main.false" +template: | + "Hello, world!" + +run: | + false-lang main.false diff --git a/langs/fish.yaml b/langs/fish.yaml new file mode 100644 index 0000000..e062111 --- /dev/null +++ b/langs/fish.yaml @@ -0,0 +1,20 @@ +id: "fish" +name: "Fish" + +repl: | + SHELL=/usr/bin/fish fish +input: | + expr 123 \* 234 + +main: "main.fish" +template: | + echo "Hello, world!" + +run: | + SHELL=/usr/bin/fish fish -C "$(< main.fish)" + +scope: + code: | + set x (expr 123 \* 234) + input: | + echo $x diff --git a/langs/flex.yaml b/langs/flex.yaml new file mode 100644 index 0000000..c64d8f2 --- /dev/null +++ b/langs/flex.yaml @@ -0,0 +1,30 @@ +id: "flex" +aliases: + - "lex" +name: "Flex" + +main: "main.lex" +template: | + %{ + #include + %} + + %% + %% + + int yywrap() { + printf("Hello, world!\n"); + return 1; + } + + int main() { + yylex(); + return 0; + } + +compile: | + lex -o main.c main.lex && clang main.c -o main +run: | + echo 'Reading from stdin, ctrl+D to end input...' >&2 && ./main +helloInput: | + EOF diff --git a/langs/forth.yaml b/langs/forth.yaml new file mode 100644 index 0000000..7e7985b --- /dev/null +++ b/langs/forth.yaml @@ -0,0 +1,23 @@ +id: "forth" +aliases: + - "gforth" +name: "Forth" + +repl: | + gforth +input: | + 123 234 * . + +main: "main.fs" +template: | + ." Hello, world!" CR + +run: | + gforth main.fs + +scope: + code: | + VARIABLE X + 123 234 * X ! + input: | + X @ . diff --git a/langs/fortran.yaml b/langs/fortran.yaml new file mode 100644 index 0000000..287d45a --- /dev/null +++ b/langs/fortran.yaml @@ -0,0 +1,28 @@ +id: "fortran" +aliases: + - "f" + - "flang" + - "fortran77" + - "fortran90" + - "fortran95" + - "fortran2003" + - "fortran2008" +name: "FORTRAN" + +main: "main.f" +template: |2 + program hello + print *, "Hello, world!" + end program hello + +compile: | + flang main.f -o main +run: | + ./main + +lsp: + start: | + fortls + +skip: + - lsp diff --git a/langs/fsharp.yaml b/langs/fsharp.yaml new file mode 100644 index 0000000..b2afe3e --- /dev/null +++ b/langs/fsharp.yaml @@ -0,0 +1,25 @@ +id: "fsharp" +aliases: + - "fsharpi" + - "fsx" + - "fs" +name: "F#" +monacoLang: fsharp + +repl: | + fsharpi +input: | + 123 * 234 ;; + +main: "main.fsx" +template: | + printfn "Hello, world!" + +run: | + fsharpi --use:main.fsx + +scope: + code: | + let x = 123 * 234 + input: | + x ;; diff --git a/langs/gambas.yaml b/langs/gambas.yaml new file mode 100644 index 0000000..61864a0 --- /dev/null +++ b/langs/gambas.yaml @@ -0,0 +1,12 @@ +id: "gambas" +aliases: + - "gambasscript" + - "gbs" +name: "Gambas" + +main: "main.gbs" +template: | + Print "Hello, world!" + +run: | + gbs3 main.gbs diff --git a/langs/gap.yaml b/langs/gap.yaml new file mode 100644 index 0000000..ce18686 --- /dev/null +++ b/langs/gap.yaml @@ -0,0 +1,20 @@ +id: "gap" +name: "GAP" + +repl: | + gap +input: | + 123 * 234; + +main: "main.gap" +template: | + Print("Hello, world!\n"); + +run: | + gap main.gap + +scope: + code: | + x := 123 * 234; + input: | + 123 * 234; diff --git a/langs/gdb.yaml b/langs/gdb.yaml new file mode 100644 index 0000000..96a8e95 --- /dev/null +++ b/langs/gdb.yaml @@ -0,0 +1,20 @@ +id: "gdb" +name: "GDB" + +repl: | + gdb +input: | + p 123 * 234 + +main: "main.gdb" +template: | + p "Hello, world!" + +run: | + gdb -x main.gdb + +scope: + code: | + set $x = 123 * 234 + input: | + p $x diff --git a/langs/gel.yaml b/langs/gel.yaml new file mode 100644 index 0000000..eb9df28 --- /dev/null +++ b/langs/gel.yaml @@ -0,0 +1,19 @@ +id: "gel" +aliases: + - "genius" +name: "GEL" + +repl: | + genius + +main: ".geniusinit" +template: | + print("Hello, world!") +createEmpty: "" + +run: | + genius + +scope: + code: | + x = 123 * 234 diff --git a/langs/gnuplot.yaml b/langs/gnuplot.yaml new file mode 100644 index 0000000..4ece71c --- /dev/null +++ b/langs/gnuplot.yaml @@ -0,0 +1,20 @@ +id: "gnuplot" +name: "Gnuplot" + +repl: | + gnuplot +input: | + print 123 * 234 + +main: "main.gnuplot" +template: | + print "Hello, world!" + +run: | + gnuplot main.gnuplot - + +scope: + code: | + x = 123 * 234 + input: | + print x diff --git a/langs/go.yaml b/langs/go.yaml new file mode 100644 index 0000000..2e4e9d9 --- /dev/null +++ b/langs/go.yaml @@ -0,0 +1,39 @@ +id: "go" +aliases: + - "golang" +name: "Go" +monacoLang: go + +main: "main.go" +template: | + package main + + import "fmt" + + func main() { + fmt.Println("Hello, world!") + } + +compile: | + go build main.go +run: | + ./main + +format: + run: | + gofmt + input: | + package main + + import "fmt" + + func main() { + fmt.Println("Hello, world!"); + } + +lsp: + start: | + gopls + +skip: + - lsp diff --git a/langs/golfscript.yaml b/langs/golfscript.yaml new file mode 100644 index 0000000..f59573e --- /dev/null +++ b/langs/golfscript.yaml @@ -0,0 +1,11 @@ +id: "golfscript" +aliases: + - "golf" +name: "GolfScript" + +main: "main.gs" +template: | + 'Hello, world!' + +run: | + golfscript main.gs diff --git a/langs/grass.yaml b/langs/grass.yaml new file mode 100644 index 0000000..9ea5866 --- /dev/null +++ b/langs/grass.yaml @@ -0,0 +1,11 @@ +id: "grass" +name: "Grass" + +main: "main.grass" +template: | + wWWwwww + +run: | + grass < main.grass +hello: | + w diff --git a/langs/groovy.yaml b/langs/groovy.yaml new file mode 100644 index 0000000..dac556c --- /dev/null +++ b/langs/groovy.yaml @@ -0,0 +1,16 @@ +id: "groovy" +name: "Groovy" + +repl: | + JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh + +main: "main.groovy" +template: | + print "Hello, world!"; + +run: | + JAVA_OPTS="-Djava.util.prefs.systemRoot=$PWD/.java -Djava.util.prefs.userRoot=$PWD/.java/.userPrefs" groovysh main.groovy + +scope: + code: | + x = 123 * 234; diff --git a/langs/hack.yaml b/langs/hack.yaml new file mode 100644 index 0000000..f502762 --- /dev/null +++ b/langs/hack.yaml @@ -0,0 +1,30 @@ +id: "hack" +aliases: + - "hhvm" +name: "Hack" + +repl: | + hhvm -a +input: | + print 123 * 234 + +main: "main.hack" +template: | + <<__EntryPoint>> + function main(): void { + echo "Hello, world!\n"; + } + +run: | + echo "Type 'r' at the debugger prompt to run the code" && hhvm -a main.hack +helloInput: | + r + +scope: + code: | + function x() : int { + return 123 * 234; + } + input: | + r + p x() diff --git a/langs/haskell.yaml b/langs/haskell.yaml new file mode 100644 index 0000000..eabd0ad --- /dev/null +++ b/langs/haskell.yaml @@ -0,0 +1,44 @@ +id: "haskell" +aliases: + - "ghc" + - "ghci" + - "hs" +name: "Haskell" + +repl: | + rm -f .ghci && ghci + +main: "Main.hs" +template: | + module Main where + + main :: IO () + main = putStrLn "Hello, world!" + +run: | + (echo ':load Main' && echo 'main') > .ghci && ghci + +scope: + code: | + x = 123 * 234 + +format: + run: | + brittany + input: | + module Main where + + main :: IO () + main = + putStrLn "Hello, world!" + +lsp: + setup: | + cp /opt/haskell/hie.yaml hie.yaml + start: | + HIE_HOOGLE_DATABASE=/opt/haskell/hoogle.hoo hie --lsp + init: + languageServerHaskell: {} + +skip: + - lsp diff --git a/langs/haxe.yaml b/langs/haxe.yaml new file mode 100644 index 0000000..e17a9b4 --- /dev/null +++ b/langs/haxe.yaml @@ -0,0 +1,17 @@ +id: "haxe" +aliases: + - "hx" +name: "Haxe" + +main: "Main.hx" +template: | + class Main { + static public function main() { + trace("Hello, world!"); + } + } + +compile: | + haxe --main Main --js Main.js +run: | + node Main.js diff --git a/langs/hcl.yaml b/langs/hcl.yaml new file mode 100644 index 0000000..3a47797 --- /dev/null +++ b/langs/hcl.yaml @@ -0,0 +1,16 @@ +id: "hcl" +aliases: + - "tf" + - "terraform" + - "hashicorp" + - "hc" +name: "HCL" + +main: "main.hcl" +template: | + output = "Hello, world!" + +compile: | + cat main.hcl | yj -cj > main.json +run: | + cat main.json | jq . diff --git a/langs/hexagony.yaml b/langs/hexagony.yaml new file mode 100644 index 0000000..1936463 --- /dev/null +++ b/langs/hexagony.yaml @@ -0,0 +1,18 @@ +id: "hexagony" +aliases: + - "hxg" + - "hex" +name: "Hexagony" + +main: "main.hxg" +template: |2 + H ; e ; + l ; d ; * + ; r ; o ; w + l ; ; o ; * 4 + 3 3 ; @ . > + ; 2 3 < \ + 4 ; * / + +run: | + /opt/hexagony/interpreter.rb main.hxg diff --git a/langs/hmmm.yaml b/langs/hmmm.yaml new file mode 100644 index 0000000..8d2eb6a --- /dev/null +++ b/langs/hmmm.yaml @@ -0,0 +1,53 @@ +id: "hmmm" +name: "HMMM" + +main: "main.hmmm" +template: |2 + 0 setn r1, 72 + 1 write r1 + 2 setn r1, 101 + 3 write r1 + 4 setn r1, 108 + 5 write r1 + 6 setn r1, 108 + 7 write r1 + 8 setn r1, 111 + 9 write r1 + 10 setn r1, 44 + 11 write r1 + 12 setn r1, 32 + 13 write r1 + 14 setn r1, 119 + 15 write r1 + 16 setn r1, 111 + 17 write r1 + 18 setn r1, 114 + 19 write r1 + 20 setn r1, 108 + 21 write r1 + 22 setn r1, 100 + 23 write r1 + 24 setn r1, 33 + 25 write r1 + 26 setn r1, 10 + 27 write r1 + 28 halt + +run: | + hmmm main.hmmm +hello: | + 72 + 101 + 108 + 108 + 111 + 44 + 32 + 119 + 111 + 114 + 108 + 100 + 33 + 10 + diff --git a/langs/hy.yaml b/langs/hy.yaml new file mode 100644 index 0000000..061f003 --- /dev/null +++ b/langs/hy.yaml @@ -0,0 +1,18 @@ +id: "hy" +name: "Hy" + +repl: | + hy +input: | + (* 123 234) + +main: "main.hy" +template: | + (print "Hello, world!") + +run: | + hy -i main.hy + +scope: + code: | + (setv x (* 123 234)) diff --git a/langs/icon.yaml b/langs/icon.yaml new file mode 100644 index 0000000..d1f609c --- /dev/null +++ b/langs/icon.yaml @@ -0,0 +1,17 @@ +id: "icon" +aliases: + - "icn" + - "icont" + - "iconx" +name: "Icon" + +main: "main.icn" +template: | + procedure main () + write("Hello, world!") + end + +compile: | + icont main.icn +run: | + ./main diff --git a/langs/idris.yaml b/langs/idris.yaml new file mode 100644 index 0000000..47f72d7 --- /dev/null +++ b/langs/idris.yaml @@ -0,0 +1,23 @@ +id: "idris" +aliases: + - "idr" + - "idris2" +name: "Idris" + +repl: | + rm -f .idris/repl/init; idris2 + +main: "Main.idr" +template: | + module Main + + main : IO () + main = putStrLn "Hello, world!" + +run: | + mkdir -p .idris/repl; echo ':exec main' > .idris/repl/init; idris2 Main.idr -x main; idris2 Main.idr + +scope: + code: | + x : Int + x = 123 * 234 diff --git a/langs/ink.yaml b/langs/ink.yaml new file mode 100644 index 0000000..5c77894 --- /dev/null +++ b/langs/ink.yaml @@ -0,0 +1,17 @@ +id: "ink" +name: "Ink" + +repl: | + ink + +main: "main.ink" +template: | + std := load('../../../opt/ink/std') + str := load('../../../opt/ink/str') + + log := std.log + + log('Hello, world!') + +run: | + ink main.ink; ink diff --git a/langs/intercal.yaml b/langs/intercal.yaml new file mode 100644 index 0000000..376b1cb --- /dev/null +++ b/langs/intercal.yaml @@ -0,0 +1,30 @@ +id: "intercal" +aliases: + - "i" + - "ick" +name: "INTERCAL" + +main: "main.i" +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 + +compile: | + ick -b main.i +run: | + ./main diff --git a/langs/ioke.yaml b/langs/ioke.yaml new file mode 100644 index 0000000..1abbe45 --- /dev/null +++ b/langs/ioke.yaml @@ -0,0 +1,14 @@ +id: "ioke" +aliases: + - "ik" +name: "Ioke" + +repl: | + JAVA_OPTS="-Duser.home=$PWD" ioke + +main: "main.ik" +template: | + "Hello, world!" println + +run: | + JAVA_OPTS="-Duser.home=$PWD" ioke main.ik; JAVA_OPTS="-Duser.home=$PWD" ioke diff --git a/langs/j.yaml b/langs/j.yaml new file mode 100644 index 0000000..c59df21 --- /dev/null +++ b/langs/j.yaml @@ -0,0 +1,15 @@ +id: "j" +aliases: + - "jconsole" + - "ijconsole" +name: "J" + +repl: | + echo 'ijconsole:' && ijconsole + +main: "main.ijs" +template: | + echo 'Hello, world!' + +run: | + ijconsole main.ijs diff --git a/langs/jasmin.yaml b/langs/jasmin.yaml new file mode 100644 index 0000000..6faeca4 --- /dev/null +++ b/langs/jasmin.yaml @@ -0,0 +1,26 @@ +id: "jasmin" +name: "Jasmin" + +main: "Main.j" +template: | + .class public Main + .super java/lang/Object + + .method public ()V + aload_0 + invokenonvirtual java/lang/Object/()V + return + .end method + + .method public static main([Ljava/lang/String;)V + .limit stack 2 + getstatic java/lang/System/out Ljava/io/PrintStream; + ldc "Hello, world!" + invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V + return + .end method + +compile: | + jasmin Main.j +run: | + java Main diff --git a/langs/java.yaml b/langs/java.yaml new file mode 100644 index 0000000..9d677da --- /dev/null +++ b/langs/java.yaml @@ -0,0 +1,146 @@ +id: "java" +aliases: + - "javac" +name: "Java" +monacoLang: java + +main: "Main.java" +template: | + public class Main { + public static void main(String[] args) { + System.out.println("Hello, world!"); + } + } + +compile: | + javac Main.java +run: | + java Main + +format: + run: | + clang-format --style="{BasedOnStyle: llvm, IndentWidth: 4}" --assume-filename=Format.java + input: | + public class Main + { + public static void main(String[] args) + { + System.out.println("Hello, world!"); + } + } + +lsp: + setup: | + rm -rf jdt && cp -RT /opt/jdt/config_linux jdt + start: | + java -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Dlog.level=ALL -noverify -Xmx1G -jar /opt/jdt/plugins/org.eclipse.equinox.launcher_*.jar -configuration "$PWD/jdt" -data "$PWD" --add-modules=ALL-SYSTEM --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED + init: + bundles: + - /opt/jdt/bundles/com.microsoft.java.test.plugin-0.19.0.jar + - /opt/jdt/bundles/com.microsoft.jdtls.ext.core-0.5.1.jar + - /opt/jdt/bundles/dg.jdt.ls.decompiler.cfr-0.0.2-201802221740.jar + - /opt/jdt/bundles/dg.jdt.ls.decompiler.common-0.0.2-201802221740.jar + - /opt/jdt/bundles/dg.jdt.ls.decompiler.fernflower-0.0.2-201802221740.jar + - /opt/jdt/bundles/dg.jdt.ls.decompiler.procyon-0.0.2-201802221740.jar + - /opt/jdt/bundles/io.projectreactor.reactor-core.jar + - /opt/jdt/bundles/java.debug.plugin.jar + - /opt/jdt/bundles/jdt-ls-commons.jar + - /opt/jdt/bundles/jdt-ls-extension.jar + - /opt/jdt/bundles/org.reactivestreams.reactive-streams.jar + extendedClientCapabilities: + advancedExtractRefactoringSupport: true + advancedGenerateAccessorsSupport: true + advancedOrganizeImportsSupport: true + classFileContentsSupport: true + generateConstructorsPromptSupport: true + generateToStringPromptSupport: true + hashCodeEqualsPromptSupport: true + moveRefactoringSupport: true + overrideMethodsPromptSupport: true + progressReportProvider: true + settings: + java: + autobuild: + enabled: true + codeGeneration: + generateComments: false + hashCodeEquals: + useInstanceof: false + useJava7Objects: false + toString: + codeStyle: STRING_CONCATENATION + limitElements: 0 + listArrayContents: true + skipNullValues: false + template: ${object.className} [${member.name()}=${member.value}, ${otherMembers}] + useBlocks: false + completion: + enabled: true + favoriteStaticMembers: + - org.junit.Assert.* + - org.junit.Assume.* + - org.junit.jupiter.api.Assertions.* + - org.junit.jupiter.api.Assumptions.* + - org.junit.jupiter.api.DynamicContainer.* + - org.junit.jupiter.api.DynamicTest.* + - org.mockito.Mockito.* + - org.mockito.ArgumentMatchers.* + - org.mockito.Answers.* + filteredTypes: + - java.awt.* + - com.sun.* + guessMethodArguments: true + importOrder: + - java + - javax + - com + - org + overwrite: true + configuration: + checkProjectSettingsExclusions: true + updateBuildConfiguration: automatic + dependency: + packagePresentation: flat + errors: + incompleteClasspath: + severity: warning + foldingRange: + enabled: true + format: + comments: + enabled: true + enabled: true + onType: + enabled: true + implementationsCodeLens: + enabled: false + import: + exclusions: + - '**/node_modules/**' + - '**/.metadata/**' + - '**/archetype-resources/**' + - '**/META-INF/maven/**' + gradle: + enabled: true + wrapper: + enabled: true + maven: + enabled: true + maven: + downloadSources: false + maxConcurrentBuilds: 1 + progressReports: + enabled: true + referencesCodeLens: + enabled: false + saveActions: + organizeImports: false + selection: + enabled: true + signatureHelp: + enabled: true + trace: + server: "off" + +skip: + - lsp diff --git a/langs/javascript.yaml b/langs/javascript.yaml new file mode 100644 index 0000000..b98ea6a --- /dev/null +++ b/langs/javascript.yaml @@ -0,0 +1,41 @@ +id: "javascript" +aliases: + - "node" + - "js" + - "web" + - "jsx" + - "v8" + - "closure" + - "nodejs" +name: "Node.js" +monacoLang: javascript + +repl: | + node + +main: "main.js" +template: | + console.log("Hello, world!"); + +run: | + node -e "$(< main.js)" -i + +scope: + code: | + let x = 123 * 234; + +format: + run: | + prettier --no-config --stdin-filepath=format.js + input: | + console.log('Hello, world!'); + +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) | .[]' diff --git a/langs/jq.yaml b/langs/jq.yaml new file mode 100644 index 0000000..ed32ee4 --- /dev/null +++ b/langs/jq.yaml @@ -0,0 +1,20 @@ +id: "jq" +name: "jq" + +repl: | + echo 'Reading from stdin...' >&2 && while true; do jq .; done +input: | + {"foo":"bar"} +output: | + "foo": "bar" + +main: "main.jq" +template: | + "Hello, world!" + +run: | + echo 'Reading from stdin...' >&2 && while true; do jq "$(< main.jq)"; done +helloInput: | + {} +runReplOutput: | + "Hello, world!" diff --git a/langs/jsf.yaml b/langs/jsf.yaml new file mode 100644 index 0000000..a4c9c28 --- /dev/null +++ b/langs/jsf.yaml @@ -0,0 +1,141 @@ +id: "jsf" +name: "JSF***" + +main: "main.js" +template: | + [][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]][([]+[][(![] + +[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+( + !![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![] + +[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!! + []]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(! + ![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!! + []+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[ + ])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+! + ![]]+([][[]]+[])[+!![]]+(![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![] + ]+(!![]+[])[+[]]])[!![]+!![]+[+[]]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![ + ]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!! + []+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[ + ])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(! + ![]+[])[+[]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]])()[(![ + ]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![ + ]+[])[+[]]])[+!![]+[+[]]]+(+[]+[![]]+([]+[])[([]+[][(![]+[])[+[]]+(![]+[])[!![]+ + !![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(! + []+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![ + ]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([] + +[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![] + +!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]] + +(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]])[!![]+!![]+[+[]]]]([][(![]+[])[ + +[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]][([]+[][(![]+[])[+[]]+(! + []+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![] + +[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][ + []]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+ + [])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]] + ])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![ + ]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(! + ![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]] + +[])[+!![]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![ + ]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([] + +[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![] + +!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]] + ])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+( + ![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![ + ]]]+(![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]][([ + ]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![ + ]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[] + ]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![ + ]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[ + +!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(! + []+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]] + ]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!! + []+[])[+!![]]+([][[]]+[])[+!![]]+(!![]+[])[(![]+[])[!![]+!![]+!![]]+([][[]]+[])[ + +[]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+ + !![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+! + ![]]]()+[])[!![]+!![]]]()[+!![]+[+[]]]+![]+(!![]+[])[(![]+[])[!![]+!![]+!![]]+([ + ][[]]+[])[+[]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+( + !![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[! + ![]+!![]+!![]]]()+[])[!![]+!![]]]()[+!![]+[+[]]])()[([]+[][(![]+[])[+[]]+(![]+[] + )[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[ + +[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[ + ])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+ + []]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!! + []+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[]) + [+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]](([]+[])[([![]]+[][[]])[+ + !![]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!![]]+(![]+[])[!![]+!![]]+([![]]+[][[]])[+! + ![]+[+[]]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[ + ]]])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()))[+!![]+[+[]]]+(+!![])+(+!![])+ + (+[])+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[ + +!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(! + []+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]] + +(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!! + []+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[] + )[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]])() + +(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]+(!![]+[][(![] + +[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][ + (![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]][([]+[][(![]+[] + )[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(![] + +[])[+!![]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]](![]+[])+[])[+!![]]+(![]+[][ + (![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+[+[ + ]]]+(+(+!![]+[+!![]]+(+!![])+(!![]+!![])))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]] + +(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([]+[])[([]+[ + ][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+! + ![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]]) + [+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[ + ])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!! + []]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+ + [])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]][( + [][[]]+[])[+!![]]+(![]+[])[+!![]]+([]+(+[])[([]+[][(![]+[])[+[]]+(![]+[])[!![]+! + ![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![ + ]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![] + ]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+ + [][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+ + !![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+ + (!![]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]])[+!![]+[+!![]]]+(!![]+[])[!![]+! + ![]+!![]]]](!![]+!![]+!![]+[!![]+!![]+!![]+!![]])+(!![]+[])[+!![]]+(![]+[])[!![] + +!![]]+([][[]]+[])[!![]+!![]]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![ + ]]+(!![]+[])[+[]]][([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![ + ]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[]) + [+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![] + ]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[]) + [!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![ + ]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+ + []]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]] + +([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([]+[])[(![]+[])[+[]]+(!![ + ]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+ + []]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+ + (![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[]) + [!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(! + ![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+ + [+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+(![]+[][(![]+[])[+[]]+(![]+[])[!![ + ]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]][([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]] + +(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[] + )[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(! + []+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][( + ![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![] + ]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![ + ]+[])[+[]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![] + +!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(!![] + +[])[(![]+[])[!![]+!![]+!![]]+([][[]]+[])[+[]]+([][(!![]+[])[!![]+!![]+!![]]+([] + [[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![ + ]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]]()[+!![]+[+[]]] + +![]+(!![]+[])[(![]+[])[!![]+!![]+!![]]+([][[]]+[])[+[]]+([][(!![]+[])[!![]+!![] + +!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[ + +[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]]()[+! + ![]+[+[]]])()[([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[]) + [+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![ + ]]+(!![]+[])[+[]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!! + []+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![] + +!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][ + (![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+ + (!![]+[])[+!![]]](([]+[])[([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+! + ![]]+(![]+[])[!![]+!![]]+([![]]+[][[]])[+!![]+[+[]]]+([]+[][(![]+[])[+[]]+(![]+[ + ])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(![]+[])[!![]+!![ + ]+!![]]]()))[+!![]+[+[]]]+(!![]+!![]+!![]+!![])+(+!![])+([]+[])[(![]+[])[+[]]+(! + ![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+ + [+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+(![]+[])[!![]+!![] + ]+(![]+[])[+!![]]+(!![]+[])[+[]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+(![]+[ + ])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+ + (!![]+[][(![]+[])[+[]]+(![]+[])[!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]])[+!![ + ]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]])()) + +run: | + sed 's/[^[]()!+]//g' main.js | node diff --git a/langs/julia.yaml b/langs/julia.yaml new file mode 100644 index 0000000..3723ca7 --- /dev/null +++ b/langs/julia.yaml @@ -0,0 +1,26 @@ +id: "julia" +aliases: + - "jl" +name: "Julia" + +repl: | + julia + +main: "main.jl" +template: | + println("Hello, world!") + +run: | + julia -L main.jl + +scope: + code: | + x = 123 * 234 + +lsp: + start: | + JULIA_DEPOT_PATH=:/opt/julia julia -e 'using LanguageServer; run(LanguageServerInstance(stdin, stdout))' + config: null + +skip: + - lsp diff --git a/langs/kalyn.yaml b/langs/kalyn.yaml new file mode 100644 index 0000000..3be5e96 --- /dev/null +++ b/langs/kalyn.yaml @@ -0,0 +1,14 @@ +id: "kalyn" +name: "Kalyn" + +main: "src-kalyn/Main.kalyn" +template: | + (import "/opt/kalyn/Stdlib.kalyn") + + (public def main (IO Empty) + (print "Hello, world!\n")) + +compile: | + kalyn +run: | + out-kalyn/Main diff --git a/langs/kitten.yaml b/langs/kitten.yaml new file mode 100644 index 0000000..76c6e05 --- /dev/null +++ b/langs/kitten.yaml @@ -0,0 +1,16 @@ +id: "kitten" +aliases: + - "ktn" +name: "Kitten" + +repl: | + kitten +input: | + (123 * 234) say + +main: "main.ktn" +template: | + "Hello, world!" say + +run: | + kitten main.ktn; kitten diff --git a/langs/kotlin.yaml b/langs/kotlin.yaml new file mode 100644 index 0000000..305a184 --- /dev/null +++ b/langs/kotlin.yaml @@ -0,0 +1,16 @@ +id: "kotlin" +aliases: + - "kts" + - "kotlinc" +name: "Kotlin" +monacoLang: kotlin + +repl: | + JAVA_OPTS="-Duser.home=$PWD" kotlinc + +main: "main.kts" +template: | + println("Hello, world!") + +run: | + JAVA_OPTS="-Duser.home=$PWD" kotlinc -script main.kts; kotlinc diff --git a/langs/ksh.yaml b/langs/ksh.yaml new file mode 100644 index 0000000..8819c8b --- /dev/null +++ b/langs/ksh.yaml @@ -0,0 +1,24 @@ +id: "ksh" +aliases: + - "kshell" +name: "Ksh" +monacoLang: shell + +repl: | + SHELL=/usr/bin/ksh HOME="$PWD" ksh +input: | + expr 123 * 234 + +main: ".kshrc" +template: | + echo "Hello, world!" +createEmpty: "" + +run: | + SHELL=/usr/bin/ksh HOME="$PWD" ksh + +scope: + code: | + x="$(expr 123 * 234)" + input: | + echo "$x" diff --git a/langs/lazyk.yaml b/langs/lazyk.yaml new file mode 100644 index 0000000..30dc2d2 --- /dev/null +++ b/langs/lazyk.yaml @@ -0,0 +1,15 @@ +id: "lazyk" +name: "Lazy K" + +main: "main.lazy" +template: | + K(S(S(S(S(S(S(SI`S`K(S(S`KS(S`KK(S`KS(S(S`KS(S`K`S(SI`KK)(S`KKK)))`K`K(SI`K0)))) + )`K(S`K`S(S`KS(S`K`SI(S`KK(S`K(S(S(SSS)(SS(SSI(SS0))))S(S`KSK))(SI`K(S`KSK)))))) + (S`KKK)))(SII)`K(SII(SII(S(S`KSK)I))))(S`K`S(S(S(SSS)(SS0))S)(SSSS))(SS(SS0))(S( + SI(SS0))(SS(SS(SS(SS`S(SSS)(SS0))))))(SS(SS(SS(SSSSSS(SS0))))))`S(S(S(SS(SS0))(S + S0))S))`K(SS0))`K(SS(SS(S(SSS)(SS(SS0))))))I(SSSSSS(SS0)))I(S(SI(SS0))(SS(SS(SS( + SS`S(SSS)(SS0))))))(SS(S(S(S(SSS)(SS0))S)(SSSS(SS(SS0)))))(S(SSS)(S(SSS)(SS0)))` + K0) + +run: | + lazyk -u main.lazy diff --git a/langs/less.yaml b/langs/less.yaml new file mode 100644 index 0000000..adb8fde --- /dev/null +++ b/langs/less.yaml @@ -0,0 +1,22 @@ +id: "less" +aliases: + - "lessc" +name: "Less" +monacoLang: less + +main: "main.less" +template: | + body:before { + content: "Hello, world!"; + } + +run: | + lessc main.less + +format: + run: | + prettier --no-config --stdin-filepath=format.less + input: | + body:before { + content: "Hello, world!"; + } diff --git a/langs/limbo.yaml b/langs/limbo.yaml new file mode 100644 index 0000000..32422f1 --- /dev/null +++ b/langs/limbo.yaml @@ -0,0 +1,30 @@ +id: "limbo" +aliases: + - "inferno" + - "b" +name: "Limbo" + +setup: | + ln -s /usr/local/inferno/* ./ + +main: "riju/main.b" +template: | + implement Cmd; + + include "sys.m"; + include "draw.m"; + + Cmd : module { + init : fn (ctxt : ref Draw->Context, args : list of string); + }; + + init(nil : ref Draw->Context, nil : list of string) + { + sys := load Sys Sys->PATH; + sys->print("Hello, world!\n"); + } + +compile: | + limbo -o riju/main.dis riju/main.b +run: | + emu -r . riju/main.dis diff --git a/langs/lisaac.yaml b/langs/lisaac.yaml new file mode 100644 index 0000000..f46c37a --- /dev/null +++ b/langs/lisaac.yaml @@ -0,0 +1,18 @@ +id: "lisaac" +name: "Lisaac" + +main: "main.li" +template: | + Section Header + + name := MAIN; + + Section Public + - main <- + ( + "Hello, world!\n".print; + ); + +compile: | + lisaac -gcc -Wno-implicit-function-declaration main.li +run: | + ./main diff --git a/langs/livescript.yaml b/langs/livescript.yaml new file mode 100644 index 0000000..5bc58f3 --- /dev/null +++ b/langs/livescript.yaml @@ -0,0 +1,18 @@ +id: "livescript" +aliases: + - "lsc" + - "ls" +name: "LiveScript" + +repl: | + lsc +input: | + DELAY: 1 + 123 * 234 + +main: "main.ls" +template: | + console.log "Hello, world!" + +run: | + lsc -r ./main.ls diff --git a/langs/llvm.yaml b/langs/llvm.yaml new file mode 100644 index 0000000..e064cb9 --- /dev/null +++ b/langs/llvm.yaml @@ -0,0 +1,20 @@ +id: "llvm" +name: "LLVM" +monacoLang: shell + +main: "main.ll" +template: | + @.str = private unnamed_addr constant [13 x i8] c"Hello, world!" + + declare i32 @puts(i8* nocapture) nounwind + + define i32 @main() { + %cast210 = getelementptr [13 x i8],[13 x i8]* @.str, i64 0, i64 0 + call i32 @puts(i8* %cast210) + ret i32 0 + } + +compile: | + clang -Wno-override-module main.ll -o main +run: | + ./main diff --git a/langs/lolcode.yaml b/langs/lolcode.yaml new file mode 100644 index 0000000..76f511f --- /dev/null +++ b/langs/lolcode.yaml @@ -0,0 +1,14 @@ +id: "lolcode" +aliases: + - "lol" + - "lci" +name: "LOLCODE" + +main: "main.lol" +template: | + HAI 1.2 + VISIBLE "Hello, world!" + KTHXBYE + +run: | + lci main.lol diff --git a/langs/lua.yaml b/langs/lua.yaml new file mode 100644 index 0000000..736c1ee --- /dev/null +++ b/langs/lua.yaml @@ -0,0 +1,24 @@ +id: "lua" +name: "Lua" +monacoLang: lua + +repl: | + lua + +main: "main.lua" +template: | + print("Hello, world!") + +run: | + lua -i main.lua + +scope: + code: | + x = 123 * 234 + +lsp: + start: | + java -cp /usr/lib/EmmyLua-LS.jar com.tang.vscode.MainKt + +skip: + - lsp diff --git a/langs/m4.yaml b/langs/m4.yaml new file mode 100644 index 0000000..7dc5d40 --- /dev/null +++ b/langs/m4.yaml @@ -0,0 +1,18 @@ +id: "m4" +name: "m4" + +repl: | + echo 'Reading from stdin...' >&2; m4 +input: | + eval(123 * 234) + +main: "main.m4" +template: | + errprint(`Hello, world!') + +run: | + echo 'Reading from stdin...' >&2; m4 main.m4 - + +scope: + code: | + define(`x', eval(123 * 234)) diff --git a/langs/make.yaml b/langs/make.yaml new file mode 100644 index 0000000..7e2259e --- /dev/null +++ b/langs/make.yaml @@ -0,0 +1,18 @@ +id: "make" +aliases: + - "gmake" + - "makefile" + - "gmakefile" + - "gnumakefile" + - "gnumake" + - "bsdmake" +name: "Make" + +main: "Makefile" +template: | + .PHONY: all + all: + @echo "Hello, world!" + +run: | + make diff --git a/langs/malbolge.yaml b/langs/malbolge.yaml new file mode 100644 index 0000000..afc24d1 --- /dev/null +++ b/langs/malbolge.yaml @@ -0,0 +1,13 @@ +id: "malbolge" +aliases: + - "mb" +name: "Malbolge" + +main: "main.mb" +template: |2 + (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc + +run: | + malbolge main.mb +hello: | + Hello World! diff --git a/langs/mariadb.yaml b/langs/mariadb.yaml new file mode 100644 index 0000000..bd47473 --- /dev/null +++ b/langs/mariadb.yaml @@ -0,0 +1,23 @@ +id: "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 &) && until [[ -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" +input: | + SELECT 123 * 234; + +main: "main.sql" +template: | + SELECT 'Hello, world!'; + +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 &) && until [[ -e socket ]]; do sleep 0.01; done && (mysql --socket="$PWD/socket" < main.sql; mysql --socket="$PWD/socket") + +lsp: + start: | + sqls + +skip: + - lsp diff --git a/langs/markdown.yaml b/langs/markdown.yaml new file mode 100644 index 0000000..98cb564 --- /dev/null +++ b/langs/markdown.yaml @@ -0,0 +1,29 @@ +id: "markdown" +aliases: + - "mdown" + - "mkdn" + - "md" + - "mkd" + - "mdwn" + - "mdtxt" + - "mdtext" + - "text" + - "rmd" +name: "Markdown" +monacoLang: markdown + +main: "main.md" +template: | + Hello, world! + +compile: | + pandoc main.md -o main.html +run: | + prettier --no-config main.html + +format: + run: | + prettier --no-config --stdin-filepath=format.md + input: | + Hello, world! + diff --git a/langs/mediawiki.yaml b/langs/mediawiki.yaml new file mode 100644 index 0000000..8771ddc --- /dev/null +++ b/langs/mediawiki.yaml @@ -0,0 +1,13 @@ +id: "mediawiki" +aliases: + - "media" +name: "MediaWiki" + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f mediawiki -o main.html +run: | + prettier --no-config main.html diff --git a/langs/minizinc.yaml b/langs/minizinc.yaml new file mode 100644 index 0000000..0a9cb08 --- /dev/null +++ b/langs/minizinc.yaml @@ -0,0 +1,13 @@ +id: "minizinc" +aliases: + - "mzn" +name: "MiniZinc" + +main: "main.mzn" +template: | + solve satisfy; + + output ["Hello, world!\n"]; + +run: | + minizinc --solver Gecode main.mzn diff --git a/langs/mips.yaml b/langs/mips.yaml new file mode 100644 index 0000000..a527a51 --- /dev/null +++ b/langs/mips.yaml @@ -0,0 +1,27 @@ +id: "mips" +aliases: + - "mips64" +name: "MIPS" +monacoLang: mips + +main: "main.S" +template: |2 + .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" + +compile: | + mips64-linux-gnuabi64-gcc main.S -o main -static +run: | + qemu-mips64-static main diff --git a/langs/mongodb.yaml b/langs/mongodb.yaml new file mode 100644 index 0000000..045c732 --- /dev/null +++ b/langs/mongodb.yaml @@ -0,0 +1,15 @@ +id: "mongodb" +aliases: + - "mongo" + - "mongod" +name: "MongoDB" + +repl: | + while ps -u "$(id -un)" -o comm | grep -q mongod; do sleep 0.01; done && rm -rf data && mkdir data && (mongod --dbpath=data --unixSocketPrefix="$PWD" --bind_ip=, &) && until mongo --host "$PWD/mongodb-27017.sock" --eval ' ' &>/dev/null; do sleep 0.01; done && mongo --host "$PWD/mongodb-27017.sock" + +main: "main.js" +template: | + print("Hello, world!") + +run: | + while ps -u "$(id -un)" -o comm | grep -q mongod; do sleep 0.01; done && rm -rf data && mkdir data && (mongod --dbpath=data --unixSocketPrefix="$PWD" --bind_ip=, &) && until mongo --host "$PWD/mongodb-27017.sock" --eval ' ' &>/dev/null; do sleep 0.01; done && mongo --host "$PWD/mongodb-27017.sock" --shell main.js diff --git a/langs/mumps.yaml b/langs/mumps.yaml new file mode 100644 index 0000000..38d6b23 --- /dev/null +++ b/langs/mumps.yaml @@ -0,0 +1,15 @@ +id: "mumps" +aliases: + - "mlang" + - "gtm" + - "fisgtm" +name: "MUMPS" + +main: "main.m" +template: | + main() + write "Hello, world!",! + quit + +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 diff --git a/langs/mysql.yaml b/langs/mysql.yaml new file mode 100644 index 0000000..78e8bae --- /dev/null +++ b/langs/mysql.yaml @@ -0,0 +1,23 @@ +id: "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 &) && until [[ -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" -u root +input: | + SELECT 123 * 234; + +main: "main.sql" +template: | + SELECT 'Hello, world!'; + +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 &) && until [[ -e socket ]]; do sleep 0.01; done && (mysql --socket="$PWD/socket" -u root < main.sql; mysql --socket="$PWD/socket" -u root) + +lsp: + start: | + sqls + +skip: + - lsp diff --git a/langs/neko.yaml b/langs/neko.yaml new file mode 100644 index 0000000..0244023 --- /dev/null +++ b/langs/neko.yaml @@ -0,0 +1,13 @@ +id: "neko" +aliases: + - "nekoc" +name: "Neko" + +main: "main.neko" +template: | + $print("Hello, world!\n"); + +compile: | + nekoc main.neko +run: | + neko main diff --git a/langs/nickle.yaml b/langs/nickle.yaml new file mode 100644 index 0000000..fcd02d0 --- /dev/null +++ b/langs/nickle.yaml @@ -0,0 +1,19 @@ +id: "nickle" +name: "Nickle" + +repl: | + nickle + +main: "main.nickle" +template: | + printf("Hello, world!\n"); + +run: | + nickle main.nickle; echo "Type 'load \"main.nickle\"' at the repl prompt to bring variables into scope" >&2; nickle + +scope: + code: | + x = 123 * 234; + input: | + load "main.nickle" + x diff --git a/langs/nim.yaml b/langs/nim.yaml new file mode 100644 index 0000000..1a43f0b --- /dev/null +++ b/langs/nim.yaml @@ -0,0 +1,11 @@ +id: "nim" +name: "Nim" + +main: "main.nim" +template: | + echo "Hello, world!" + +compile: | + nim compile main.nim +run: | + ./main diff --git a/langs/oberon.yaml b/langs/oberon.yaml new file mode 100644 index 0000000..0aad77f --- /dev/null +++ b/langs/oberon.yaml @@ -0,0 +1,20 @@ +id: "oberon" +aliases: + - "obn" +name: "Oberon" + +main: "Main.obn" +template: | + MODULE Main; + + IMPORT Out; + + BEGIN + Out.String("Hello, world!"); + Out.Ln; + END Main. + +compile: | + obnc Main.obn -o main +run: | + ./main diff --git a/langs/objectivec++.yaml b/langs/objectivec++.yaml new file mode 100644 index 0000000..90eef84 --- /dev/null +++ b/langs/objectivec++.yaml @@ -0,0 +1,44 @@ +id: "objectivec++" +aliases: + - "objc++" + - "objcpp" + - "objectivecpp" +name: "Objective-C++" + +main: "main.mm" +template: | + #import + + int main() { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"Hello, world!"); + [pool drain]; + return 0; + } + +compile: | + gcc $(gnustep-config --objc-flags) main.mm $(gnustep-config --base-libs) -o main +run: | + ./main + +format: + run: | + clang-format --assume-filename=format.m + input: | + #import + + int main() { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"Hello, world!"); + [pool drain]; + return 0; + } + +lsp: + setup: | + (gnustep-config --objc-flags && gnustep-config --base-libs) | sed -E 's/\s+/\n/g' > compile_flags.txt + start: | + clangd + +skip: + - lsp diff --git a/langs/objectivec.yaml b/langs/objectivec.yaml new file mode 100644 index 0000000..59a3759 --- /dev/null +++ b/langs/objectivec.yaml @@ -0,0 +1,44 @@ +id: "objectivec" +aliases: + - "objc" + - "gnustep" +name: "Objective-C" +monacoLang: objective-c + +main: "main.m" +template: | + #import + + int main() { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"Hello, world!"); + [pool drain]; + return 0; + } + +compile: | + gcc $(gnustep-config --objc-flags) main.m $(gnustep-config --base-libs) -o main +run: | + ./main + +format: + run: | + clang-format --assume-filename=format.m + input: | + #import + + int main() { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"Hello, world!"); + [pool drain]; + return 0; + } + +lsp: + setup: | + (gnustep-config --objc-flags && gnustep-config --base-libs) | sed -E 's/\s+/\n/g' > compile_flags.txt + start: | + clangd + +skip: + - lsp diff --git a/langs/ocaml.yaml b/langs/ocaml.yaml new file mode 100644 index 0000000..fcb3389 --- /dev/null +++ b/langs/ocaml.yaml @@ -0,0 +1,36 @@ +id: "ocaml" +name: "OCaml" + +repl: | + ocaml +input: | + 123 * 234 ;; + +main: "main.ml" +template: | + ;; + print_string "Hello, world!\n" + +run: | + ocaml -init main.ml + +scope: + code: | + ;; + let x = 123 * 234 + input: | + x ;; + +format: + run: | + touch .ocamlformat; ocamlformat --name=format.ml - + input: | + print_string "Hello, world!\n";; + +lsp: + start: | + ocamllsp + lang: "ocaml" + +skip: + - lsp diff --git a/langs/octave.yaml b/langs/octave.yaml new file mode 100644 index 0000000..c4a0245 --- /dev/null +++ b/langs/octave.yaml @@ -0,0 +1,20 @@ +id: "octave" +aliases: + - "matlab" + - "m" + - "mathworks" +name: "Octave" + +repl: | + octave + +main: "main.m" +template: | + disp("Hello, world!") + +run: | + octave --persist main.m + +scope: + code: | + x = 123 * 234 diff --git a/langs/omgrofl.yaml b/langs/omgrofl.yaml new file mode 100644 index 0000000..95fe38a --- /dev/null +++ b/langs/omgrofl.yaml @@ -0,0 +1,36 @@ +id: "omgrofl" +aliases: + - "omg" + - "rofl" +name: "Omgrofl" + +main: "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 + +run: | + java -jar /opt/omgrofl/Omgrofl.jar main.omgrofl diff --git a/langs/ook.yaml b/langs/ook.yaml new file mode 100644 index 0000000..35773b6 --- /dev/null +++ b/langs/ook.yaml @@ -0,0 +1,28 @@ +id: "ook" +name: "Ook" + +main: "main.ook" +template: | + Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. + Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? + Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. + Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. + Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. + Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. + Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. + Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! + Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. + +run: | + esco -q main.ook +hello: | + Hello World! diff --git a/langs/openscad.yaml b/langs/openscad.yaml new file mode 100644 index 0000000..9a5d537 --- /dev/null +++ b/langs/openscad.yaml @@ -0,0 +1,11 @@ +id: "openscad" +name: "OpenSCAD" + +main: "main.scad" +template: | + echo("Hello, world!"); + +compile: | + openscad main.scad -o main.stl +run: | + cat main.stl diff --git a/langs/org.yaml b/langs/org.yaml new file mode 100644 index 0000000..2a71c62 --- /dev/null +++ b/langs/org.yaml @@ -0,0 +1,13 @@ +id: "org" +aliases: + - "orgmode" +name: "Org" + +main: "main.org" +template: | + Hello, world! + +compile: | + pandoc main.org -o main.html +run: | + prettier --no-config main.html diff --git a/langs/oz.yaml b/langs/oz.yaml new file mode 100644 index 0000000..068395d --- /dev/null +++ b/langs/oz.yaml @@ -0,0 +1,21 @@ +id: "oz" +aliases: + - "mozart" + - "mozart2" +name: "Oz" + +main: "main.oz" +template: | + functor + import + Application + System + define + {System.showInfo 'Hello, world!'} + {Application.exit 0} + end + +compile: | + ozc -c main.oz +run: | + ozengine main.ozf diff --git a/langs/parigp.yaml b/langs/parigp.yaml new file mode 100644 index 0000000..a962b21 --- /dev/null +++ b/langs/parigp.yaml @@ -0,0 +1,18 @@ +id: "parigp" +aliases: + - "gp" +name: "PARI/GP" + +repl: | + gp + +main: "main.gp" +template: | + print("Hello, world!") + +run: | + gp main.gp + +scope: + code: | + x = 123 * 234 diff --git a/langs/parser3.yaml b/langs/parser3.yaml new file mode 100644 index 0000000..c3aa84a --- /dev/null +++ b/langs/parser3.yaml @@ -0,0 +1,12 @@ +id: "parser3" +aliases: + - "parser" + - "p" +name: "Parser3" + +main: "main.p" +template: | + $console:line[Hello, world!] + +run: | + parser3 main.p diff --git a/langs/pascal.yaml b/langs/pascal.yaml new file mode 100644 index 0000000..bba87a9 --- /dev/null +++ b/langs/pascal.yaml @@ -0,0 +1,18 @@ +id: "pascal" +aliases: + - "pas" + - "fpc" +name: "Pascal" +monacoLang: pascal + +main: "main.pas" +template: | + program Main; + begin + writeln('Hello, world!'); + end. + +compile: | + fpc main.pas +run: | + ./main diff --git a/langs/pawn.yaml b/langs/pawn.yaml new file mode 100644 index 0000000..3f94a9b --- /dev/null +++ b/langs/pawn.yaml @@ -0,0 +1,18 @@ +id: "pawn" +aliases: + - "pawncc" + - "pawnrun" +name: "PAWN" + +main: "main.pawn" +template: | + #include + + main() { + print("Hello, world!\n"); + } + +compile: | + pawncc main.pawn -i/opt/pawn/include +run: | + pawnrun main.amx diff --git a/langs/perl.yaml b/langs/perl.yaml new file mode 100644 index 0000000..a1a44e9 --- /dev/null +++ b/langs/perl.yaml @@ -0,0 +1,28 @@ +id: "perl" +aliases: + - "pl" + - "repl" +name: "Perl" +monacoLang: perl + +repl: | + re.pl + +main: "main.pl" +template: | + print("Hello, world!\n"); + +run: | + re.pl --rcfile ./main.pl + +scope: + code: | + my $x = 123 * 234; + input: | + $x + +format: + run: | + perltidy + input: | + print ("Hello, world!\n"); diff --git a/langs/php.yaml b/langs/php.yaml new file mode 100644 index 0000000..7768e11 --- /dev/null +++ b/langs/php.yaml @@ -0,0 +1,32 @@ +id: "php" +aliases: + - "phpcli" +name: "PHP" +monacoLang: php + +repl: | + php -a +input: | + print 123 * 234; + +main: "main.php" +template: | + > data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && psql -h "$PWD/data" postgres +input: | + SELECT 123 * 234; + +main: "main.sql" +template: | + SELECT 'Hello, world!'; + +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) + +lsp: + start: | + sqls + +skip: + - lsp diff --git a/langs/postscript.yaml b/langs/postscript.yaml new file mode 100644 index 0000000..85251ef --- /dev/null +++ b/langs/postscript.yaml @@ -0,0 +1,24 @@ +id: "postscript" +aliases: + - "ps" + - "gs" + - "ghostscript" +name: "PostScript" + +repl: | + rlwrap gs +input: | + 123 234 mul = + +main: "main.ps" +template: | + (Hello, world!) = + +run: | + rlwrap gs main.ps + +scope: + code: | + 123 234 mul + input: | + = diff --git a/langs/powershell.yaml b/langs/powershell.yaml new file mode 100644 index 0000000..d84cbcc --- /dev/null +++ b/langs/powershell.yaml @@ -0,0 +1,34 @@ +id: "powershell" +aliases: + - "pwsh" + - "ps1" +name: "PowerShell" +monacoLang: powershell + +repl: | + SHELL=/usr/bin/pwsh pwsh +input: | + expr 123 "*" 234 + +main: "main.ps1" +template: | + Write-Host "Hello, world!" + +run: | + SHELL=/usr/bin/pwsh pwsh -NoExit main.ps1 + +scope: + code: | + Set-Variable x "$(expr 123 "*" 234)" + input: | + echo $x + +lsp: + start: | + 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" + +skip: + - repl + - runrepl + - scope + - lsp diff --git a/langs/prolog.yaml b/langs/prolog.yaml new file mode 100644 index 0000000..acfc1bd --- /dev/null +++ b/langs/prolog.yaml @@ -0,0 +1,23 @@ +id: "prolog" +name: "Prolog" + +repl: | + prolog +input: | + X is 123 * 234. + +main: "main.pl" +template: | + :- initialization main. + + main :- + write("Hello, world!"), nl. + +run: | + prolog main.pl + +scope: + code: | + x(X) :- X is 123 * 234. + input: | + x(X). diff --git a/langs/promela.yaml b/langs/promela.yaml new file mode 100644 index 0000000..2feecdb --- /dev/null +++ b/langs/promela.yaml @@ -0,0 +1,14 @@ +id: "promela" +aliases: + - "spin" + - "pml" +name: "PROMELA" + +main: "main.pml" +template: | + active proctype main() { + printf("Hello, world!\n"); + } + +run: | + spin main.pml diff --git a/langs/pseint.yaml b/langs/pseint.yaml new file mode 100644 index 0000000..d59266f --- /dev/null +++ b/langs/pseint.yaml @@ -0,0 +1,15 @@ +id: "pseint" +aliases: + - "psc" +name: "PSeInt" + +main: "main.psc" +template: | + Proceso Main + Escribir "¡Hola, mundo!"; + FinProceso + +run: | + pseint --nouser main.psc +hello: | + ¡Hola, mundo! diff --git a/langs/pug.yaml b/langs/pug.yaml new file mode 100644 index 0000000..43eb07e --- /dev/null +++ b/langs/pug.yaml @@ -0,0 +1,14 @@ +id: "pug" +name: "Pug" +monacoLang: pug + +main: "main.pug" +template: | + html + body + p Hello, world! + +compile: | + pug main.pug +run: | + prettier --no-config main.html diff --git a/langs/purescript.yaml b/langs/purescript.yaml new file mode 100644 index 0000000..73dded5 --- /dev/null +++ b/langs/purescript.yaml @@ -0,0 +1,27 @@ +id: "purescript" +aliases: + - "purs" + - "pure" +name: "PureScript" + +setup: | + shopt -s dotglob; cp -R /opt/purescript/project-template/* "$PWD/" + +repl: | + spago repl + +main: "src/Main.purs" +template: | + module Main where + + import Prelude + + import Effect (Effect) + import Effect.Console (log) + + main :: Effect Unit + main = do + log "Hello, world!" + +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 diff --git a/langs/python.yaml b/langs/python.yaml index 92784d3..e2452d3 100644 --- a/langs/python.yaml +++ b/langs/python.yaml @@ -1,31 +1,51 @@ -id: python +id: "python" aliases: - - py - - python2 - - python3 -name: Python + - "python3" + - "python2" + - "py" +name: "Python" monacoLang: python -install: - apt: - - python3 - - python3-pip - - black - manual: - - | - install -d "${pkg}/opt/mspyls" - install -d "${pkg}/usr/local/bin" - wget "$(curl -fsSL "https://pvsc.blob.core.windows.net/python-language-server-stable?restype=container&comp=list&prefix=Python-Language-Server-linux-x64" | grep -Eo 'https://[^<]+\.nupkg' | tail -n1)" - unzip -d "${pkg}/opt/mspyls" Python-Language-Server-linux-x64.*.nupkg - chmod +x "${pkg}/opt/mspyls/Microsoft.Python.LanguageServer" - ln -s "/opt/mspyls/Microsoft.Python.LanguageServer" "${pkg}/usr/local/bin/Microsoft.Python.LanguageServer" +info: + impl: "CPython" + version: "Python 3" + year: 1990 + desc: "Interpreted, high-level, general-purpose programming language" + ext: + - py + - pyi + - pyc + - pyd + - pyo + - pyw + - pyz + web: + wiki: "https://en.wikipedia.org/wiki/Python_(programming_language)" + home: "https://www.python.org/" + source: "https://github.com/python/cpython" + category: general + mode: interpreted + platform: python + syntax: + - python + - whitespace + typing: dynamic + paradigm: + - functional + - imperative + - oo + usage: popular repl: | python3 -u + main: "main.py" template: | print("Hello, world!") -run: "python3 -u -i main.py" + +run: | + python3 -u -i main.py + scope: code: | x = 123 * 234 @@ -37,17 +57,21 @@ format: print('Hello, world!') pkg: - install: "pip3 install --user NAME" - uninstall: "pip3 uninstall NAME" + 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: - start: "Microsoft.Python.LanguageServer" + start: | + Microsoft.Python.LanguageServer init: interpreter: properties: - InterpreterPath: "/usr/bin/python3" - code: | - import func + InterpreterPath: /usr/bin/python3 + code: "import func" item: "functools" diff --git a/langs/qsharp.yaml b/langs/qsharp.yaml new file mode 100644 index 0000000..97484f8 --- /dev/null +++ b/langs/qsharp.yaml @@ -0,0 +1,24 @@ +id: "qsharp" +aliases: + - "q" + - "qs" +name: "Q#" + +setup: | + cp -R /opt/qsharp/dotnet ./.dotnet && cp -R /opt/qsharp/project-template/* ./ + +main: "Main.qs" +template: | + namespace main { + + open Microsoft.Quantum.Canon; + open Microsoft.Quantum.Intrinsic; + + @EntryPoint() + operation Main() : Unit { + Message("Hello, world!"); + } + } + +run: | + dotnet run diff --git a/langs/r.yaml b/langs/r.yaml new file mode 100644 index 0000000..b536c3f --- /dev/null +++ b/langs/r.yaml @@ -0,0 +1,19 @@ +id: "r" +aliases: + - "rlang" +name: "R" +monacoLang: r + +repl: | + R + +main: ".Rprofile" +template: | + print("Hello, world!") + +run: | + R --no-save + +scope: + code: | + x = 123 * 234 diff --git a/langs/racket.yaml b/langs/racket.yaml new file mode 100644 index 0000000..cb2527d --- /dev/null +++ b/langs/racket.yaml @@ -0,0 +1,24 @@ +id: "racket" +aliases: + - "rkt" +name: "Racket" + +repl: | + racket +input: | + (* 123 234) + +main: "main.rkt" +template: | + #lang racket/base + (display "Hello, world!\n") + +run: | + racket -i -e '(enter! "main.rkt") (display "[ type (enter! \"main.rkt\") to access local variables ]\n")' + +scope: + code: | + (define x (* 123 234)) + input: | + (enter! "main.rkt") + x diff --git a/langs/ratfor.yaml b/langs/ratfor.yaml new file mode 100644 index 0000000..7b23dc1 --- /dev/null +++ b/langs/ratfor.yaml @@ -0,0 +1,14 @@ +id: "ratfor" +aliases: + - "rationalfortran" +name: "Ratfor" + +main: "main.r" +template: | + print *, 'Hello, world!' + end + +compile: | + ratfor main.r -o main.f && flang main.f -o main +run: | + ./main diff --git a/langs/rc.yaml b/langs/rc.yaml new file mode 100644 index 0000000..9de21ae --- /dev/null +++ b/langs/rc.yaml @@ -0,0 +1,16 @@ +id: "rc" +aliases: + - "runcommands" +name: "rc" + +repl: | + rc +input: | + expr 123 '*' 234 + +main: "main.rc" +template: | + echo Hello, world! + +run: | + rc main.rc; rc diff --git a/langs/reasonml.yaml b/langs/reasonml.yaml new file mode 100644 index 0000000..145f67b --- /dev/null +++ b/langs/reasonml.yaml @@ -0,0 +1,32 @@ +id: "reasonml" +aliases: + - "re" + - "reason" + - "bsc" + - "buckle" + - "bucklescript" +name: "ReasonML" + +main: "main.re" +template: | + print_string("Hello, world!\n"); + +compile: | + bsc main.re > main.js +run: | + NODE_PATH=/usr/lib/node_modules node main.js + +format: + run: | + refmt + input: | + print_string("Hello, world!\n") + +lsp: + setup: | + cp -a /opt/reasonml/project-template/* ./ + start: | + reason-language-server + +skip: + - lsp diff --git a/langs/rebol.yaml b/langs/rebol.yaml new file mode 100644 index 0000000..1f9e57b --- /dev/null +++ b/langs/rebol.yaml @@ -0,0 +1,16 @@ +id: "rebol" +name: "REBOL" + +repl: | + rebol + +main: "main.r" +template: | + REBOL [Title: "Main"] + print "Hello, world!" + +run: | + rebol main.r; rebol +runReplInput: | + DELAY: 1 + 123 * 234 diff --git a/langs/red.yaml b/langs/red.yaml new file mode 100644 index 0000000..068a647 --- /dev/null +++ b/langs/red.yaml @@ -0,0 +1,20 @@ +id: "red" +name: "Red" + +setup: | + cp -R /opt/red/template .red + +repl: | + /usr/local/bin/red +input: | + DELAY: 1 + 123 * 234 + +main: "main.red" +template: | + Red [Title: "Main"] + + print "Hello, world!" + +run: | + /usr/local/bin/red main.red; /usr/local/bin/red diff --git a/langs/redis.yaml b/langs/redis.yaml new file mode 100644 index 0000000..d494553 --- /dev/null +++ b/langs/redis.yaml @@ -0,0 +1,16 @@ +id: "redis" +name: "Redis" +monacoLang: redis + +repl: | + rm -f socket; (redis-server --port 0 --unixsocket socket &); until [[ -e socket ]]; do sleep 0.01; done; redis-cli -s socket +input: | + DELAY: 3 + EVAL "return 123 * 234" 0 + +main: "main.redis" +template: | + ECHO "Hello, world!" + +run: | + rm -f socket; (redis-server --port 0 --unixsocket socket &); until [[ -e socket ]]; do sleep 0.01; done; redis-cli -s socket < main.redis; redis-cli -s socket diff --git a/langs/restructuredtext.yaml b/langs/restructuredtext.yaml new file mode 100644 index 0000000..dcec5e7 --- /dev/null +++ b/langs/restructuredtext.yaml @@ -0,0 +1,14 @@ +id: "restructuredtext" +aliases: + - "rst" +name: "reStructuredText" +monacoLang: restructuredtext + +main: "main.rst" +template: | + Hello, world! + +compile: | + pandoc main.rst -o main.html +run: | + prettier --no-config main.html diff --git a/langs/rexx.yaml b/langs/rexx.yaml new file mode 100644 index 0000000..089e584 --- /dev/null +++ b/langs/rexx.yaml @@ -0,0 +1,12 @@ +id: "rexx" +aliases: + - "regina" + - "reginarexx" +name: "REXX" + +main: "main.rexx" +template: | + say "Hello, world!" + +run: | + rexx main.rexx diff --git a/langs/riscv.yaml b/langs/riscv.yaml new file mode 100644 index 0000000..d95b4c3 --- /dev/null +++ b/langs/riscv.yaml @@ -0,0 +1,26 @@ +id: "riscv" +aliases: + - "risc" +name: "RISC-V" + +main: "main.S" +template: |2 + .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" + +compile: | + riscv64-linux-gnu-gcc main.S -o main -static +run: | + qemu-riscv64-static main diff --git a/langs/roff.yaml b/langs/roff.yaml new file mode 100644 index 0000000..3fc6a09 --- /dev/null +++ b/langs/roff.yaml @@ -0,0 +1,27 @@ +id: "roff" +aliases: + - "groff" + - "nroff" + - "troff" + - "1" + - "2" + - "3" + - "4" + - "5" + - "6" + - "7" + - "8" + - "9" + - "man" + - "manual" +name: "roff" + +main: "main.roff" +template: | + .PP + Hello, world! + +compile: | + pandoc main.roff -f man -o main.html +run: | + prettier --no-config main.html diff --git a/langs/ruby.yaml b/langs/ruby.yaml new file mode 100644 index 0000000..9e6f54f --- /dev/null +++ b/langs/ruby.yaml @@ -0,0 +1,54 @@ +id: "ruby" +aliases: + - "irb" + - "rb" +name: "Ruby" +monacoLang: ruby + +repl: | + irb + +main: "main.rb" +template: | + puts "Hello, world!" +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 + +scope: + code: | + x = 5 + +format: + run: | + rufo -x + input: | + puts "Hello, world!"; + +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: + start: | + solargraph stdio + +skip: + - repl + - runrepl + - scope + - lsp diff --git a/langs/rust.yaml b/langs/rust.yaml new file mode 100644 index 0000000..7679999 --- /dev/null +++ b/langs/rust.yaml @@ -0,0 +1,24 @@ +id: "rust" +aliases: + - "rs" + - "rustc" +name: "Rust" +monacoLang: rust + +main: "main.rs" +template: | + fn main() { + println!("Hello, world!"); + } + +compile: | + rustc main.rs +run: | + ./main + +lsp: + start: | + rls + +skip: + - lsp diff --git a/langs/sagemath.yaml b/langs/sagemath.yaml new file mode 100644 index 0000000..a212e0f --- /dev/null +++ b/langs/sagemath.yaml @@ -0,0 +1,19 @@ +id: "sagemath" +aliases: + - "sage" +name: "SageMath" + +repl: | + sage + +main: ".sage/init.sage" +template: | + print("Hello, world!") +createEmpty: "" + +run: | + sage + +scope: + code: | + x = 123 * 234 diff --git a/langs/sass.yaml b/langs/sass.yaml new file mode 100644 index 0000000..a726978 --- /dev/null +++ b/langs/sass.yaml @@ -0,0 +1,10 @@ +id: "sass" +name: "Sass" + +main: "main.sass" +template: | + body:before + content: "Hello, world!" + +run: | + sass main.sass diff --git a/langs/scala.yaml b/langs/scala.yaml new file mode 100644 index 0000000..3d15daf --- /dev/null +++ b/langs/scala.yaml @@ -0,0 +1,16 @@ +id: "scala" +name: "Scala" + +repl: | + scala + +main: "main.scala" +template: | + println("Hello, world!") + +run: | + scala -i main.scala + +scope: + code: | + val x = 123 * 234 diff --git a/langs/scheme.yaml b/langs/scheme.yaml new file mode 100644 index 0000000..2ba4e85 --- /dev/null +++ b/langs/scheme.yaml @@ -0,0 +1,23 @@ +id: "scheme" +aliases: + - "scm" + - "mitscheme" +name: "Scheme" +monacoLang: scheme + +repl: | + mit-scheme +input: | + (* 123 234) + +main: "main.scm" +template: | + (display "Hello, world!") + (newline) + +run: | + mit-scheme --load main.scm + +scope: + code: | + (define x (* 123 234)) diff --git a/langs/scilab.yaml b/langs/scilab.yaml new file mode 100644 index 0000000..d8664f7 --- /dev/null +++ b/langs/scilab.yaml @@ -0,0 +1,24 @@ +id: "scilab" +aliases: + - "sci" +name: "Scilab" + +repl: | + scilab-cli +input: | + DELAY: 1 + 123 * 234 + +main: "main.sci" +template: | + disp("Hello, world!") + +run: | + scilab-cli -f main.sci + +scope: + code: | + x = 123 * 234 + input: | + DELAY: 1 + x diff --git a/langs/scss.yaml b/langs/scss.yaml new file mode 100644 index 0000000..fe1c944 --- /dev/null +++ b/langs/scss.yaml @@ -0,0 +1,20 @@ +id: "scss" +name: "SCSS" +monacoLang: scss + +main: "main.scss" +template: | + body:before { + content: "Hello, world!"; + } + +run: | + sass main.scss + +format: + run: | + prettier --no-config --stdin-filepath=format.scss + input: | + body:before { + content: "Hello, world!"; + } diff --git a/langs/sed.yaml b/langs/sed.yaml new file mode 100644 index 0000000..bff7240 --- /dev/null +++ b/langs/sed.yaml @@ -0,0 +1,13 @@ +id: "sed" +aliases: + - "gsed" +name: "Sed" + +main: "main.sed" +template: | + s/.*/Hello, world!/ + +run: | + echo 'Reading from stdin...' >&2; sed -f main.sed +helloInput: | + diff --git a/langs/setl.yaml b/langs/setl.yaml new file mode 100644 index 0000000..86a0e9b --- /dev/null +++ b/langs/setl.yaml @@ -0,0 +1,9 @@ +id: "setl" +name: "SETL" + +main: "main.setl" +template: | + print("Hello, world!"); + +run: | + setl main.setl diff --git a/langs/sh.yaml b/langs/sh.yaml new file mode 100644 index 0000000..fcf2314 --- /dev/null +++ b/langs/sh.yaml @@ -0,0 +1,29 @@ +id: "sh" +aliases: + - "shell" + - "posix" + - "posixsh" + - "ash" + - "dash" + - "posh" +name: "Sh" +monacoLang: shell + +repl: | + SHELL=/usr/bin/sh HOME="$PWD" posh -l +input: | + expr 123 \* 234 + +main: ".profile" +template: | + echo "Hello, world!" +createEmpty: "" + +run: | + SHELL=/usr/bin/sh HOME="$PWD" posh -l + +scope: + code: | + x="$(expr 123 \* 234)" + input: | + echo "$x" diff --git a/langs/shakespeare.yaml b/langs/shakespeare.yaml new file mode 100644 index 0000000..44f4591 --- /dev/null +++ b/langs/shakespeare.yaml @@ -0,0 +1,115 @@ +id: "shakespeare" +aliases: + - "spl" +name: "Shakespeare" + +repl: | + shakespeare console +input: | + Hamlet, a placeholder. + done + stage +output: | + Off stage + +main: "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] +suffix: | + + [A pause] + +run: | + shakespeare debug main.spl +hello: | + Hello World! +runReplInput: | + stage diff --git a/langs/slang.yaml b/langs/slang.yaml new file mode 100644 index 0000000..f4f4164 --- /dev/null +++ b/langs/slang.yaml @@ -0,0 +1,21 @@ +id: "slang" +aliases: + - "s" + - "sl" +name: "S-Lang" + +repl: | + slsh +input: | + 123 * 234; + +main: "main.sl" +template: | + message("Hello, world!"); + +run: | + slsh -i main.sl + +scope: + code: | + x = 123 * 234; diff --git a/langs/slick.yaml b/langs/slick.yaml new file mode 100644 index 0000000..9e8ea24 --- /dev/null +++ b/langs/slick.yaml @@ -0,0 +1,16 @@ +id: "slick" +name: "Slick" + +repl: | + slick +input: | + DELAY: 1 + 123 * 234 + +main: "main.sl" +template: | + def main: + print "Hello, world!" + +run: | + slick main.sl; slick diff --git a/langs/smalltalk.yaml b/langs/smalltalk.yaml new file mode 100644 index 0000000..941fe43 --- /dev/null +++ b/langs/smalltalk.yaml @@ -0,0 +1,15 @@ +id: "smalltalk" +aliases: + - "gst" + - "st" +name: "Smalltalk" + +repl: | + gst + +main: "main.st" +template: | + 'Hello, world!' displayNl ! + +run: | + gst main.st; gst diff --git a/langs/snobol.yaml b/langs/snobol.yaml new file mode 100644 index 0000000..073fa79 --- /dev/null +++ b/langs/snobol.yaml @@ -0,0 +1,20 @@ +id: "snobol" +aliases: + - "snobol4" + - "spitbol" + - "sno" +name: "SNOBOL" + +repl: | + snobol4 +input: |2 + OUTPUT = 123 * 234 + END + +main: "main.sno" +template: |2 + OUTPUT = "Hello, world!" + END + +run: | + snobol4 main.sno; snobol4 diff --git a/langs/sqlite.yaml b/langs/sqlite.yaml new file mode 100644 index 0000000..6e73f83 --- /dev/null +++ b/langs/sqlite.yaml @@ -0,0 +1,26 @@ +id: "sqlite" +aliases: + - "sql" + - "db" + - "sqlite3" +name: "SQLite" +monacoLang: sql + +repl: | + sqlite3 +input: | + SELECT 123 * 234; + +main: "main.sql" +template: | + SELECT 'Hello, world!'; + +run: | + sqlite3 -cmd "$(< main.sql)" + +lsp: + start: | + sqls + +skip: + - lsp diff --git a/langs/squirrel.yaml b/langs/squirrel.yaml new file mode 100644 index 0000000..36e118f --- /dev/null +++ b/langs/squirrel.yaml @@ -0,0 +1,17 @@ +id: "squirrel" +aliases: + - "nut" + - "cnut" +name: "Squirrel" + +repl: | + squirrel +input: | + print(123 * 234) + +main: "main.nut" +template: | + print("Hello, world!\n") + +run: | + squirrel main.nut; squirrel diff --git a/langs/standardml.yaml b/langs/standardml.yaml new file mode 100644 index 0000000..c41e585 --- /dev/null +++ b/langs/standardml.yaml @@ -0,0 +1,23 @@ +id: "standardml" +aliases: + - "sml" + - "ml" +name: "Standard ML" + +repl: | + rlwrap sml +input: | + 123 * 234; + +main: "main.sml" +template: | + print "Hello, world!\n"; + +run: | + rlwrap sml main.sml + +scope: + code: | + val x = 123 * 234; + input: | + x; diff --git a/langs/subleq.yaml b/langs/subleq.yaml new file mode 100644 index 0000000..687591e --- /dev/null +++ b/langs/subleq.yaml @@ -0,0 +1,29 @@ +id: "subleq" +aliases: + - "sq" + - "asq" +name: "Subleq" + +main: "main.sq" +template: | + 12 12 3 + 36 37 6 + 37 12 9 + 37 37 12 + 0 -1 15 + 38 36 18 + 12 12 21 + 53 37 24 + 37 12 27 + 37 37 30 + 36 12 -1 + 37 37 0 + 39 0 -1 + 72 101 108 + 108 111 44 + 32 119 111 + 114 108 100 + 33 10 53 + +run: | + sq main.sq diff --git a/langs/swift.yaml b/langs/swift.yaml new file mode 100644 index 0000000..16c788c --- /dev/null +++ b/langs/swift.yaml @@ -0,0 +1,21 @@ +id: "swift" +aliases: + - "swiftc" +name: "Swift" +monacoLang: swift + +main: "main.swift" +template: | + print("Hello, world!") + +compile: | + swiftc main.swift +run: | + ./main + +lsp: + start: | + sourcekit-lsp + +skip: + - lsp diff --git a/langs/tabloid.yaml b/langs/tabloid.yaml new file mode 100644 index 0000000..d4f3b18 --- /dev/null +++ b/langs/tabloid.yaml @@ -0,0 +1,12 @@ +id: "tabloid" +name: "Tabloid" + +main: "main.tabloid" +template: | + YOU WON'T WANT TO MISS "Hello, world" + PLEASE LIKE AND SUBSCRIBE + +run: | + node /opt/tabloid/run.js main.tabloid +hello: | + HELLO, WORLD! diff --git a/langs/tcl.yaml b/langs/tcl.yaml new file mode 100644 index 0000000..718a55e --- /dev/null +++ b/langs/tcl.yaml @@ -0,0 +1,25 @@ +id: "tcl" +aliases: + - "tclsh" + - "tclshrc" +name: "Tcl" +monacoLang: tcl + +repl: | + tclsh +input: | + expr 123 * 234 + +main: ".tclshrc" +template: | + puts {Hello, world!} +createEmpty: "" + +run: | + HOME="$PWD" tclsh + +scope: + code: | + set x [expr 123 * 234] + input: | + echo $x diff --git a/langs/tcsh.yaml b/langs/tcsh.yaml new file mode 100644 index 0000000..da3bfeb --- /dev/null +++ b/langs/tcsh.yaml @@ -0,0 +1,26 @@ +id: "tcsh" +aliases: + - "tcshell" + - "tcshrc" + - "csh" +name: "Tcsh" +monacoLang: shell + +repl: | + SHELL=/usr/bin/tcsh HOME="$PWD" tcsh +input: | + expr 123 \* 234 + +main: ".tcshrc" +template: | + echo "Hello, world!" +createEmpty: "" + +run: | + SHELL=/usr/bin/tcsh HOME="$PWD" tcsh + +scope: + code: | + set x=`expr 123 \* 234` + input: | + echo "$x" diff --git a/langs/teco.yaml b/langs/teco.yaml new file mode 100644 index 0000000..6c3ff0e --- /dev/null +++ b/langs/teco.yaml @@ -0,0 +1,23 @@ +id: "teco" +aliases: + - "mung" +name: "TECO" + +repl: | + teco +input: "123*234=\x1b\x1b" + +main: "main.txt" +template: | + IHello, world! + $HT$$ + +compile: | + cat main.txt | teco-encode > main.teco +run: | + mung main.teco + +scope: + code: | + 123*234UX$$ + input: "QX=\x1b\x1b" diff --git a/langs/tex.yaml b/langs/tex.yaml new file mode 100644 index 0000000..a0d54e6 --- /dev/null +++ b/langs/tex.yaml @@ -0,0 +1,37 @@ +id: "tex" +aliases: + - "latex" + - "xetex" + - "plaintex" +name: "TeX" + +repl: | + tex +input: | + \newcount\x + \advance\x by 123 + \multiply\x by 234 + \message{\the\x} + +main: "main.tex" +template: | + \message{Hello, world!} + +run: | + tex main.tex + +scope: + code: | + \newcount\x + \advance\x by 123 + \multiply\x by 234 + input: | + \message{\the\x} + +lsp: + start: | + digestif + lang: "tex" + +skip: + - lsp diff --git a/langs/textile.yaml b/langs/textile.yaml new file mode 100644 index 0000000..52546bc --- /dev/null +++ b/langs/textile.yaml @@ -0,0 +1,11 @@ +id: "textile" +name: "Textile" + +main: "main.textile" +template: | + Hello, world! + +compile: | + pandoc main.textile -o main.html +run: | + prettier --no-config main.html diff --git a/langs/thue.yaml b/langs/thue.yaml new file mode 100644 index 0000000..a69316f --- /dev/null +++ b/langs/thue.yaml @@ -0,0 +1,11 @@ +id: "thue" +name: "Thue" + +main: "main.thue" +template: | + a::=~Hello, world! + ::= + a + +run: | + thue main.thue diff --git a/langs/tikiwiki.yaml b/langs/tikiwiki.yaml new file mode 100644 index 0000000..92114df --- /dev/null +++ b/langs/tikiwiki.yaml @@ -0,0 +1,13 @@ +id: "tikiwiki" +aliases: + - "tiki" +name: "Tiki Wiki" + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f tikiwiki -o main.html +run: | + prettier --no-config main.html diff --git a/langs/toml.yaml b/langs/toml.yaml new file mode 100644 index 0000000..c3e246a --- /dev/null +++ b/langs/toml.yaml @@ -0,0 +1,13 @@ +id: "toml" +aliases: + - "tom" +name: "TOML" + +main: "main.toml" +template: | + output = "Hello, world!" + +compile: | + cat main.toml | yj -tj > main.json +run: | + cat main.json | jq . diff --git a/langs/twiki.yaml b/langs/twiki.yaml new file mode 100644 index 0000000..2bc50a5 --- /dev/null +++ b/langs/twiki.yaml @@ -0,0 +1,11 @@ +id: "twiki" +name: "TWiki" + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f twiki -o main.html +run: | + prettier --no-config main.html diff --git a/langs/typescript.yaml b/langs/typescript.yaml new file mode 100644 index 0000000..e146a43 --- /dev/null +++ b/langs/typescript.yaml @@ -0,0 +1,27 @@ +id: "typescript" +aliases: + - "ts" + - "tsnode" + - "tsc" +name: "TypeScript" +monacoLang: typescript + +repl: | + ts-node + +main: "main.ts" +template: | + console.log("Hello, world!"); + +run: | + ts-node -i -e "$(< main.ts)" + +scope: + code: | + let x = 123 * 234; + +format: + run: | + prettier --no-config --stdin-filepath=format.ts + input: | + console.log('Hello, world!'); diff --git a/langs/unison.yaml b/langs/unison.yaml new file mode 100644 index 0000000..bad82ab --- /dev/null +++ b/langs/unison.yaml @@ -0,0 +1,38 @@ +id: "unison" +aliases: + - "ucm" +name: "Unison" + +setup: | + shopt -s dotglob && cp -R /opt/unison/project-template/* ./ + +repl: | + unison -codebase . +input: | + DELAY: 3 + find : [a] -> [a] +output: | + base.List.reverse + +main: "main.u" +template: | + use io + + main : '{IO} () + main = 'let + printLine "Hello, world!" + +run: | + echo "Type 'run main' to run the code." && unison -codebase . +helloInput: | + DELAY: 3 + run main + +scope: + code: | + x = 123 * 234 + input: | + DELAY: 3 + add x + DELAY: 3 + display x diff --git a/langs/unlambda.yaml b/langs/unlambda.yaml new file mode 100644 index 0000000..b3b7e90 --- /dev/null +++ b/langs/unlambda.yaml @@ -0,0 +1,17 @@ +id: "unlambda" +aliases: + - "unl" +name: "Unlambda" + +repl: | + unlambda-repl +input: | + `.2`.8`.7`.8`.2i + +main: "main.unl" +template: | + `. + `.!`.d`.l`.r`.o`.w`. `.,`.o`.l`.l`.e`.Hi + +run: | + unlambda-repl main.unl diff --git a/langs/vala.yaml b/langs/vala.yaml new file mode 100644 index 0000000..ae981ef --- /dev/null +++ b/langs/vala.yaml @@ -0,0 +1,15 @@ +id: "vala" +aliases: + - "valac" +name: "Vala" + +main: "main.vala" +template: | + void main () { + print("Hello, world!\n"); + } + +compile: | + valac main.vala +run: | + ./main diff --git a/langs/velato.yaml b/langs/velato.yaml new file mode 100644 index 0000000..71123d0 --- /dev/null +++ b/langs/velato.yaml @@ -0,0 +1,230 @@ +id: "velato" +aliases: + - "vlt" +name: "Velato" + +main: "main.asc" +template: | + format=1 tracks=2 division=2880 + + BA 1 CR 0 TR 0 CH 16 Tempo 100 + BA 1 CR 0 TR 1 CH 1 NT C-- 4/5 von=101 voff=0 + BA 1 CR 0 TR 1 CH 1 NT A 4/5 voff=0 + BA 1 CR 0 TR 1 CH 1 NT G- 4/5 voff=0 + BA 1 CR 0 TR 1 CH 1 NT E- 4/5 voff=0 + + BA 2 CR 0 TR 1 CH 1 NT F- 4/5 voff=0 + BA 2 CR 0 TR 1 CH 1 NT A- 4/5 voff=0 + BA 2 CR 0 TR 1 CH 1 NT Eb 4/5 voff=0 + + BA 3 CR 1/2 TR 1 CH 1 NT G- 3+7/20 voff=0 + BA 3 CR 1/2 TR 1 CH 1 NT C 3+7/20 voff=0 + + BA 5 CR 0 TR 1 CH 1 NT C- 1/5 voff=0 + BA 5 CR 1/4 TR 1 CH 1 NT D 1/5 voff=0 + BA 5 CR 1/2 TR 1 CH 1 NT F 1/5 voff=0 + BA 5 CR 3/4 TR 1 CH 1 NT F-- 2/5 voff=0 + BA 5 CR 3/4 TR 1 CH 1 NT D 2/5 voff=0 + BA 5 CR 3/4 TR 1 CH 1 NT C- 2/5 voff=0 + BA 5 CR 3/4 TR 1 CH 1 NT A- 2/5 voff=0 + + BA 6 CR 1/4 TR 1 CH 1 NT Bb 4/5 voff=0 + BA 6 CR 1/4 TR 1 CH 1 NT G-- 4/5 voff=0 + BA 6 CR 1/4 TR 1 CH 1 NT F#- 4/5 voff=0 + + BA 7 CR 3/4 TR 1 CH 1 NT G- 3+7/20 voff=0 + BA 7 CR 3/4 TR 1 CH 1 NT C 3+7/20 voff=0 + + BA 9 CR 1/4 TR 1 CH 1 NT F- 1/5 voff=0 + BA 9 CR 1/2 TR 1 CH 1 NT G 1/5 voff=0 + BA 9 CR 3/4 TR 1 CH 1 NT Bb 1/5 voff=0 + + BA 10 CR 0 TR 1 CH 1 NT Bb-- 2/5 voff=0 + BA 10 CR 0 TR 1 CH 1 NT G 2/5 voff=0 + BA 10 CR 0 TR 1 CH 1 NT F- 2/5 voff=0 + BA 10 CR 0 TR 1 CH 1 NT D- 2/5 voff=0 + BA 10 CR 1/2 TR 1 CH 1 NT Eb 4/5 voff=0 + BA 10 CR 1/2 TR 1 CH 1 NT C- 4/5 voff=0 + BA 10 CR 1/2 TR 1 CH 1 NT B- 4/5 voff=0 + + BA 11 CR 1/2 TR 1 CH 1 NT G# 2/5 voff=0 + + BA 12 CR 0 TR 1 CH 1 NT F 4/5 voff=0 + BA 12 CR 0 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 13 CR 0 TR 1 CH 1 NT Bb- 2/5 voff=0 + BA 13 CR 1/2 TR 1 CH 1 NT Bb-- 1/5 voff=0 + BA 13 CR 3/4 TR 1 CH 1 NT G 1/5 voff=0 + + BA 14 CR 0 TR 1 CH 1 NT F- 1/5 voff=0 + BA 14 CR 1/4 TR 1 CH 1 NT D- 1/5 voff=0 + BA 14 CR 1/2 TR 1 CH 1 NT Eb 4/5 voff=0 + BA 14 CR 1/2 TR 1 CH 1 NT C- 4/5 voff=0 + BA 14 CR 1/2 TR 1 CH 1 NT B- 4/5 voff=0 + + BA 15 CR 1/2 TR 1 CH 1 NT G# 2/5 voff=0 + + BA 16 CR 0 TR 1 CH 1 NT F 4/5 voff=0 + BA 16 CR 0 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 17 CR 0 TR 1 CH 1 NT Bb- 4/5 voff=0 + + BA 18 CR 0 TR 1 CH 1 NT Bb- 2/5 voff=0 + BA 18 CR 1/2 TR 1 CH 1 NT C- 4/5 voff=0 + BA 18 CR 1/2 TR 1 CH 1 NT C 4/5 voff=0 + + BA 19 CR 1/2 TR 1 CH 1 NT C-- 3+2/5 voff=0 + BA 19 CR 1/2 TR 1 CH 1 NT A 3+2/5 voff=0 + BA 19 CR 1/2 TR 1 CH 1 NT G- 3+2/5 voff=0 + BA 19 CR 1/2 TR 1 CH 1 NT E- 3+2/5 voff=0 + + BA 21 CR 0 TR 1 CH 1 NT F- 4/5 voff=0 + BA 21 CR 0 TR 1 CH 1 NT D 4/5 voff=0 + + BA 22 CR 0 TR 1 CH 1 NT D 2/5 voff=0 + BA 22 CR 1/2 TR 1 CH 1 NT D 2/5 voff=0 + BA 22 CR 1/2 TR 1 CH 1 NT G- 2/5 voff=0 + BA 22 CR 1/2 TR 1 CH 1 NT C 2/5 voff=0 + + BA 23 CR 0 TR 1 CH 1 NT C-- 2/5 voff=0 + BA 23 CR 1/2 TR 1 CH 1 NT A 1+3/5 voff=0 + BA 23 CR 1/2 TR 1 CH 1 NT G- 1+3/5 voff=0 + + BA 25 CR 1/2 TR 1 CH 1 NT E 2/5 voff=0 + BA 25 CR 1/2 TR 1 CH 1 NT F- 2+7/10 voff=0 + BA 25 CR 1/2 TR 1 CH 1 NT F-- 2+7/10 voff=0 + + BA 27 CR 0 TR 1 CH 1 NT F 3+7/10 voff=0 + BA 27 CR 0 TR 1 CH 1 NT G- 5+9/20 voff=0 + BA 27 CR 0 TR 1 CH 1 NT C 5+9/20 voff=0 + + BA 30 CR 0 TR 1 CH 1 NT C- 1/5 voff=0 + BA 30 CR 1/4 TR 1 CH 1 NT D 1/5 voff=0 + BA 30 CR 1/2 TR 1 CH 1 NT F 1/5 voff=0 + BA 30 CR 3/4 TR 1 CH 1 NT F 4/5 voff=0 + + BA 31 CR 3/4 TR 1 CH 1 NT F- 2/5 voff=0 + + BA 32 CR 1/4 TR 1 CH 1 NT F-- 2/5 voff=0 + BA 32 CR 1/4 TR 1 CH 1 NT D 2/5 voff=0 + BA 32 CR 1/4 TR 1 CH 1 NT C- 2/5 voff=0 + BA 32 CR 1/4 TR 1 CH 1 NT A- 2/5 voff=0 + BA 32 CR 3/4 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 33 CR 3/4 TR 1 CH 1 NT A 2/5 voff=0 + + BA 34 CR 1/4 TR 1 CH 1 NT G#- 3+7/20 voff=0 + BA 34 CR 1/4 TR 1 CH 1 NT C 3+7/20 voff=0 + + BA 35 CR 3/4 TR 1 CH 1 NT F- 1/5 voff=0 + + BA 36 CR 0 TR 1 CH 1 NT G 1/5 voff=0 + BA 36 CR 1/4 TR 1 CH 1 NT Bb 1/5 voff=0 + BA 36 CR 1/2 TR 1 CH 1 NT Bb-- 2/5 voff=0 + BA 36 CR 1/2 TR 1 CH 1 NT G 2/5 voff=0 + BA 36 CR 1/2 TR 1 CH 1 NT F- 2/5 voff=0 + BA 36 CR 1/2 TR 1 CH 1 NT D- 2/5 voff=0 + + BA 37 CR 0 TR 1 CH 1 NT Eb 4/5 voff=0 + BA 37 CR 0 TR 1 CH 1 NT G# 4/5 voff=0 + + BA 38 CR 0 TR 1 CH 1 NT G 2/5 voff=0 + BA 38 CR 1/2 TR 1 CH 1 NT F 4/5 voff=0 + BA 38 CR 1/2 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 39 CR 1/2 TR 1 CH 1 NT Bb- 2/5 voff=0 + + BA 40 CR 0 TR 1 CH 1 NT Bb- 2/5 voff=0 + BA 40 CR 1/2 TR 1 CH 1 NT C- 4/5 voff=0 + BA 40 CR 1/2 TR 1 CH 1 NT C 4/5 voff=0 + + BA 41 CR 1/2 TR 1 CH 1 NT C-- 3+2/5 voff=0 + BA 41 CR 1/2 TR 1 CH 1 NT A 3+2/5 voff=0 + BA 41 CR 1/2 TR 1 CH 1 NT G- 3+2/5 voff=0 + BA 41 CR 1/2 TR 1 CH 1 NT E- 3+2/5 voff=0 + + BA 43 CR 0 TR 1 CH 1 NT F- 4/5 voff=0 + BA 43 CR 0 TR 1 CH 1 NT D 4/5 voff=0 + + BA 44 CR 0 TR 1 CH 1 NT D 2/5 voff=0 + BA 44 CR 1/2 TR 1 CH 1 NT D 4/5 voff=0 + BA 44 CR 1/2 TR 1 CH 1 NT G- 2/5 voff=0 + BA 44 CR 1/2 TR 1 CH 1 NT C 4/5 voff=0 + + BA 45 CR 1/2 TR 1 CH 1 NT C-- 3+2/5 voff=0 + BA 45 CR 1/2 TR 1 CH 1 NT A 3+2/5 voff=0 + BA 45 CR 1/2 TR 1 CH 1 NT G- 3+2/5 voff=0 + BA 45 CR 1/2 TR 1 CH 1 NT E- 3+2/5 voff=0 + + BA 47 CR 0 TR 1 CH 1 NT F- 4/5 voff=0 + BA 47 CR 0 TR 1 CH 1 NT D 4/5 voff=0 + + BA 48 CR 0 TR 1 CH 1 NT D 2/5 voff=0 + BA 48 CR 1/2 TR 1 CH 1 NT F 4/5 voff=0 + BA 48 CR 1/2 TR 1 CH 1 NT G 4/5 voff=0 + BA 48 CR 1/2 TR 1 CH 1 NT C- 4/5 voff=0 + + BA 49 CR 1/2 TR 1 CH 1 NT C- 1/5 voff=0 + BA 49 CR 3/4 TR 1 CH 1 NT D 1/5 voff=0 + + BA 50 CR 0 TR 1 CH 1 NT Bb 1/5 voff=0 + BA 50 CR 1/4 TR 1 CH 1 NT Bb 2/5 voff=0 + BA 50 CR 3/4 TR 1 CH 1 NT Bb- 4/5 voff=0 + + BA 51 CR 3/4 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 52 CR 3/4 TR 1 CH 1 NT Bb-- 2/5 voff=0 + BA 52 CR 3/4 TR 1 CH 1 NT G 2/5 voff=0 + BA 52 CR 3/4 TR 1 CH 1 NT F- 2/5 voff=0 + BA 52 CR 3/4 TR 1 CH 1 NT D- 2/5 voff=0 + + BA 53 CR 1/4 TR 1 CH 1 NT Eb 2/5 voff=0 + BA 53 CR 1/4 TR 1 CH 1 NT C- 2/5 voff=0 + BA 53 CR 1/4 TR 1 CH 1 NT B 2/5 voff=0 + BA 53 CR 3/4 TR 1 CH 1 NT G#- 4/5 voff=0 + + BA 54 CR 3/4 TR 1 CH 1 NT F- 4/5 voff=0 + BA 54 CR 3/4 TR 1 CH 1 NT Bb- 4/5 voff=0 + + BA 55 CR 3/4 TR 1 CH 1 NT Bb- 2/5 voff=0 + + BA 56 CR 1/4 TR 1 CH 1 NT Bb- 4/5 voff=0 + + BA 57 CR 1/4 TR 1 CH 1 NT Bb-- 2/5 voff=0 + BA 57 CR 1/4 TR 1 CH 1 NT G 2/5 voff=0 + BA 57 CR 1/4 TR 1 CH 1 NT F- 2/5 voff=0 + BA 57 CR 1/4 TR 1 CH 1 NT D- 2/5 voff=0 + BA 57 CR 3/4 TR 1 CH 1 NT Eb 2/5 voff=0 + BA 57 CR 3/4 TR 1 CH 1 NT C- 2/5 voff=0 + BA 57 CR 3/4 TR 1 CH 1 NT B- 2/5 voff=0 + + BA 58 CR 1/4 TR 1 CH 1 NT B 2/5 voff=0 + BA 58 CR 3/4 TR 1 CH 1 NT F 4/5 voff=0 + BA 58 CR 3/4 TR 1 CH 1 NT Bb 4/5 voff=0 + + BA 59 CR 3/4 TR 1 CH 1 NT Bb- 2/5 voff=0 + + BA 60 CR 1/4 TR 1 CH 1 NT Bb- 2/5 voff=0 + BA 60 CR 3/4 TR 1 CH 1 NT C- 4/5 voff=0 + BA 60 CR 3/4 TR 1 CH 1 NT C 4/5 voff=0 + + BA 61 CR 3/4 TR 1 CH 1 NT C-- 3+19/20 voff=0 + BA 61 CR 3/4 TR 1 CH 1 NT A 3+19/20 voff=0 + BA 61 CR 3/4 TR 1 CH 1 NT G- 3+19/20 voff=0 + + BA 63 CR 1/4 TR 1 CH 1 NT E- 1/5 voff=0 + BA 63 CR 1/2 TR 1 CH 1 NT F- 1/5 voff=0 + BA 63 CR 3/4 TR 1 CH 1 NT E- 1+11/20 voff=0 + + BA 64 CR 1/2 TR 1 CH 1 NT E 3+1/5 voff=0 + BA 64 CR 1/2 TR 1 CH 1 NT G- 1+1/5 voff=0 + BA 64 CR 1/2 TR 1 CH 1 NT C 3+1/5 voff=0 + + BA 67 CR 7/10 TR 1 CH 16 End of track + +compile: | + asc2mid main.asc > main.mid && mono /opt/velato/Vlt.exe /s main.mid +run: | + mono main.exe +hello: | + Hello, World! diff --git a/langs/verilog.yaml b/langs/verilog.yaml new file mode 100644 index 0000000..f19fd77 --- /dev/null +++ b/langs/verilog.yaml @@ -0,0 +1,21 @@ +id: "verilog" +aliases: + - "systemverilog" + - "iverilog" + - "v" +name: "Verilog" + +main: "main.v" +template: | + module main; + + initial begin + $display("Hello, world!"); + end + + endmodule + +compile: | + iverilog main.v -o main +run: | + ./main diff --git a/langs/vim.yaml b/langs/vim.yaml new file mode 100644 index 0000000..688f0c9 --- /dev/null +++ b/langs/vim.yaml @@ -0,0 +1,30 @@ +id: "vim" +aliases: + - "viml" + - "vimscript" +name: "Vimscript" + +repl: | + vim +input: | + :echo 123 * 234 + +main: "main.vim" +template: | + :echo "Hello, world!" + +run: | + vim -c "$(< main.vim)" + +scope: + code: | + :let x = 123 * 234 + input: | + :echo x + +lsp: + start: | + vim-language-server --stdio + +skip: + - lsp diff --git a/langs/vimwiki.yaml b/langs/vimwiki.yaml new file mode 100644 index 0000000..4a9b8bd --- /dev/null +++ b/langs/vimwiki.yaml @@ -0,0 +1,11 @@ +id: "vimwiki" +name: "Vimwiki" + +main: "main.txt" +template: | + Hello, world! + +compile: | + pandoc main.txt -f vimwiki -o main.html +run: | + prettier --no-config main.html diff --git a/langs/visualbasic.yaml b/langs/visualbasic.yaml new file mode 100644 index 0000000..4521c33 --- /dev/null +++ b/langs/visualbasic.yaml @@ -0,0 +1,21 @@ +id: "visualbasic" +aliases: + - "vbasic" + - "vb" + - "vbnc" + - "vba" +name: "Visual Basic" +monacoLang: vb + +main: "main.vb" +template: | + Module Main + Sub Main(args As String()) + Console.WriteLine("Hello, world!") + End Sub + End Module + +compile: | + vbnc main.vb +run: | + mono main.exe diff --git a/langs/whitespace.yaml b/langs/whitespace.yaml new file mode 100644 index 0000000..9cbc480 --- /dev/null +++ b/langs/whitespace.yaml @@ -0,0 +1,12 @@ +id: "whitespace" +aliases: + - "ws" +name: "Whitespace" + +main: "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" + +run: | + whitespace main.ws +hello: | + Hello, world diff --git a/langs/wolframlanguage.yaml b/langs/wolframlanguage.yaml new file mode 100644 index 0000000..8116eb9 --- /dev/null +++ b/langs/wolframlanguage.yaml @@ -0,0 +1,24 @@ +id: "wolframlanguage" +aliases: + - "wolfram" + - "mathematica" + - "mathics" + - "wolframmathematica" + - "wls" + - "expreduce" + - "symja" +name: "Wolfram Language" + +repl: | + mathics + +main: "main.wls" +template: | + Print["Hello, world!"] + +run: | + mathics --persist main.wls + +scope: + code: | + x = 123 * 234 diff --git a/langs/x86.yaml b/langs/x86.yaml new file mode 100644 index 0000000..240c5f8 --- /dev/null +++ b/langs/x86.yaml @@ -0,0 +1,29 @@ +id: "x86" +aliases: + - "s" + - "asm" + - "assembly" + - "x86-64" +name: "x86" + +main: "main.S" +template: |2 + .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" + +compile: | + clang main.S -o main +run: | + ./main diff --git a/langs/xslt.yaml b/langs/xslt.yaml new file mode 100644 index 0000000..27a3827 --- /dev/null +++ b/langs/xslt.yaml @@ -0,0 +1,24 @@ +id: "xslt" +aliases: + - "xsltproc" + - "xsl" +name: "XSLT" + +main: "main.xsl" +template: | + +
+ + + + + + Hello, world! +
+ +compile: | + xsltproc main.xsl -o main +run: | + cat main diff --git a/langs/yaml.yaml b/langs/yaml.yaml new file mode 100644 index 0000000..ec24f3b --- /dev/null +++ b/langs/yaml.yaml @@ -0,0 +1,20 @@ +id: "yaml" +aliases: + - "yml" +name: "YAML" +monacoLang: yaml + +main: "main.yaml" +template: | + output: "Hello, world!" + +compile: | + cat main.yaml | yj -yj > main.json +run: | + cat main.json | jq . + +format: + run: | + prettier --no-config --stdin-filepath=format.yaml + input: | + output: 'Hello, world!' diff --git a/langs/yorick.yaml b/langs/yorick.yaml new file mode 100644 index 0000000..7a82e0f --- /dev/null +++ b/langs/yorick.yaml @@ -0,0 +1,21 @@ +id: "yorick" +name: "Yorick" + +repl: | + rlwrap yorick + +main: "main.i" +template: | + write, "Hello, world!" + +run: | + echo "Type '#include \"main.i\"' to run the code." && rlwrap yorick +helloInput: | + #include "main.i" + +scope: + code: | + x = 123 * 234 + input: | + #include "main.i" + x diff --git a/langs/zoem.yaml b/langs/zoem.yaml new file mode 100644 index 0000000..8f3ecba --- /dev/null +++ b/langs/zoem.yaml @@ -0,0 +1,17 @@ +id: "zoem" +aliases: + - "azm" +name: "Zoem" + +repl: | + zoem +input: | + \let{123 * 234} + . + +main: "main.azm" +template: | + \inform{Hello, world!} + +run: | + zoem -I main.azm; zoem diff --git a/langs/zot.yaml b/langs/zot.yaml new file mode 100644 index 0000000..25a719e --- /dev/null +++ b/langs/zot.yaml @@ -0,0 +1,32 @@ +id: "zot" +name: "Zot" + +main: "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 + +run: | + zot --file main.zot +hello: | + 0100100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001000010000100001010 diff --git a/langs/zsh.yaml b/langs/zsh.yaml new file mode 100644 index 0000000..73fdf47 --- /dev/null +++ b/langs/zsh.yaml @@ -0,0 +1,25 @@ +id: "zsh" +aliases: + - "zshell" + - "zshrc" +name: "Zsh" +monacoLang: shell + +repl: | + SHELL=/usr/bin/zsh zsh +input: | + expr 123 \* 234 + +main: ".zshrc" +template: | + echo "Hello, world!" +createEmpty: "" + +run: | + SHELL=/usr/bin/zsh zsh + +scope: + code: | + x="$(expr 123 \* 234)" + input: | + echo "$x" diff --git a/langs/рапира.yaml b/langs/рапира.yaml new file mode 100644 index 0000000..b7a04db --- /dev/null +++ b/langs/рапира.yaml @@ -0,0 +1,14 @@ +id: "рапира" +aliases: + - "rap" + - "rerap" + - "rerap2" + - "rapira" +name: "Рапира" + +main: "main.rap" +template: | + вывод: "Hello, world!" + +run: | + rapira main.rap diff --git a/langs/قلب.yaml b/langs/قلب.yaml new file mode 100644 index 0000000..2363b0d --- /dev/null +++ b/langs/قلب.yaml @@ -0,0 +1,24 @@ +id: "قلب" +aliases: + - "qalb" +name: "قلب" + +repl: | + node /opt/qalb/repl.js +input: | + (ضرب ١٢٣ ٢٣٤) + +main: "main.qalb" +template: | + (قول "مرحبا يا عالم") + +run: | + node /opt/qalb/repl.js main.qalb +hello: | + مرحبا يا عالم + +scope: + code: | + (حدد خ (ضرب ١٢٣ ٢٣٤)) + input: | + خ diff --git a/langs/எழில்.yaml b/langs/எழில்.yaml new file mode 100644 index 0000000..3844533 --- /dev/null +++ b/langs/எழில்.yaml @@ -0,0 +1,19 @@ +id: "எழில்" +aliases: + - "ezhil" + - "ezhili" + - "ezhuthi" + - "tamil" +name: "எழில்" + +repl: | + ezhili + +main: "main.n" +template: | + பதிப்பி "வணக்கம், உலகமே!" + +run: | + ezhili main.n; ezhili +hello: | + வணக்கம், உலகமே! diff --git a/langs/아희.yaml b/langs/아희.yaml new file mode 100644 index 0000000..6d40dbd --- /dev/null +++ b/langs/아희.yaml @@ -0,0 +1,28 @@ +id: "아희" +aliases: + - "aheui" + - "aheuis" + - "rpaheui" + - "caheui" + - "naheui" + - "goaheui" + - "jsaheui" + - "pyaheui" + - "rsaheui" + - "as3aheui" + - "raheui" +name: "아희" + +main: "main.aheui" +template: | + 밤밣따빠밣밟따뿌 + 빠맣파빨받밤뚜뭏 + 돋밬탕빠맣붏두붇 + 볻뫃박발뚷투뭏붖 + 뫃도뫃희멓뭏뭏붘 + 뫃봌토범더벌뿌뚜 + 뽑뽀멓멓더벓뻐뚠 + 뽀덩벐멓뻐덕더벅 + +run: | + aheui main.aheui