# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Copyright 2022. quinn.7@foxmail.com All rights reserved.                 ║
# ║                                                                          ║
# ║ 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                                  ║
# ║                                                                          ║
# ║ http://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.                                           ║
# ╚══════════════════════════════════════════════════════════════════════════╝
"""
@ 模块     : Awaken脚本语言解释器
@ 作者     : chenjiancheng
@ 邮箱     : quinn.7@foxmail.com
@ 编写时间 : 2022-08-10

@ 模块描述 :
    NULL

"""
from pathlib import Path

from .structural import AwakenTask
from .base_code_converter import BaseCodeConverter


class GrammarParser: ...


class GrammarParser:
    """
    [ Awaken脚本语言解释器 ]

    ---
    描述:
        NULL

    """

    _base_code_converter: BaseCodeConverter = BaseCodeConverter()
    """ 底层编码转换类 """


    def parsing(self, script_file_path: str | Path):
        """
        [ 解析 ]

        ---
        描述:
            NULL

        ---
        参数:
            script_file_path { str | Path } : 脚本文件路径

        """
        task_type, basecodes = self._base_code_converter.convert(script_file_path)

        if len(basecodes) == 0:
            raise BaseException('Awaken 脚本文件为空 !')

        # print('-------')
        # for code in basecodes:
        #     print(code)
        # print('-------')

        return AwakenTask(task_type, basecodes)
