#!/usr/bin/env python
# -*- coding: utf-8 -*-

# SPDX-License-Identifier: MIT
# Copyright © 2021 André Santos

import os
try:
    import regex as re
except ImportError:
    import re

preamble = re.compile(r"\s*//\s*SPDX-License-Identifier:[^\n]+"
                      r"\s*//\s*Copyright[^\n]+\s*")

# where this script is
path = os.path.dirname(os.path.realpath(__file__))
# parent dir
path = os.path.abspath(os.path.join(path, os.pardir))
# go to src/hpl/grammars
path = os.path.join(path, "src", "hpl", "grammars")

def skip_preamble(text):
    m = preamble.match(text)
    if m:
        return text[m.end():]
    return text

with open(os.path.join(path, "tokens.lark"), "r") as f:
    g_tokens = skip_preamble(f.read())

with open(os.path.join(path, "predicates.lark"), "r") as f:
    g_predicates = skip_preamble(f.read())

with open(os.path.join(path, "properties.lark"), "r") as f:
    g_properties = skip_preamble(f.read())

with open(os.path.join(path, "files.lark"), "r") as f:
    g_files = skip_preamble(f.read())

GRAMMAR_PY = '''\
# -*- coding: utf-8 -*-

# SPDX-License-Identifier: MIT
# Copyright © 2021 André Santos

PREDICATE_GRAMMAR = r"""
{predicate_grammar}
{token_grammar}
"""

HPL_GRAMMAR = r"""
{file_grammar}
{property_grammar}
{predicate_grammar}
{token_grammar}
"""
'''.format(
    token_grammar=g_tokens,
    predicate_grammar=g_predicates,
    property_grammar=g_properties,
    file_grammar=g_files
)

with open(os.path.join(path, os.pardir, "grammar.py"), "w") as f:
    f.write(GRAMMAR_PY)
