UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VerseGrammar.h File Reference
#include <utility>
#include <stdint.h>

Go to the source code of this file.

Classes

struct  Verse::Grammar::nothing
 
struct  Verse::Grammar::scoped_guard< t >
 
struct  Verse::Grammar::text
 
struct  Verse::Grammar::snippet
 
struct  Verse::Grammar::block< syntaxes_t, capture_t >
 
struct  Verse::Grammar::result< value_t, error_t >
 
struct  Verse::Grammar::encoding
 
struct  Verse::Grammar::token_info
 
struct  Verse::Grammar::token
 
struct  Verse::Grammar::token_set
 
struct  Verse::Grammar::parser_base
 
struct  Verse::Grammar::parser< gen_t >
 
struct  Verse::Grammar::generate< gen_t >
 

Namespaces

namespace  Verse
 
namespace  Verse::Grammar
 

Macros

#define TIM   0
 
#define VERSE_MAX_EXPR_DEPTH   100
 
#define VERSE_MAX_INDCMT_DEPTH   3
 
#define GRAMMAR_ASSERT(c)   ((c)? (void)0: Verse::Grammar::Err())
 
#define GRAMMAR_RUN(e)   {auto GrammarTemp=(e); if(!GrammarTemp) return GrammarTemp.GetError();}
 
#define GRAMMAR_SET(r, e)   {auto GrammarTemp=(e); if(!GrammarTemp) return GrammarTemp.GetError(); r=*GrammarTemp;}
 
#define GRAMMAR_LET(r, e)   auto r##Let=(e); if(!r##Let) return r##Let.GetError(); auto r=*r##Let;
 

Typedefs

using Verse::Grammar::int64 = long long
 
using Verse::Grammar::nat8 = unsigned char
 
using Verse::Grammar::nat16 = unsigned short
 
using Verse::Grammar::nat32 = unsigned int
 
using Verse::Grammar::nat64 = unsigned long long
 
using Verse::Grammar::nat = unsigned long long
 
using Verse::Grammar::char32 = char32_t
 
using Verse::Grammar::char8 = char
 

Enumerations

enum class  Verse::Grammar::prec : nat8 {
  Verse::Grammar::Never , Verse::Grammar::List , Verse::Grammar::Commas , Verse::Grammar::Expr ,
  Verse::Grammar::Fun , Verse::Grammar::Def , Verse::Grammar::Or , Verse::Grammar::And ,
  Verse::Grammar::Not , Verse::Grammar::Eq , Verse::Grammar::NotEq , Verse::Grammar::Less ,
  Verse::Grammar::Greater , Verse::Grammar::Choose , Verse::Grammar::To , Verse::Grammar::Add ,
  Verse::Grammar::Mul , Verse::Grammar::Prefix , Verse::Grammar::Call , Verse::Grammar::Base ,
  Verse::Grammar::Nothing
}
 
enum class  Verse::Grammar::assoc : nat8 { Verse::Grammar::None , Verse::Grammar::Postfix , Verse::Grammar::InfixLeft , Verse::Grammar::InfixRight }
 
enum class  Verse::Grammar::form : nat8 { Verse::Grammar::List , Verse::Grammar::Commas }
 
enum class  Verse::Grammar::punctuation : nat8 {
  Verse::Grammar::None , Verse::Grammar::Braces , Verse::Grammar::Parens , Verse::Grammar::Brackets ,
  Verse::Grammar::AngleBrackets , Verse::Grammar::Qualifier , Verse::Grammar::Dot , Verse::Grammar::Colon ,
  Verse::Grammar::Ind
}
 
enum class  Verse::Grammar::place : nat16 {
  Verse::Grammar::UTF8 , Verse::Grammar::Printable , Verse::Grammar::BlockCmt , Verse::Grammar::LineCmt ,
  Verse::Grammar::IndCmt , Verse::Grammar::Space , Verse::Grammar::String , Verse::Grammar::Content
}
 
enum class  Verse::Grammar::mode { Verse::Grammar::None , Verse::Grammar::Open , Verse::Grammar::Closed , Verse::Grammar::With }
 

Functions

template<class t , nat n>
constexpr nat Verse::Grammar::ArraySize (t(&)[n])
 
void Verse::Grammar::Err ()
 
constexpr nat Verse::Grammar::Length (const text &Text)
 
bool Verse::Grammar::operator== (const text &as, const text &bs)
 
bool Verse::Grammar::operator!= (const text &as, const text &bs)
 
constexpr bool Verse::Grammar::IsSpace (char8 c)
 
constexpr bool Verse::Grammar::IsNewLine (char8 c)
 
constexpr bool Verse::Grammar::IsEnding (char8 c)
 
constexpr bool Verse::Grammar::IsAlpha (char8 c)
 
constexpr bool Verse::Grammar::IsDigit (char8 c)
 
constexpr bool Verse::Grammar::IsAlnum (char8 c)
 
constexpr bool Verse::Grammar::IsHex (char8 c)
 
constexpr nat8 Verse::Grammar::DigitValue (char8 c)
 
constexpr bool Verse::Grammar::IsIdentifierQuotable (char8 c0, char8 c1)
 
constexpr bool Verse::Grammar::IsStringBackslashLiteral (char8 c0, char8 c1)
 
char32 Verse::Grammar::EncodedChar32 (const char8 *s, nat Count)
 
template<place Place>
nat Verse::Grammar::EncodedLength (const char8 *s)
 
bool Verse::Grammar::ParenthesizePrefix (const encoding &Encoding, prec StringPrec)
 
bool Verse::Grammar::ParenthesizePostfix (const encoding &Encoding, prec StringPrec)
 
template<class gen_t >
result< typename gen_t::syntax_t, typename gen_t::error_t > Verse::Grammar::File (gen_t &Gen, nat n, const char8 *s, nat Line=1)
 

Variables

const struct token_set AllTokens AllowLess Verse::Grammar::AllowNotEq = ~token_set{u8">",u8">=",u8"<",u8"<="}
 
constexpr token_info Verse::Grammar::Tokens []
 
const token_set Verse::Grammar::AllTokens = ~token_set{}
 
const token_set Verse::Grammar::AllowLess = ~token_set{u8">",u8">="}
 
const token_set Verse::Grammar::InPrefixes = token_set{u8":",u8"in"}
 
const token_set Verse::Grammar::StopList = token_set{u8":)",u8")",u8"]",u8"}",token::NewLine(),token::End()}
 
const token_set Verse::Grammar::StopExpr = StopList | token_set{u8";",u8","}
 
const token_set Verse::Grammar::StopFun = StopExpr | token_set{u8"@"}
 
const token_set Verse::Grammar::StopDef = StopFun | token_set{u8"=>",u8"next",u8"over",u8"when",u8"while"}
 
const token_set Verse::Grammar::BracePostfixes = token_set{u8"{"}
 
const token_set Verse::Grammar::BlockPostfixes = token_set{u8"{",u8".",u8":"}
 
const token_set Verse::Grammar::ParenPostfixes = token_set{u8"("}
 
const token_set Verse::Grammar::WithPostfixes = token_set{u8"with",u8"<"}
 
const token_set Verse::Grammar::InvokePostfixes = BlockPostfixes | ParenPostfixes | WithPostfixes | token_set{u8"in",token::NewLine()}
 
const token_set Verse::Grammar::MarkupPostfixes = token_set{u8",",u8";",u8">",u8":>"}
 
const token_set Verse::Grammar::DefPostfixes = token_set{u8"=",u8":=",u8"+=",u8"-=",u8"*=",u8"/="}
 

Macro Definition Documentation

◆ GRAMMAR_ASSERT

#define GRAMMAR_ASSERT (   c)    ((c)? (void)0: Verse::Grammar::Err())

◆ GRAMMAR_LET

#define GRAMMAR_LET (   r,
 
)    auto r##Let=(e); if(!r##Let) return r##Let.GetError(); auto r=*r##Let;

◆ GRAMMAR_RUN

#define GRAMMAR_RUN (   e)    {auto GrammarTemp=(e); if(!GrammarTemp) return GrammarTemp.GetError();}

◆ GRAMMAR_SET

#define GRAMMAR_SET (   r,
 
)    {auto GrammarTemp=(e); if(!GrammarTemp) return GrammarTemp.GetError(); r=*GrammarTemp;}

◆ TIM

#define TIM   0

◆ VERSE_MAX_EXPR_DEPTH

#define VERSE_MAX_EXPR_DEPTH   100

◆ VERSE_MAX_INDCMT_DEPTH

#define VERSE_MAX_INDCMT_DEPTH   3