Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ bazel_dep(name = "nlohmann_json", version = "3.11.3")
bazel_dep(name = "googletest", version = "1.15.0")

# https://registry.bazel.build/modules/protobuf
bazel_dep(name = "protobuf", version = "31.1",
repo_name = "com_google_protobuf")
bazel_dep(
name = "protobuf",
version = "31.1",
repo_name = "com_google_protobuf",
)

# https://registry.bazel.build/modules/re2
bazel_dep(name = "re2", version = "2024-07-02")
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ JSIR needs to achieve two seemingly conflicting goals:
* It needs to be **low-level** enough to facilitate dataflow analysis, in
order to support taint analysis, constant propagation, etc..

To achieve these goals, JSIR defines a high level IR that uses MLIR regions to accurately model control flow structures.
To achieve these goals, JSIR defines a high level IR that uses MLIR regions to
accurately model control flow structures.

See
[intermediate_representation_design.md](docs/intermediate_representation_design.md)
Expand All @@ -61,7 +62,6 @@ docker run --rm jsir:latest jsir_gen --help
docker run --rm -v $(pwd):/workspace jsir:latest jsir_gen --input_file=/workspace/yourfile.js
```


### Install build tools

We have only tested `clang` on Linux:
Expand Down
199 changes: 192 additions & 7 deletions maldoca/astgen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -70,35 +70,218 @@ cc_library(
)

cc_library(
name = "ast_gen",
srcs = ["ast_gen.cc"],
hdrs = ["ast_gen.h"],
name = "printer_base",
hdrs = ["printer_base.h"],
deps = [
"@com_google_protobuf//src/google/protobuf/io",
"@com_google_protobuf//src/google/protobuf/io:printer",
],
)

cc_library(
name = "ast_gen_utils",
hdrs = ["ast_gen_utils.h"],
deps = [
":ast_def",
"//maldoca/base:path",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io:printer",
],
)

cc_library(
name = "cc_printer_base",
srcs = ["cc_printer_base.cc"],
hdrs = ["cc_printer_base.h"],
deps = [
":ast_def",
":ast_gen_utils",
":printer_base",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ast_header_printer",
srcs = ["ast_header_printer.cc"],
hdrs = ["ast_header_printer.h"],
deps = [
":ast_def",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ast_source_printer",
srcs = ["ast_source_printer.cc"],
hdrs = ["ast_source_printer.h"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ast_serialize_printer",
srcs = ["ast_serialize_printer.cc"],
hdrs = ["ast_serialize_printer.h"],
deps = [
":ast_def",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ast_from_json_printer",
srcs = ["ast_from_json_printer.cc"],
hdrs = ["ast_from_json_printer.h"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_from_json_utils",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"//maldoca/base:path",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/cleanup",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ts_interface_printer",
srcs = ["ts_interface_printer.cc"],
hdrs = ["ts_interface_printer.h"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen_utils",
":printer_base",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ir_table_gen_printer",
srcs = ["ir_table_gen_printer.cc"],
hdrs = ["ir_table_gen_printer.h"],
deps = [
":ast_def",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ast_to_ir_source_printer",
srcs = ["ast_to_ir_source_printer.cc"],
hdrs = ["ast_to_ir_source_printer.h"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen_utils",
":cc_printer_base",
":symbol",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@com_google_protobuf//src/google/protobuf/io",
],
)

cc_library(
name = "ir_to_ast_source_printer",
srcs = ["ir_to_ast_source_printer.cc"],
hdrs = ["ir_to_ast_source_printer.h"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen_utils",
":cc_printer_base",
":printer_base",
":symbol",
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings",
"@com_google_protobuf//src/google/protobuf/io",
"@com_google_protobuf//src/google/protobuf/io:printer",
],
)

cc_library(
name = "ast_from_json_utils",
hdrs = ["ast_from_json_utils.h"],
deps = [
"//maldoca/base:status",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@nlohmann_json//:json",
],
)

cc_library(
name = "ir_to_ast_util",
hdrs = ["ir_to_ast_util.h"],
deps = [
"//maldoca/base:status",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings:string_view",
"@llvm-project//llvm:Support",
"@llvm-project//mlir:IR",
],
)

cc_binary(
name = "ast_gen_main",
srcs = ["ast_gen_main.cc"],
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen",
":ast_from_json_printer",
":ast_header_printer",
":ast_serialize_printer",
":ast_source_printer",
":ast_to_ir_source_printer",
":ir_table_gen_printer",
":ir_to_ast_source_printer",
"//maldoca/base:filesystem",
"//maldoca/base:path",
"//maldoca/base:status",
Expand All @@ -113,8 +296,10 @@ cc_test(
deps = [
":ast_def",
":ast_def_cc_proto",
":ast_gen",
":ast_from_json_printer",
":ast_header_printer",
":symbol",
":ts_interface_printer",
"//maldoca/base:filesystem",
"//maldoca/base/testing:status_matchers",
"@abseil-cpp//absl/memory",
Expand Down
Loading
Loading