36 lines
1.0 KiB
C++
36 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
namespace pdfengine {
|
|
|
|
enum class TokenType {
|
|
Operator, // e.g., "Tj", "BT", "ET", "Tf", "re", "f"
|
|
String, // e.g., "(Hello World)", fully unescaped
|
|
HexString, // e.g., "<48656C6C6F>", fully decoded to bytes
|
|
Name, // e.g., "/F1" (without the slash, unescaped)
|
|
Number, // e.g., "12.3", "-4", stored as string/double
|
|
ArrayStart, // "["
|
|
ArrayEnd, // "]"
|
|
DictStart, // "<<"
|
|
DictEnd, // ">>"
|
|
Boolean, // "true", "false"
|
|
Null, // "null"
|
|
EndOfStream // EOF marker
|
|
};
|
|
|
|
struct Token {
|
|
TokenType type;
|
|
std::string stringValue; // Used for Operator, String, Name
|
|
std::vector<uint8_t> bytesValue; // Used for HexString
|
|
double numberValue = 0.0; // Used for Number
|
|
|
|
// Position tracking for error reporting (optional but helpful)
|
|
size_t startOffset = 0;
|
|
size_t endOffset = 0;
|
|
};
|
|
|
|
} // namespace pdfengine
|