add_package()

genflex(
  NAME
    lexer
  SRC
    lexer.lex
  CC_OUT
    lexer.lex.cc
  BISON_DEP
    .parser_gen
)

genbison(
  NAME
    parser_gen
  SRC
    parser.yy
  HDR_OUT
    parser.tab.hh
  CC_OUT
    parser.tab.cc
)

py_extension(
  NAME
    parser_ext
  SRCS
    parser_ext.cc
    $<TARGET_PROPERTY:pytype.pyi.lexer,CC_OUT>
    $<TARGET_PROPERTY:pytype.pyi.parser_gen,CC_OUT>
    $<TARGET_PROPERTY:pytype.pyi.parser_gen,HDR_OUT>
  DEPS
    .parser_gen
    .lexer
)

py_library(
  NAME
    parser
  SRCS
    parser.py
  DEPS
    .parser_ext
    pytype.utils
    pytype.pyi.typed_ast.ast_parser
    pytype.pytd.pytd_for_parser
    pytype.pytd.parse.parse
)

py_test(
  NAME
    lexer_test
  SRCS
    lexer_test.py
  DEPS
    .parser_ext
    pytype.pytd.pytd_for_parser
    pytype.pytd.parse.parse
    pytype.stubs.stubs
    pytype.tests.test_base
)

py_test(
  NAME
    parser_test
  SRCS
    parser_test.py
  DEPS
    .parser
    pytype.utils
    pytype.pytd.pytd_for_parser
    pytype.stubs.stubs
    pytype.tests.test_base
)

py_test(
  NAME
    parser_memleak_test
  SRCS
    parser_memleak_test.py
  DEPS
    .parser
    pytype.pytd.pytd_for_parser
    pytype.stubs.stubs
    pytype.tests.test_base
)

add_subdirectory(typed_ast)
