_seps: "/(){},.:='-!" 20 neq = [term:"left" .w? "!=" .w? term:"right"] 19 role_block = [term:"role" .w? "{" .w? .s!.([.w? "," .w?] [ .r?([comment .w?]) term:"arg"]) .w? "}"] 18 amb = { ["no" .w? "amb":!"amb"] ["amb":"amb"] } 17 rule_term = { uniq:"uniq" role_of:"role_of" "amb":"amb" has:"has" eq:"eq" neq:"neq" rel:"rel" } 16 rule = [rule_term:"res" .w? ":-" .w? .s!([.w? "," .w?] rule_term:"arg") .w? "."] 15 inner = ["." term:"arg"] 14 app = [.._seps!:"f" "(" .w? .s?([.w? "," .w?] { [".." .._seps!:"tail_sym"] "..":"tail" term:"arg" }) .w? ")"] 13 amb_role = ["amb_role" .w? "(" .w? term:"a" .w? "," .w? term:"b1" .w? "," .w? term:"b2" .w? ")"] 12 comment = ["//" ..."\n"?] 11 amb_rel = ["amb_rel" .w? "(" .w? term:"a" .w? "," .w? term:"b1" .w? "," .w? term:"b2" .w? ")"] 10 has = [term_no_app:"f" .w? "(" .w? term:"arg" .w? ")" .w? "=>" .w? term:"res"] 9 ava = [.._seps!:"avatar" "'" .w? "(" .w? term:"core" .w? ")"] 8 uniq = ["uniq" .w! term:"arg"] 7 eq = [term_no_app:"f" .w? "(" .w? term:"arg" .w? ")" .w? "=" .w? term:"res"] 6 rel = ["(" .w? term:"a" .w? "," .w? term:"b" .w? ")"] 5 sym = {.t?:"str_val" .._seps!:"val"} 4 role_of = { ["role_of(" .w? term:"arg" .w? ")" .w? "=" .w? term:"role"] [term:"arg" .w? ":" .w? term:"role"] } 3 term = {inner:"inner" ava:"ava" app:"app" sym:"sym"} 2 term_no_app = {inner:"inner" ava:"ava" sym:"sym"} 2 expr = { rule:"rule" uniq:"uniq" role_of:"role_of" amb_role:"amb_role" amb_rel:"amb_rel" amb has:"has" eq:"eq" rel:"rel" } 1 data = .l({ ["import" .w! .t!:"import"] ["eval" .w! .._seps!:"eval"] ["no" .w! "eval":"no_eval"] role_block [expr:"expr" .w?] comment }) 0 document = [.w? data:"data" .w?]