cparser: annotate AST printing for top-level decls
In order to compare ASTs for appearance/disappearance/modification of declarations, it is easier to have the annotations obvious to any external tool for ease of parsing. Annotations take the form: "##<decl_type>: <name>", e.g. "##Function: ctzl" Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
This commit is contained in:
parent
6f13828560
commit
6095e9ecb2
|
@ -378,15 +378,34 @@ end
|
||||||
fun print_ast cse ast = let
|
fun print_ast cse ast = let
|
||||||
open Absyn_Serial
|
open Absyn_Serial
|
||||||
|
|
||||||
|
fun decl_header decl
|
||||||
|
= case decl of
|
||||||
|
VarDecl (_, s, _, _, _) => "VarDecl: " ^ node s
|
||||||
|
| StructDecl (s, _) => "StructDecl: " ^ node s
|
||||||
|
| ExtFnDecl exfn => "ExtFnDecl: " ^ node (#name exfn)
|
||||||
|
| EnumDecl (soptw, _) =>
|
||||||
|
case node soptw of
|
||||||
|
SOME s => "EnumDecl: " ^ s
|
||||||
|
| NONE => "EnumDecl: Anonymous";
|
||||||
|
(* TypeDecl is not present in final AST *)
|
||||||
|
|
||||||
fun serial_defn (FnDefn ((retty,fnm),params,specs,body))
|
fun serial_defn (FnDefn ((retty,fnm),params,specs,body))
|
||||||
= Nm ("Function", [varspec_serial (retty,fnm),
|
= Nm ("Function", [varspec_serial (retty,fnm),
|
||||||
list_serial varspec_serial params,
|
list_serial varspec_serial params,
|
||||||
list_serial fnspec_serial specs,
|
list_serial fnspec_serial specs,
|
||||||
list_serial bi_serial (node body)])
|
list_serial bi_serial (node body)])
|
||||||
| serial_defn (Decl dw) = decl_serial (node dw)
|
| serial_defn (Decl dw) = decl_serial (node dw)
|
||||||
|
|
||||||
|
fun defn_lines defn
|
||||||
|
= case defn of
|
||||||
|
FnDefn ((_, fnm), _, _, _) => ["##Function: " ^ node fnm] @
|
||||||
|
lines_serial (serial_defn defn)
|
||||||
|
| Decl decl => ["##" ^ decl_header (node decl)] @
|
||||||
|
lines_serial (serial_defn defn)
|
||||||
|
|
||||||
fun print_lines ss = app print (map (fn s => s ^ "\n") ss)
|
fun print_lines ss = app print (map (fn s => s ^ "\n") ss)
|
||||||
in
|
in
|
||||||
app (print_lines o lines_serial o serial_defn) ast
|
app (print_lines o defn_lines) ast
|
||||||
end
|
end
|
||||||
|
|
||||||
fun adjusted_complex_fncalls cse ast = let
|
fun adjusted_complex_fncalls cse ast = let
|
||||||
|
|
Loading…
Reference in New Issue