/* * Copyright (c) 2021-2024 Huawei Device Co., Ltd. * 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. */ #ifndef PANDA_ASSEMBLER_PANDASM_H #define PANDA_ASSEMBLER_PANDASM_H #include "utils/pandargs.h" namespace ark::pandasm { void PrintError(const ark::pandasm::Error &e, const std::string &msg); void PrintErrors(const ark::pandasm::ErrorList &warnings, const std::string &msg); // CC-OFFNXT(G.FUN.01-CPP) solid logic bool PrepareArgs(ark::PandArgParser &paParser, const ark::PandArg &inputFile, const ark::PandArg &outputFile, const ark::PandArg &logFile, const ark::PandArg &help, const ark::PandArg &verbose, std::ifstream &inputfile, int argc, char **argv); bool Tokenize(ark::pandasm::Lexer &lexer, std::vector> &tokens, std::ifstream &inputfile); bool ParseProgram(ark::pandasm::Parser &parser, std::vector> &tokens, const ark::PandArg &inputFile, ark::Expected &res); bool DumpProgramInJson(ark::pandasm::Program &program, const ark::PandArg &scopesFile); bool EmitProgramInBinary(ark::pandasm::Program &program, ark::PandArgParser &paParser, const ark::PandArg &outputFile, ark::PandArg &optimize, ark::PandArg &sizeStat); // CC-OFFNXT(G.FUN.01-CPP) solid logic bool BuildFiles(ark::pandasm::Program &program, ark::PandArgParser &paParser, const ark::PandArg &outputFile, ark::PandArg &optimize, ark::PandArg &sizeStat, ark::PandArg &scopesFile); } // namespace ark::pandasm #endif // PANDA_ASSEMBLER_PANDASM_H