1
0
mirror of synced 2024-11-12 02:00:52 +01:00

Added // and /* */ style comments to scripting language

This commit is contained in:
WerWolv 2020-11-13 14:35:52 +01:00
parent 7a30072fcb
commit 999db12a3a
2 changed files with 45 additions and 16 deletions

View File

@ -70,6 +70,29 @@ namespace hex::lang {
u32 offset = 0;
while (offset < code.length()) {
// Handle comments
if (code[offset] == '/') {
offset++;
if (offset < code.length() && code[offset] == '/') {
offset++;
while (offset < code.length()) {
if (code[offset] == '\n' || code[offset] == '\r')
break;
offset++;
}
} else if (offset < code.length() && code[offset] == '*') {
offset++;
while (offset < (code.length() - 1)) {
if (code[offset] == '*' && code[offset + 1] == '/')
break;
offset++;
}
offset += 2;
} else offset--;
}
const char& c = code[offset];
if (std::isblank(c) || std::isspace(c)) {

View File

@ -7,6 +7,9 @@ namespace hex {
ViewPattern::ViewPattern(prv::Provider* &dataProvider, std::vector<Highlight> &highlights)
: View(), m_dataProvider(dataProvider), m_highlights(highlights) {
this->m_buffer = new char[0xFF'FFFF];
std::memset(this->m_buffer, 0x00, 0xFF'FFFF);
}
ViewPattern::~ViewPattern() {
if (this->m_buffer != nullptr)
@ -34,7 +37,7 @@ namespace hex {
return;
if (ImGui::Begin("Pattern", &this->m_windowOpen, ImGuiWindowFlags_None)) {
if (this->m_dataProvider != nullptr && this->m_dataProvider->isReadable()) {
if (this->m_buffer != nullptr && this->m_dataProvider != nullptr && this->m_dataProvider->isReadable()) {
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0));
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0));
@ -59,23 +62,26 @@ namespace hex {
this->m_fileBrowser.Display();
if (this->m_fileBrowser.HasSelected()) {
FILE *file = fopen(this->m_fileBrowser.GetSelected().string().c_str(), "rb");
fseek(file, 0, SEEK_END);
size_t size = ftell(file);
rewind(file);
if (this->m_buffer != nullptr)
delete[] this->m_buffer;
this->m_buffer = new char[size + 1];
std::memset(this->m_buffer, 0x00, size + 1);
fread(this->m_buffer, size, 1, file);
fclose(file);
this->parsePattern(this->m_buffer);
this->m_fileBrowser.ClearSelected();
if (file != nullptr) {
fseek(file, 0, SEEK_END);
size_t size = ftell(file);
rewind(file);
if (size >= 0xFF'FFFF) {
fclose(file);
return;
}
fread(this->m_buffer, size, 1, file);
fclose(file);
this->parsePattern(this->m_buffer);
}
}
}