blob: d8eba2d094def49346ea601c2ecefb02339617ff [file] [log] [blame]
# This package contains utility functions that extract or operate on
# the concrete syntax tree (cst) structure built up by verilog.y.
# Any code that relies on the internal tree structure should be isolated in
# here.
licenses(["notice"])
package(
default_visibility = [
"//verilog/analysis:__subpackages__",
"//verilog/formatting:__subpackages__",
"//verilog/parser:__subpackages__",
"//verilog/tools/kythe:__pkg__",
"//verilog/tools/syntax:__pkg__", # for printing
],
)
# Generate foreach list for nonterminal enums.
# Libraries that need these generated include files should list them
# under srcs, even if they are included by headers.
genrule(
name = "verilog_nonterminals_foreach_gen",
srcs = ["verilog_nonterminals.h"],
outs = ["verilog_nonterminals_foreach-gen.inc"],
cmd = "sed -n -e '/BEGIN GENERATE/,/END GENERATE/p' $< | " +
"grep -v GENERATE | " +
"sed -e 's|^ *|CONSIDER(|' -e 's| =.*,|,|' -e 's|,|)|' > $@",
)
cc_library(
name = "verilog_nonterminals",
srcs = [
"verilog_nonterminals.cc",
"verilog_nonterminals_foreach.inc",
"verilog_nonterminals_foreach-gen.inc",
],
hdrs = [
"verilog_nonterminals.h",
],
deps = [
"//common/text:constants",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "verilog_nonterminals_test",
srcs = ["verilog_nonterminals_test.cc"],
deps = [
":verilog_nonterminals",
"//common/text:constants",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verilog_matchers",
srcs = [
"verilog_matchers.cc",
"verilog_nonterminals_foreach.inc",
"verilog_nonterminals_foreach-gen.inc",
],
hdrs = [
"verilog_matchers.h",
],
deps = [
":verilog_nonterminals",
"//common/analysis/matcher:matcher_builders",
"//common/text:symbol",
"//verilog/parser:verilog_token_enum",
],
)
cc_test(
name = "verilog_matchers_test",
srcs = ["verilog_matchers_test.cc"],
deps = [
":verilog_matchers",
":verilog_treebuilder_utils",
"//common/analysis/matcher",
"//common/analysis/matcher:core_matchers",
"//common/analysis/matcher:matcher_builders",
"//common/analysis/matcher:matcher_test_utils",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verilog_treebuilder_utils",
srcs = ["verilog_treebuilder_utils.cc"],
hdrs = ["verilog_treebuilder_utils.h"],
deps = [
":verilog_nonterminals",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "match_test_utils",
testonly = 1,
srcs = ["match_test_utils.cc"],
hdrs = ["match_test_utils.h"],
deps = [
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:text_structure",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "constraints",
srcs = ["constraints.cc"],
hdrs = ["constraints.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "constraints_test",
srcs = ["constraints_test.cc"],
deps = [
":constraints",
":verilog_nonterminals",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:casts",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "DPI",
srcs = ["DPI.cc"],
hdrs = ["DPI.h"],
deps = [
":verilog_matchers",
":verilog_nonterminals",
":verilog_treebuilder_utils",
"//common/analysis:syntax_tree_search",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
"//verilog/parser:verilog_token_classifications",
"//verilog/parser:verilog_token_enum",
],
)
cc_test(
name = "DPI_test",
srcs = ["DPI_test.cc"],
deps = [
":DPI",
"//common/text:token_info_test_util",
"//common/text:tree_utils",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "declaration",
srcs = ["declaration.cc"],
hdrs = ["declaration.h"],
deps = [
":identifier",
":verilog_matchers",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:constants",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:container_util",
"//verilog/parser:verilog_token_enum",
],
)
cc_test(
name = "declaration_test",
srcs = ["declaration_test.cc"],
deps = [
":declaration",
":match_test_utils",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:text_structure",
"//common/text:tree_utils",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "dimensions",
srcs = ["dimensions.cc"],
hdrs = ["dimensions.h"],
deps = [
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "dimensions_test",
srcs = ["dimensions_test.cc"],
deps = [
":dimensions",
":verilog_matchers",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "expression",
srcs = ["expression.cc"],
hdrs = ["expression.h"],
deps = [
":verilog_nonterminals",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:casts",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "expression_test",
srcs = ["expression_test.cc"],
deps = [
":expression",
":verilog_nonterminals",
"//common/text:symbol",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "functions",
srcs = ["functions.cc"],
hdrs = ["functions.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
":verilog_nonterminals",
":verilog_treebuilder_utils",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "functions_test",
srcs = ["functions_test.cc"],
deps = [
":functions",
":identifier",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_info_test_util",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "identifier",
srcs = ["identifier.cc"],
hdrs = ["identifier.h"],
deps = [
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//verilog/parser:verilog_token_enum",
],
)
cc_test(
name = "identifier_test",
srcs = ["identifier_test.cc"],
deps = [
":identifier",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:concrete_syntax_leaf",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "macro",
srcs = ["macro.cc"],
hdrs = ["macro.h"],
deps = [
":verilog_matchers",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
],
)
cc_test(
name = "macro_test",
srcs = ["macro_test.cc"],
deps = [
":macro",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:text_structure",
"//common/text:token_info_test_util",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "class",
srcs = ["class.cc"],
hdrs = ["class.h"],
deps = [
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
],
)
cc_test(
name = "class_test",
srcs = ["class_test.cc"],
deps = [
":class",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_info_test_util",
"//common/util:casts",
"//common/util:logging",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "module",
srcs = ["module.cc"],
hdrs = ["module.h"],
deps = [
":verilog_matchers", # fixdeps: keep
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//verilog/parser:verilog_token_enum",
],
)
cc_test(
name = "module_test",
srcs = ["module_test.cc"],
deps = [
":module",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_info_test_util",
"//common/util:casts",
"//common/util:logging",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "net",
srcs = ["net.cc"],
hdrs = ["net.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "net_test",
srcs = ["net_test.cc"],
deps = [
":net",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "data",
srcs = ["data.cc"],
hdrs = ["data.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "data_test",
srcs = ["data_test.cc"],
deps = [
":data",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "package",
srcs = ["package.cc"],
hdrs = ["package.h"],
deps = [
":verilog_matchers",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
],
)
cc_test(
name = "package_test",
srcs = ["package_test.cc"],
deps = [
":match_test_utils",
":package",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:casts",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/status",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "parameters",
srcs = ["parameters.cc"],
hdrs = ["parameters.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:casts",
"//common/util:logging",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "parameters_test",
srcs = ["parameters_test.cc"],
deps = [
":parameters",
":verilog_nonterminals",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:casts",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "port",
srcs = ["port.cc"],
hdrs = ["port.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
"//common/util:logging",
],
)
cc_test(
name = "port_test",
srcs = ["port_test.cc"],
deps = [
":port",
":type",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:concrete_syntax_leaf",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "seq_block",
srcs = ["seq_block.cc"],
hdrs = ["seq_block.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:syntax_tree_context",
"//common/text:tree_utils",
],
)
cc_test(
name = "seq_block_test",
srcs = ["seq_block_test.cc"],
deps = [
":seq_block",
":verilog_matchers",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/text:syntax_tree_context",
"//common/text:text_structure",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "statement",
srcs = ["statement.cc"],
hdrs = ["statement.h"],
deps = [
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
],
)
cc_test(
name = "statement_test",
srcs = ["statement_test.cc"],
deps = [
":statement",
":verilog_matchers",
":verilog_nonterminals",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/text:token_info_test_util",
"//common/util:casts",
"//common/util:logging",
"//common/util:range",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "tasks",
srcs = ["tasks.cc"],
hdrs = ["tasks.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "tasks_test",
srcs = ["tasks_test.cc"],
deps = [
":identifier",
":tasks",
"//common/analysis:syntax_tree_search",
"//common/analysis:syntax_tree_search_test_utils",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:text_structure",
"//common/text:token_info",
"//common/util:casts",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"//verilog/parser:verilog_token_enum",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "type",
srcs = ["type.cc"],
hdrs = ["type.h"],
deps = [
":identifier",
":verilog_matchers", # fixdeps: keep
"//common/analysis:syntax_tree_search",
"//common/analysis/matcher",
"//common/analysis/matcher:matcher_builders",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:tree_utils",
],
)
cc_test(
name = "type_test",
srcs = ["type_test.cc"],
deps = [
":context_functions",
":type",
"//common/analysis:syntax_tree_search",
"//common/text:text_structure",
"//common/util:logging",
"//verilog/analysis:verilog_analyzer",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "context_functions",
hdrs = ["context_functions.h"],
deps = [
":verilog_nonterminals",
"//common/text:syntax_tree_context",
],
)
cc_library(
name = "numbers",
srcs = ["numbers.cc"],
hdrs = ["numbers.h"],
deps = [
"//common/util:logging",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "verilog_tree_print",
srcs = ["verilog_tree_print.cc"],
hdrs = ["verilog_tree_print.h"],
deps = [
":verilog_nonterminals",
"//common/text:concrete_syntax_leaf",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:token_info",
"//common/text:tree_utils",
"//common/util:value_saver",
"//verilog/parser:verilog_parser",
"@com_google_absl//absl/strings",
],
)
cc_test(
name = "context_functions_test",
srcs = ["context_functions_test.cc"],
deps = [
":context_functions",
":verilog_nonterminals",
"//common/text:concrete_syntax_tree",
"//common/text:symbol",
"//common/text:syntax_tree_context",
"//common/text:tree_builder_test_util",
"//common/util:casts",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "numbers_test",
srcs = ["numbers_test.cc"],
deps = [
":numbers",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "verilog_tree_print_test",
srcs = ["verilog_tree_print_test.cc"],
deps = [
":verilog_tree_print",
"//common/text:symbol",
"//verilog/analysis:verilog_analyzer",
"@com_google_absl//absl/memory",
"@com_google_googletest//:gtest_main",
],
)