#lib json.nas var json={ text:'', line:1, size:0, ptr:0, get:nil, check:nil, next:nil, match:nil, hash_gen:nil, vec_gen:nil, member:nil, parse:nil, token:{content:'',type:''}, content:[], }; json.get=func(filename) { me.line=1; me.ptr=0; me.content=[]; me.token={content:'',type:''}; me.text=io.fin(filename); if(!size(me.text)) die("cannot open "~filename); me.text=split('',me.text); me.size=size(me.text); return; } json.check=func(ptr) { var str=me.text[ptr]; return (str=='{' or str=='}' or str=='[' or str==']' or str==',' or str==':' or str=='\"' or ('0'<=str and str<='9')); } json.next=func() { while(me.ptr=me.size) { me.token.content=""; me.token.type="eof"; return; } if(me.text[me.ptr]=='{') { me.token.content='{'; me.token.type="left brace"; } elsif(me.text[me.ptr]=='}') { me.token.content='}'; me.token.type="right brace"; } elsif(me.text[me.ptr]=='[') { me.token.content='['; me.token.type="left bracket"; } elsif(me.text[me.ptr]==']') { me.token.content=']'; me.token.type="right bracket"; } elsif(me.text[me.ptr]==',') { me.token.content=','; me.token.type="comma"; } elsif(me.text[me.ptr]==':') { me.token.content=':'; me.token.type="colon"; } elsif(me.text[me.ptr]=='\"') { var s=""; me.ptr+=1; while(me.ptr