mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 04:19:19 +02:00
32 lines
764 B
C++
32 lines
764 B
C++
#pragma once
|
|
|
|
// https://wiki.eu07.pl/index.php?title=Dyrektywa_lua
|
|
// lua file
|
|
|
|
#include <eu07/scene/cursor.hpp>
|
|
#include <eu07/scene/detail/parse.hpp>
|
|
#include <eu07/scene/context.hpp>
|
|
#include <eu07/scene/match.hpp>
|
|
|
|
namespace eu07::scene::lua {
|
|
|
|
[[nodiscard]] inline bool parse(TokenStream& stream, ParseContext& ctx) {
|
|
if (stream.empty() || !isKeyword(stream.peek().value, "lua")) {
|
|
return false;
|
|
}
|
|
|
|
DirectiveBlock block;
|
|
block.line = stream.consume().sourceLine;
|
|
const std::size_t anchor = stream.checkpoint();
|
|
detail::ParseSession session(stream, block, anchor);
|
|
|
|
if (!session.empty()) {
|
|
session.take();
|
|
}
|
|
|
|
ctx.document.lua.push_back(std::move(block));
|
|
return true;
|
|
}
|
|
|
|
} // namespace eu07::scene::lua
|