diff options
author | Spartan322 <Megacake1234@gmail.com> | 2023-08-20 09:58:07 +0200 |
---|---|---|
committer | Spartan322 <Megacake1234@gmail.com> | 2023-08-20 09:58:07 +0200 |
commit | b1bc7d520f09430c8d2372c6541ce23ec8099e13 (patch) | |
tree | a28708ccff8332e0233e6f578d988c68e0d589c4 /src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp | |
parent | 8ebcba11d103ebe8ab259b311e874e1bac05dfd3 (diff) |
Add the rough draft grammar for events and decisions
Diffstat (limited to 'src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp')
-rw-r--r-- | src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp b/src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp new file mode 100644 index 0000000..f3e1994 --- /dev/null +++ b/src/openvic-dataloader/v2script/AiBehaviorGrammar.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "SimpleGrammar.hpp" +#include "TriggerGrammar.hpp" +#include <lexy/dsl.hpp> + +namespace ovdl::v2script::grammar { + constexpr auto modifier_keyword = LEXY_KEYWORD("modifier", lexy::dsl::inline_<Identifier>); + constexpr auto factor_keyword = LEXY_KEYWORD("factor", lexy::dsl::inline_<Identifier>); + + struct AiModifierStatement { + static constexpr auto rule = + modifier_keyword >> + lexy::dsl::curly_bracketed.list( + (factor_keyword >> lexy::dsl::p<Identifier>) | + lexy::dsl::p<TriggerStatement>); + }; + + struct AiBehaviorList { + static constexpr auto rule = lexy::dsl::list((factor_keyword >> lexy::dsl::p<Identifier>) | lexy::dsl::p<AiModifierStatement>); + }; +}
\ No newline at end of file |