code wiki / (root) / nx_beach_workspace_scripts_gate_t48.nx

nx_beach_workspace_scripts_gate_t48.nx source

↩ module page · 30 lines · 1668 B

1import "nx_jsbalance.nx" 2import "nx_gate_verdict.nx" 3func t48_all(buf:*u8,n:i64,c:*i64)->i64 { 4 let out:*i64=sys_mmap(JSB_O_N*8) as *i64;var pos:i64=0;var count:i64=0;var bytes:i64=0;var bad:i64=0 5 while pos<n { 6 let open:i64=jsb_find(buf,n,pos,"<script" as *u8,7);if open<0 {break} 7 let gt:i64=jsb_find(buf,n,open,">" as *u8,1);if gt<0 {return -1} 8 let close:i64=jsb_find(buf,n,gt,"</script" as *u8,8);if close<0 {return -1} 9 let len:i64=close-gt-1;let status:i64=jsb_check((buf as i64+gt+1) as *u8,len,out) 10 count=count+1;bytes=bytes+len 11 gv_values_head();gv_kv("script_index" as *u8,count);gv_kv("bytes" as *u8,len);gv_kv("balance_status" as *u8,status);gv_kv("scanned" as *u8,out[JSB_O_SCAN]) 12 if status!=0||out[JSB_O_SCAN]!=len {bad=bad+1} 13 pos=close+8 14 } 15 gv_check("every emitted script structurally balanced" as *u8,count>0&&bad==0,c) 16 gv_values_head();gv_kv("script_count" as *u8,count);gv_kv("all_script_bytes" as *u8,bytes) 17 return bad 18} 19func main(argc:i64,argv:*i64)->i64 { 20 let c:*i64=gv_ctr();let size:*i64=sys_mmap(8) as *i64 21 var path:*u8="/tmp/beach-workspace-beta-t52.html" as *u8;if argc>1 {path=argv[1] as *u8} 22 let page:*u8=sys_read_file(path,size) 23 if (page as i64)<=0 {return 3} 24 let scanned:i64=t48_all(page,size[0],c) 25 gv_check("all script elements close" as *u8,scanned>=0,c) 26 let out:*i64=sys_mmap(JSB_O_N*8) as *i64 27 gv_check("planted unmatched brace rejected" as *u8,jsb_check("{" as *u8,1,out)!=0,c) 28 gv_check("planted unterminated string rejected" as *u8,jsb_check("'x" as *u8,2,out)!=0,c) 29 return gv_verdict("BEACH-WORKSPACE-ALL-SCRIPT-BALANCE" as *u8,c,"Structural lexer only, not full JS syntax or browser execution" as *u8) 30}