
ParleLexer::insertMacro 함수는 마이크로를 삽입하는 데 사용되는 함수입니다. 이 함수는 두 개의 매개변수를 받습니다.
- 첫 번째 매개변수는 마이크로의 이름입니다. 이 이름은 문자열 형식으로 입력됩니다.
- 두 번째 매개변수는 마이크로의 내용입니다. 이 내용은 문자열 형식으로 입력됩니다.
insertMacro 함수는 다음과 같은 작업을 수행합니다.
1. 입력된 마이크로 이름과 내용을 확인합니다.
2. 마이크로 이름이 이미 존재하는지 확인합니다. 만약 이미 존재한다면, 새로운 마이크로를 삽입하지 않고 기존의 마이크로를 반환합니다.
3. 새로운 마이크로를 삽입합니다. 이때, 마이크로 이름과 내용이 삽입됩니다.
4. 삽입된 마이크로를 반환합니다.
insertMacro 함수는 다음과 같은 예외 상황을 처리합니다.
- 입력된 마이크로 이름이 비어 있으면 예외를 발생시킵니다.
- 입력된 마이크로 내용이 비어 있으면 예외를 발생시킵니다.
- 이미 존재하는 마이크로 이름으로 새로운 마이크로를 삽입하려고 하면 예외를 발생시킵니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
cpp
#include
#include
class ParleLexer {
public:
void insertMacro(const std::string& name, const std::string& content) {
// 마이크로 이름이 이미 존재하는지 확인
if (macros.find(name) != macros.end()) {
throw std::invalid_argument("Already exists macro with name: " + name);
}
// 새로운 마이크로 삽입
macros[name] = content;
}
std::string getMacro(const std::string& name) {
// 마이크로 이름이 존재하는지 확인
if (macros.find(name) == macros.end()) {
throw std::out_of_range("Macro not found: " + name);
}
// 마이크로 내용 반환
return macros[name];
}
private:
std::map macros;
};
int main() {
ParleLexer lexer;
try {
lexer.insertMacro("MY_MACRO", "Hello, World!");
std::cout << lexer.getMacro("MY_MACRO") << std::endl; // Hello, World!
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
이 예제 코드는 ParleLexer 클래스를 정의하고, insertMacro 함수를 사용하여 마이크로를 삽입하고, getMacro 함수를 사용하여 마이크로 내용을 반환합니다. 예외 상황을 처리하는 코드도 포함되어 있습니다.
2025-06-22 10:12