package lua_parser
A Lua 5.2 Parser
Install
Dune Dependency
Authors
Maintainers
Sources
1.0.2.tar.gz
md5=35b1a3c607a0e23f81322f4b99b11d13
sha512=ed3995928aaf87d68114a9d5bee1ca5b41dd359134589ef6eba4ea2cc5b41a78bc4ac35603301dc1bd29260a0908c6142fabf689a7a7d8b76a3abf8ecdbd9194
doc/src/lua_parser.lib/pp_lua.ml.html
Source file pp_lua.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
(* The MIT License Copyright (c) 2020 Jason D. Nielsen <drjdnielsen@gmail.com> *) open Ast let rec repeat s n = match n with | 0 -> "" | 1 -> s | _ -> s ^ repeat s (n - 1) let count = ref 0 let indent () = count := !count + 3 let dedent () = count := !count - 3 let ws () = repeat " " !count let add_nl str = str ^ "\n" let rec pp = function | Break -> "break" | Bool str -> str | Ellipsis -> "..." | Ident str -> str | Number str -> str | String str -> str | Binop(str, ex1, ex2) -> pp ex1 ^ " " ^ str ^ " " ^ pp ex2 | Unop(str, ex) -> str ^ pp ex | Args lex -> "(" ^ pp lex ^ ")" | Assign(ex1, ex2) -> pp ex1 ^ " = " ^ pp ex2 | Do ex -> "do" ^ pp_block ex false | Elseif(ex1, ex2) -> "elseif " ^ pp ex1 ^ " then" ^ pp_block ex2 true | Fassign(ex1, ex2) -> "[" ^ pp ex1 ^ "]" ^ " = " ^ pp ex2 | Fbody(ex1, ex2) -> "(" ^ pp ex1 ^ ")" ^ pp_block ex2 false | Forin(ex1, ex2, ex3) -> "for " ^ pp ex1 ^ " in " ^ pp ex2 ^ " do" ^ pp_block ex3 false | For1(ex1, ex2, ex3, ex4) -> pp_for1 ex1 ex2 ex3 ex4 | For2(ex1, ex2, ex3, ex4, ex5) -> pp_for2 ex1 ex2 ex3 ex4 ex5 | Function(ex1, ex2) -> "function " ^ pp ex1 ^ pp ex2 | FunctionE ex -> "function" ^ pp ex | Goto ex -> "goto " ^ pp ex | If1(ex1, ex2) -> "if " ^ pp ex1 ^ " then" ^ pp_block ex2 false | If2(ex1, ex2, ex3) -> pp_if2 ex1 ex2 ex3 | If3(ex1, ex2, ex3) -> pp_if3 ex1 ex2 ex3 | If4(ex1, ex2, ex3, ex4) -> pp_if4 ex1 ex2 ex3 ex4 | Key1 ex -> "[" ^ pp ex ^ "]" | Key2 ex -> "." ^ pp ex | Label ex1 -> "::" ^ pp ex1 ^ "::" | Lassign(ex1, ex2) -> "local " ^ pp ex1 ^ " = " ^ pp ex2 | Lnames ex -> "local " ^ pp ex | Lfunction(ex1, ex2) -> "local function " ^ pp ex1 ^ pp ex2 | Member(ex1, ex2) -> pp ex1 ^ ":" ^ pp ex2 | Mcall(ex1, ex2, ex3) -> pp ex1 ^ ":" ^ pp ex2 ^ pp ex3 | Pexp ex -> "(" ^ pp ex ^ ")" | Repeat(ex1, ex2) -> "repeat" ^ pp_block ex1 true ^ "until " ^ pp ex2 | Return ex -> "return " ^ pp ex | Table ex -> "{" ^ pp ex ^ "}" | Vargs ex -> pp ex ^ ", ..." | While(ex1, ex2) -> "while " ^ pp ex1 ^ " do" ^ pp_block ex2 false | Clist [] -> "" | Clist lex -> pp_clist lex | Elist [] -> "" | Elist lex -> pp_elist lex | FNlist [] -> "" | FNlist lex -> pp_fnlist lex | Slist [] -> "" | Slist lex -> pp_slist lex and pp_block stl rpt = indent(); let str = "\n" ^ ws () in let lex = extract_list stl in let out = if List.length lex > 0 then let plex = List.map add_nl (List.map pp lex) in String.concat (ws ()) plex else "\n" in dedent (); let tl = match rpt with | false -> "end" | true -> "" in str ^ out ^ ws () ^ tl and pp_slist lex = let plex = List.map add_nl (List.map pp lex) in ws () ^ String.concat (ws ()) plex and pp_elist lex = let plex = List.map pp lex in String.concat ", " plex and pp_clist lex = let plex = List.map pp lex in String.concat "" plex and pp_fnlist lex = let plex = List.map pp lex in String.concat "." plex and pp_if2 ex1 ex2 ex3 = "if " ^ pp ex1 ^ " then" ^ pp_block ex2 true ^ ws () ^ "else" ^ pp_block ex3 false and pp_if3 ex1 ex2 ex3 = "if " ^ pp ex1 ^ " then" ^ pp_block ex2 true ^ "\n" ^ pp ex3 ^ ws () ^ "end" and pp_if4 ex1 ex2 ex3 ex4 = "if " ^ pp ex1 ^ " then" ^ pp_block ex2 true ^ "\n" ^ pp ex3 ^ ws () ^ "else" ^ pp_block ex4 false and pp_for1 ex1 ex2 ex3 ex4 = "for " ^ pp ex1 ^ " = " ^ pp ex2 ^ ", " ^ pp ex3 ^ " do" ^ pp_block ex4 false and pp_for2 ex1 ex2 ex3 ex4 ex5 = "for " ^ pp ex1 ^ " = " ^ pp ex2 ^ ", " ^ pp ex3 ^ ", " ^ pp ex4 ^ " do" ^ pp_block ex5 false let pp_lua ast = print_string (pp ast) let pp_lua_str ast = pp ast
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>