2024-03-17 07:58:28 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
#include "libsyntax.h"
|
2024-03-17 07:58:28 +00:00
|
|
|
|
#include "ast_basic.h"
|
|
|
|
|
|
|
|
|
|
|
2025-02-07 15:26:20 +00:00
|
|
|
|
namespace ast_gen {
|
|
|
|
|
|
2024-03-17 07:58:28 +00:00
|
|
|
|
/**
|
2025-02-07 15:26:20 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class SyntaxParser {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
private:
|
2025-02-07 15:26:20 +00:00
|
|
|
|
std::shared_ptr<lib_syntax::IBasicRule> _rule_bind = nullptr;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2025-02-07 15:26:20 +00:00
|
|
|
|
SyntaxParser(std::shared_ptr<lib_syntax::IBasicRule> rule);
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
/**
|
2025-02-07 15:26:20 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param wods Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return <EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
QList<std::shared_ptr<const lib_syntax::MatchCursor>> parse(std::shared_ptr<lib_words::IPrimitiveWord> words);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param cursor <EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
* @param root <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>Ԥ<EFBFBD>Ƹ<EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
* @return <EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
std::shared_ptr<ast_basic::IExprInstance> getAst(
|
|
|
|
|
std::shared_ptr<const lib_syntax::MatchCursor> cursor, std::shared_ptr<ast_basic::IExprInstance> root);
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2024-06-18 03:54:36 +00:00
|
|
|
|
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
}
|