Skip to content

Instantly share code, notes, and snippets.

View JustinSDK's full-sized avatar
👨‍👩‍👧
Working from home

Justin Lin JustinSDK

👨‍👩‍👧
Working from home
View GitHub Profile
@JustinSDK
JustinSDK / array.wat
Last active September 20, 2018 00:09
Wasm Array
;; 說明:https://openhome.cc/Gossip/WebAssembly/Array.html
(module
(import "env" "log" (func $log (param i32)))
(memory 1)
;; 建立新陣列
(func $arr (param $len i32) (result i32)
(local $offset i32) ;; 記錄陣列偏移量
(set_local $offset (i32.load (i32.const 0))) ;; 取得偏移量
@JustinSDK
JustinSDK / bytecode_abc_2.py
Last active August 25, 2018 08:01
Byte Code ABC - 2
class Num:
def __init__(self, value):
self.value = value
def bc_instructn(self, bytecodes):
bytecodes.append(f'push {self.value}')
return bytecodes
class Add:
def __init__(self, left, right):
@JustinSDK
JustinSDK / bytecode_abc_1.py
Last active August 25, 2018 08:02
Byte Code ABC - 1
class Num:
def __init__(self, value):
self.value = value
def evaluate(self, stack):
push(stack, self.value)
return stack
class Add:
def __init__(self, left, right):
@JustinSDK
JustinSDK / download.py
Created August 14, 2018 07:54
download.py
from urllib.request import urlopen
def download(url, file):
with urlopen(url) as url, open(file, 'wb') as f:
f.write(url.read())
urls = [
'http://openhome.cc/Gossip/Encoding/',
'http://openhome.cc/Gossip/Scala/',
'http://openhome.cc/Gossip/JavaScript/',
@JustinSDK
JustinSDK / async_demo.py
Last active August 14, 2018 06:14
async_demo.py
from concurrent.futures import ThreadPoolExecutor
import time
import random
def doAsync(task):
g = task()
future = next(g)
while True:
try:
future = g.send(future.result())
@JustinSDK
JustinSDK / modify_ast.py
Created August 1, 2018 01:51
modify_ast.py
import ast
code = '''
def add(n1, n2):
return n1 + n2
print(add(3, 4))
'''
class CrazyTransformer(ast.NodeTransformer):
def visit_BinOp(self, node):
@JustinSDK
JustinSDK / simple_type_checking.py
Last active August 1, 2018 01:32
simple_type_checking.py
import sys, re, ast
type_hints_re = re.compile(r'([a-zA-Z]+):\s*([a-zA-Z]+)')
code = '''
"""x: int"""
x = 2
'''
node = ast.parse(code)
@JustinSDK
JustinSDK / simple_lang.js
Last active February 21, 2019 02:18
simple_lang.js - this gist has evolved into https://github.com/JustinSDK/toy_lang
// === Tokenizer
class Tokens {
constructor(tokens) {
this.head = tokens[0];
this.tail = tokens.slice(1);
}
}
class Tokenizer {
@JustinSDK
JustinSDK / turing_machine.js
Created April 7, 2018 09:24
Turing Machine
function println(v) {
console.log(v.toString());
}
class List {
constructor(array) {
this.array = array;
}
get first() {
@JustinSDK
JustinSDK / brainfuck2.js
Last active April 20, 2018 01:13
BrainfuckJS-2
class List {
constructor(array) {
this.array = array;
}
get first() {
return this.array[0];
}
get tail() {