Skip to content

Instantly share code, notes, and snippets.

@tangentstorm
tangentstorm / macro.rs
Created Mar 24, 2018
my first rust macro
View macro.rs
fn when(&mut self, v:VID, val:NID, nid:NID)->NID {
macro_rules! op {
[not $x:ident] => {{ let x1 = self.when(v, val, $x); self.not(x1) }};
[$f:ident $x:ident $y:ident] => {{
let x1 = self.when(v, val, $x);
let y1 = self.when(v, val, $y);
self.$f(x1,y1) }}}
if v >= self.vars.len() { nid }
else { match self[nid] {
Op::Var(x) if x==v => val,
@tangentstorm
tangentstorm / risc.pas
Created Apr 9, 2013
RISC virtual machine by Niklaus Wirth from his book, Compiler Construction. (This is actually oberon, not pascal, but github doesn't highlight oberon)
View risc.pas
MODULE RISC; (* NW 22.9.07 / 28.3.11 *)
IMPORT SYSTEM, Texts, Oberon;
CONST
MemSize = 1024; (* in words *)
MOV = 0; AND = 1; IOR = 2; XOR = 3; LSL = 4; ASR = 5;
ADD = 8; SUB = 9; MUL = 10; Div = 11; CMP = 12;
@tangentstorm
tangentstorm / BeaconTeleport.cs
Created Dec 5, 2017
BeaconTeleport for unity3d / VRTK
View BeaconTeleport.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRTK;
/* This class lets you leave a beacon in the scene and teleport to it later.
*
* It should be attached to an object that also has a VRTK_ControllerEvents
* component attached.
*
View magic-squares.k
/ https://en.wikipedia.org/wiki/Siamese_method
msq: {[m] s:(-1+m*m) (1 -1 +)\ (_ m%2; 0); 1+/.[m#,m#0; ; :; ]'[(s+2 -1*/:,/m#/:!m)!m; !#s]}
View learntris.c
#include <stdio.h>
#define I(n) for(int i=0; i<n; i++)
#define J(n) for(int j=0; j<n; j++)
#define O(str) printf(str)
#define Oc(c) putc(c, stdout)
#define M(x,y,c) m[y][x]=c;
int main() {
char c; char m[22][10];
@tangentstorm
tangentstorm / k.bnf
Created Jun 24, 2016
lexer and parser for K language... part of IntelliK
View k.bnf
{
parserClass="com.x1010data.intellik.parser.KParser"
extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
psiClassPrefix="K"
psiImplClassSuffix="Impl"
psiPackage="com.x1010data.intellik.psi"
psiImplPackage="com.x1010data.intellik.psi.impl"
elementTypeHolderClass="com.x1010data.intellik.psi.KTypes"
View keypad_art.c
#include <SoftwareSerial.h>
#include <LedControl.h>
#include <Key.h>
#include <Keypad.h>
const byte rows = 4;
const byte cols = 4;
@tangentstorm
tangentstorm / gramco.k
Last active Jun 1, 2016
Rough port of my grammar combinator thing to k3.
View gramco.k
/ 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 wejalboot.py
"""
>>> ebnf_sc.scan('x = A | b')
[('x', 'IDENT', 0), ('=', '=', 2), ('A', 'IDENT', 4), ('|', '|', 6), ('b', 'IDENT', 8)]
"""
from collections import namedtuple
from warnings import warn
import string
def T(tag, doc, args):
"""Creates a new tuple type."""
View ints.py
def read_ints():
i = 0
while True:
s = input('enter number[%i]:' % i)
try:
yield int(s); i+=1
except ValueError:
if s == "": return
else: print "ignoring invalid number"