#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   auto code = R"(rate = 0.05; print("rate"); // a rate)";

   cout << "--- uCalc Transformer (Token-Aware & Correct) ---" << endl;
   uCalc::Transformer t;
   t.Tokens().Add("//.*", TokenType::Whitespace);
   // Rule targets only the alphanumeric token 'rate'
   t.FromTo("rate", "annual_rate");
   cout << t.Transform(code) << endl;

   cout << "" << endl;
   cout << "--- Simulated Regex (Character-Aware & Incorrect) ---" << endl;
   // This simulates a simple find-and-replace for the word 'rate'
   // which incorrectly changes the string literal and comment.
   auto incorrect_result = R"(annual_rate = 0.05; print("annual_rate"); // a annual_rate)";
   cout << incorrect_result << endl;
}