# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Emboss front end # # The code in this directory translates an Emboss definition file (.emb) to an # intermediate representation (IR). The IR is passed to back end code # generators to generate code in various languages. load("@rules_python//python:py_binary.bzl", "py_binary") load("@rules_python//python:py_library.bzl", "py_library") load("@rules_python//python:py_test.bzl", "py_test") package( default_visibility = [ "//:__subpackages__", ], ) py_library( name = "tokenizer", srcs = ["tokenizer.py"], deps = [ "//compiler/util:error", "//compiler/util:parser_types", ], ) py_test( name = "tokenizer_test", srcs = ["tokenizer_test.py"], python_version = "PY3", deps = [ ":tokenizer", "//compiler/util:error", "//compiler/util:parser_types", ], ) py_library( name = "lr1", srcs = ["lr1.py"], deps = [ "//compiler/util:parser_types", ], ) py_test( name = "lr1_test", srcs = ["lr1_test.py"], python_version = "PY3", deps = [ ":lr1", "//compiler/util:parser_types", ], ) py_library( name = "module_ir", srcs = ["module_ir.py"], deps = [ "//compiler/util:ir_data", "//compiler/util:name_conversion", "//compiler/util:parser_types", ], ) py_test( name = "module_ir_test", srcs = ["module_ir_test.py"], data = [ "//testdata:golden_files", ], python_version = "PY3", deps = [ ":module_ir", ":parser", ":tokenizer", "//compiler/util:ir_data", "//compiler/util:test_util", ], ) py_library( name = "parser", srcs = ["parser.py"], data = [ "error_examples", ], deps = [ ":lr1", ":module_ir", ":tokenizer", "//compiler/util:resources", "//compiler/util:simple_memoizer", ], ) py_test( name = "parser_test", srcs = ["parser_test.py"], python_version = "PY3", deps = [ ":lr1", ":parser", ":tokenizer", "//compiler/util:parser_types", ], ) py_library( name = "glue", srcs = ["glue.py"], data = [ "prelude.emb", ], visibility = ["//:__subpackages__"], deps = [ ":attribute_checker", ":constraints", ":dependency_checker", ":expression_bounds", ":lr1", ":module_ir", ":parser", ":symbol_resolver", ":synthetics", ":tokenizer", ":type_check", ":write_inference", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:parser_types", "//compiler/util:resources", ], ) py_test( name = "glue_test", srcs = ["glue_test.py"], data = [ "//testdata:golden_files", ], python_version = "PY3", deps = [ ":glue", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:parser_types", "//compiler/util:test_util", ], ) py_library( name = "synthetics", srcs = ["synthetics.py"], visibility = ["//visibility:private"], deps = [ "//compiler/util:expression_parser", "//compiler/util:ir_data", "//compiler/util:traverse_ir", ], ) py_test( name = "synthetics_test", srcs = ["synthetics_test.py"], python_version = "PY3", deps = [ ":glue", ":synthetics", "//compiler/util:test_util", ], ) py_library( name = "symbol_resolver", srcs = ["symbol_resolver.py"], visibility = ["//visibility:private"], deps = [ "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_test( name = "symbol_resolver_test", srcs = ["symbol_resolver_test.py"], python_version = "PY3", deps = [ ":glue", ":symbol_resolver", "//compiler/util:error", "//compiler/util:test_util", ], ) py_library( name = "write_inference", srcs = ["write_inference.py"], visibility = ["//visibility:private"], deps = [ ":attributes", ":expression_bounds", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_test( name = "write_inference_test", srcs = ["write_inference_test.py"], python_version = "PY3", deps = [ ":glue", ":write_inference", "//compiler/util:ir_data", "//compiler/util:test_util", ], ) py_library( name = "attribute_checker", srcs = ["attribute_checker.py"], deps = [ ":attributes", ":type_check", "//compiler/util:attribute_util", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_library( name = "attributes", srcs = ["attributes.py"], deps = [], ) py_test( name = "attribute_checker_test", timeout = "long", srcs = ["attribute_checker_test.py"], python_version = "PY3", deps = [ ":attribute_checker", ":glue", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:test_util", ], ) py_library( name = "type_check", srcs = ["type_check.py"], deps = [ ":attributes", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_test( name = "type_check_test", srcs = ["type_check_test.py"], python_version = "PY3", deps = [ ":glue", ":type_check", "//compiler/util:error", "//compiler/util:test_util", ], ) py_library( name = "expression_bounds", srcs = ["expression_bounds.py"], data = [ "reserved_words", ], deps = [ ":attributes", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_test( name = "expression_bounds_test", srcs = ["expression_bounds_test.py"], python_version = "PY3", deps = [ ":expression_bounds", ":glue", "//compiler/util:test_util", ], ) py_library( name = "constraints", srcs = ["constraints.py"], data = [ "reserved_words", ], deps = [ ":attributes", "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:resources", "//compiler/util:traverse_ir", ], ) py_test( name = "constraints_test", srcs = ["constraints_test.py"], python_version = "PY3", deps = [ ":constraints", ":glue", "//compiler/util:error", "//compiler/util:test_util", ], ) py_library( name = "dependency_checker", srcs = ["dependency_checker.py"], deps = [ "//compiler/util:error", "//compiler/util:ir_data", "//compiler/util:ir_util", "//compiler/util:traverse_ir", ], ) py_test( name = "dependency_checker_test", srcs = ["dependency_checker_test.py"], python_version = "PY3", deps = [ ":dependency_checker", ":glue", "//compiler/util:error", "//compiler/util:test_util", ], ) py_binary( name = "emboss_front_end", srcs = ["emboss_front_end.py"], python_version = "PY3", visibility = ["//visibility:public"], deps = [ ":glue", ":module_ir", "//compiler/util:error", ], ) py_binary( name = "format", srcs = ["format.py"], main = "format.py", python_version = "PY3", visibility = ["//visibility:public"], deps = [ ":format_emb", ":parser", ":tokenizer", "//compiler/util:error", ], ) py_library( name = "format_emb", srcs = ["format_emb.py"], deps = [ ":module_ir", ":tokenizer", "//compiler/util:parser_types", ], ) py_test( name = "format_emb_test", srcs = ["format_emb_test.py"], data = [ "//testdata:format_embs", ], python_version = "PY3", deps = [ ":format_emb", ":module_ir", ":parser", ":tokenizer", ], ) py_binary( name = "generate_grammar_md", srcs = ["generate_grammar_md.py"], python_version = "PY3", deps = [ ":constraints", ":module_ir", ":tokenizer", ], ) py_test( name = "docs_are_up_to_date_test", srcs = ["docs_are_up_to_date_test.py"], data = [ "//doc:grammar_md", ], python_version = "PY3", deps = [ ":generate_grammar_md", ], )