View oK-bot.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// An IRC bot for the k5 programming language, | |
// using oK from : https://github.com/JohnEarnest/ok | |
"use strict"; | |
var irc = require('irc'); | |
var ok = require('./ok/ok'); | |
const MAXLINES = 8; | |
var client = new irc.Client('irc.freenode.net', 'oK-bot', { | |
channels: ['#jsoftware', '#learnprogramming'] |
View CmdParser.gd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# i wrote this, and it works, but then i decided to just use Godot's own Expression parser. | |
# https://docs.godotengine.org/en/latest/tutorials/scripting/evaluating_expressions.html | |
func _examples(): | |
test('@title["the deck"]') | |
test('@show["jp-editor"; 0]') | |
test('@ed.xy[ 0 5]') | |
func test(cmd:String): | |
if cmd.begins_with('@'): |
View animation.ijs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
NB. Code from the "Basic Animation In J" video | |
NB. https://www.youtube.com/watch?v=uL-70fMTVnw | |
NB. ------------------------------------------------------------------------ | |
NB. animation demo | |
load 'viewmat' | |
coinsert'jgl2' | |
wd 'pc w0 closeok' NB. parent control (window) named 'w0' |
View ed.ijs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
NB. Core logic for a tiny editor in J. | |
NB. No select/copy/paste (in this gist), but it does support multiple cursors. | |
NB. This started as the code for editing a single line of text, but I'm now | |
NB. using three copies simultaneously: one for a single token, one for | |
NB. boxed tokens on a line, and one for boxed lines in a buffer. | |
coclass 'ed' | |
init =: {{ | |
B =: '' NB. the buffer to edit. | |
C =: 0 NB. cursor position(s) |
View gramco.k
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ grammar combinators in K | |
/ for longer description (in python), see: | |
/ http://tangentstorm.github.io/draft/wejalboot.py.html | |
/ -- misc helper functions ------------------------------------ | |
join:{[sep;strs] / join strs with 'sep' as delimiter | |
(#sep) _ ,/ sep,' strs} |
View parsers.ijs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
clear'' | |
NB. Parser Combinators for J | |
NB. | |
NB. The semantics here are heavily inspired by | |
NB. Allesandro Warth's ometa system: | |
NB. | |
NB. http://tinlizzie.org/ometa/ | |
NB. | |
NB. but implemented as parser combinators rather than a standalone language. | |
NB. |
View asmvm.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const DATA=0, CALL=1, WORK=2, TEMP=3 | |
class Worker { | |
vm = null // virtual machine | |
w = 0 // worker number | |
f = 0 // function pointer | |
e = 0 // execution pointer | |
t = 0 // current token in function |
View meld.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
glue = (x,y) => x === undefined ? y : Array.isArray(x) ? x.concat(y) : [x,y] | |
function meld(xs) { | |
let idx = {}, res = [], it | |
for (x of xs) { | |
if (x.id in idx) it = res[idx[x.id]] | |
else { it = {id: x.id}; idx[x.id] = res.length; res.push(it) } | |
for (k of Object.keys(x)) if (k!=='id') it[k] = glue(it[k], x[k]) } | |
return res } |
View catalan-1-filter.ijs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
c =: '01' ([: +/ =)"0 _ ] NB. count 0 and 1 | |
t =: {{(*/ <:/"1 c\ y) *. =/c y }} NB. the two rules | |
g =: {{'01' {~ #:i.2^2*y}} NB. generate the numbers | |
f =: {{y {~ I.t"1 y}} NB. filter by t | |
f g 3 |
View something4thy.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var b4 = (new function() { var EOF='\0',self = { | |
d:[], a:[], // data and auxiliary/return stack | |
defs:[],core:[],scope:[], // dictionary | |
base:10, // numbers | |
cp:-1, ch:'\x01',ibuf:[],wd:'', // lexer state | |
compiling:false,state:[],target:[], // compiler state | |
def : function (k,v){ | |
var res=self.defs.length; self.defs.push(v); self.scope[0].push([k,res]); return res }, |
NewerOlder