OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4AulCompiler::PreparseAstVisitor Class Reference
Inheritance diagram for C4AulCompiler::PreparseAstVisitor:
[legend]
Collaboration diagram for C4AulCompiler::PreparseAstVisitor:
[legend]

Public Member Functions

 PreparseAstVisitor (C4ScriptHost *host, C4ScriptHost *source_host, C4AulScriptFunc *func=nullptr)
 
 PreparseAstVisitor (C4AulScriptFunc *func)
 
virtual ~PreparseAstVisitor ()
 
virtual void visit (const ::aul::ast::RangeLoop *n) override
 
virtual void visit (const ::aul::ast::VarDecl *n) override
 
virtual void visit (const ::aul::ast::FunctionDecl *n) override
 
virtual void visit (const ::aul::ast::CallExpr *n) override
 
virtual void visit (const ::aul::ast::ParExpr *n) override
 
virtual void visit (const ::aul::ast::AppendtoPragma *n) override
 
virtual void visit (const ::aul::ast::IncludePragma *n) override
 
virtual void visit (const ::aul::ast::Script *n) override
 
virtual void visit (const ::aul::ast::ArrayLit *n) override
 
virtual void visit (const ::aul::ast::ProplistLit *n) override
 
virtual void visit (const ::aul::ast::UnOpExpr *n) override
 
virtual void visit (const ::aul::ast::BinOpExpr *n) override
 
virtual void visit (const ::aul::ast::AssignmentExpr *n) override
 
virtual void visit (const ::aul::ast::SubscriptExpr *n) override
 
virtual void visit (const ::aul::ast::SliceExpr *n) override
 
virtual void visit (const ::aul::ast::Block *n) override
 
virtual void visit (const ::aul::ast::Return *n) override
 
virtual void visit (const ::aul::ast::ForLoop *n) override
 
virtual void visit (const ::aul::ast::DoLoop *n) override
 
virtual void visit (const ::aul::ast::WhileLoop *n) override
 
virtual void visit (const ::aul::ast::If *n) override
 
virtual void visit (const ::aul::ast::FunctionExpr *n) override
 
virtual void visit (const ::aul::ast::Noop *)
 
virtual void visit (const ::aul::ast::StringLit *)
 
virtual void visit (const ::aul::ast::IntLit *)
 
virtual void visit (const ::aul::ast::BoolLit *)
 
virtual void visit (const ::aul::ast::NilLit *)
 
virtual void visit (const ::aul::ast::ThisLit *)
 
virtual void visit (const ::aul::ast::VarExpr *n)
 
virtual void visit (const ::aul::ast::Break *)
 
virtual void visit (const ::aul::ast::Continue *)
 
template<class T >
void visit (const T *)=delete
 

Detailed Description

Definition at line 119 of file C4AulCompiler.cpp.

Constructor & Destructor Documentation

C4AulCompiler::PreparseAstVisitor::PreparseAstVisitor ( C4ScriptHost host,
C4ScriptHost source_host,
C4AulScriptFunc func = nullptr 
)
inline

Definition at line 129 of file C4AulCompiler.cpp.

129 : target_host(host), host(source_host), Fn(func) {}
C4AulCompiler::PreparseAstVisitor::PreparseAstVisitor ( C4AulScriptFunc func)
inlineexplicit

Definition at line 130 of file C4AulCompiler.cpp.

130 : Fn(func), target_host(func->pOrgScript), host(target_host) {}
C4ScriptHost * pOrgScript
virtual C4AulCompiler::PreparseAstVisitor::~PreparseAstVisitor ( )
inlinevirtual

Definition at line 132 of file C4AulCompiler.cpp.

132 {}

Member Function Documentation

virtual void aul::AstVisitor::visit ( const ::aul::ast::Noop )
inlinevirtualinherited

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 68 of file C4AulAST.h.

68 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::StringLit )
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 69 of file C4AulAST.h.

69 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::IntLit )
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 70 of file C4AulAST.h.

70 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::BoolLit )
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 71 of file C4AulAST.h.

71 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::NilLit )
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 74 of file C4AulAST.h.

74 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::ThisLit )
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 75 of file C4AulAST.h.

75 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::VarExpr n)
inlinevirtualinherited

Reimplemented in C4AulCompiler::ConstexprEvaluator, and C4AulCompiler::CodegenAstVisitor.

Definition at line 76 of file C4AulAST.h.

76 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::Break )
inlinevirtualinherited

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 90 of file C4AulAST.h.

90 {}
virtual void aul::AstVisitor::visit ( const ::aul::ast::Continue )
inlinevirtualinherited

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 91 of file C4AulAST.h.

91 {}
template<class T >
void aul::AstVisitor::visit ( const T *  )
deleteinherited
void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::RangeLoop n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 447 of file C4AulCompiler.cpp.

References C4ValueMapNames::AddName(), C4ValueMapNames::GetItemNr(), and C4AulScriptFunc::VarNamed.

Referenced by C4AulCompiler::Preparse(), and C4AulCompiler::ConstexprEvaluator::visit().

448 {
449  const char *cname = n->var.c_str();
450  if (n->scoped_var)
451  {
452  Fn->VarNamed.AddName(cname);
453  }
454  else
455  {
456  // Loop variable not explicitly declared here. Look it up in
457  // the function and warn if it hasn't been declared at all.
458  if (Fn->VarNamed.GetItemNr(cname) == -1)
459  {
460  Warn(target_host, host, n, Fn, C4AulWarningId::implicit_range_loop_var_decl, cname);
461  Fn->VarNamed.AddName(cname);
462  }
463  }
464  DefaultRecursiveVisitor::visit(n);
465 }
std::string var
Definition: C4AulAST.h:312
int32_t AddName(const char *pnName)
Definition: C4ValueMap.cpp:439
C4ValueMapNames VarNamed
int32_t GetItemNr(const char *strName) const
Definition: C4ValueMap.cpp:469

Here is the call graph for this function:

Here is the caller graph for this function:

void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::VarDecl n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 467 of file C4AulCompiler.cpp.

References C4ValueMapNames::AddName(), C4VNull, C4ScriptHost::Engine, C4StringTable::FindString(), aul::ast::VarDecl::Func, C4ValueMapNames::GetItemNr(), C4ScriptHost::GetPropList(), aul::ast::VarDecl::Global, C4AulScriptEngine::GlobalConstNames, C4AulScriptEngine::GlobalNamedNames, C4PropList::HasProperty(), Object(), C4StringTable::RegString(), s, C4PropList::SetPropertyByS(), and Strings.

468 {
470  {
471  Warn(target_host, host, n, Fn, C4AulWarningId::non_global_var_is_never_const);
472  }
473  for (const auto &var : n->decls)
474  {
475  const char *cname = var.name.c_str();
476  switch (n->scope)
477  {
478  case ::aul::ast::VarDecl::Scope::Func:
479  {
480  assert(Fn && "function-local var declaration outside of function");
481  if (!Fn)
482  throw Error(target_host, host, n, Fn, "internal error: function-local var declaration outside of function");
483 
484  if (target_host)
485  {
486  // if target_host is unset, we're parsing this func for direct execution,
487  // in which case we don't want to warn about variable hiding.
488  if (target_host->Engine->GlobalNamedNames.GetItemNr(cname) >= 0 || target_host->Engine->GlobalConstNames.GetItemNr(cname) >= 0)
489  Warn(target_host, host, n, Fn, C4AulWarningId::variable_shadows_variable, "local variable", cname, "global variable");
490  C4String *s = ::Strings.FindString(cname);
491  if (s && target_host->GetPropList()->HasProperty(s))
492  Warn(target_host, host, n, Fn, C4AulWarningId::variable_shadows_variable, "local variable", cname, "object-local variable");
493  if (Fn->ParNamed.GetItemNr(cname) != -1)
494  {
495  // The parameter order of this warning is correct:
496  // Aul looks up parameters before local variables, so
497  // the parameter actually shadows the local variable.
498  // This doesn't make a whole lot of sense and should
499  // probably be changed.
500  Warn(target_host, host, n, Fn, C4AulWarningId::variable_shadows_variable, "parameter", cname, "local variable");
501  }
502  }
503  Fn->VarNamed.AddName(cname);
504  break;
505  }
507  {
508  if (host->Engine->GlobalNamedNames.GetItemNr(cname) >= 0 || host->Engine->GlobalConstNames.GetItemNr(cname) >= 0)
509  Warn(target_host, host, n, Fn, C4AulWarningId::variable_shadows_variable, "object-local variable", cname, "global variable");
510  C4String *s = ::Strings.RegString(cname);
511  if (target_host->GetPropList()->HasProperty(s))
512  Warn(target_host, host, n, Fn, C4AulWarningId::redeclaration, "object-local variable", cname);
513  else
514  target_host->GetPropList()->SetPropertyByS(s, C4VNull);
515  break;
516  }
517  case ::aul::ast::VarDecl::Scope::Global:
518  assert(!Fn && "global var declaration inside function");
519  if (Fn)
520  throw Error(target_host, host, n, Fn, "internal error: global var declaration inside function");
521 
522  if (host->Engine->GlobalNamedNames.GetItemNr(cname) >= 0 || host->Engine->GlobalConstNames.GetItemNr(cname) >= 0)
523  Warn(target_host, host, n, Fn, C4AulWarningId::redeclaration, "global variable", cname);
524  if (n->constant)
525  host->Engine->GlobalConstNames.AddName(cname);
526  else
527  host->Engine->GlobalNamedNames.AddName(cname);
528  break;
529  }
530  }
531 
533  {
534  // only func-scoped variables can potentially have initializers we care
535  // about in the pre-parsing stage: they may have calls that pass
536  // unnamed parameters
537  DefaultRecursiveVisitor::visit(n);
538  }
539 }
C4ValueMapNames GlobalNamedNames
Definition: C4Aul.h:136
C4ValueMapNames ParNamed
C4String * FindString(const char *strString) const
C4String * RegString(StdStrBuf String)
C4AulScriptEngine * Engine
Definition: C4ScriptHost.h:76
virtual C4PropListStatic * GetPropList()
Definition: C4ScriptHost.h:50
C4ValueMapNames GlobalConstNames
Definition: C4Aul.h:143
int32_t AddName(const char *pnName)
Definition: C4ValueMap.cpp:439
C4StringTable Strings
Definition: C4Globals.cpp:42
C4ValueMapNames VarNamed
int32_t GetItemNr(const char *strName) const
Definition: C4ValueMap.cpp:469
std::vector< Var > decls
Definition: C4AulAST.h:370
bool HasProperty(C4String *k) const
Definition: C4PropList.h:120
C4Object * Object(C4PropList *_this)
Definition: C4AulDefFunc.h:35
const C4Value C4VNull
Definition: C4Value.cpp:32
virtual void SetPropertyByS(C4String *k, const C4Value &to)
Definition: C4PropList.cpp:929
#define s

Here is the call graph for this function:

void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::FunctionDecl n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 541 of file C4AulCompiler.cpp.

References C4AUL_MAX_Par, C4VFunction(), C4ScriptHost::Engine, C4PropList::GetFunc(), C4ScriptHost::GetPropList(), C4AulScriptEngine::GetPropList(), C4ScriptHost::ownedFunctions, and C4PropList::SetPropertyByS().

542 {
543  // create script fn
544  C4PropListStatic *Parent = n->is_global ? target_host->Engine->GetPropList() : target_host->GetPropList();
545  const char *cname = n->name.c_str();
546 
547  assert(!Fn);
548 
549  // Look up the overloaded function before adding the overloading one
550  C4AulFunc *parent_func = Parent->GetFunc(cname);
551 
552  Fn = new C4AulScriptFunc(Parent, target_host, cname, n->loc);
553  host->ownedFunctions.push_back(C4VFunction(Fn));
554  for (const auto &param : n->params)
555  {
556  Fn->AddPar(param.name.c_str(), param.type);
557  }
558  if (n->has_unnamed_params)
559  Fn->ParCount = C4AUL_MAX_Par;
560 
561  // Add function to def/engine
562  Fn->SetOverloaded(parent_func);
563  Parent->SetPropertyByS(Fn->Name, C4VFunction(Fn));
564 
565  try
566  {
567  DefaultRecursiveVisitor::visit(n);
568  Fn = nullptr;
569  }
570  catch (...)
571  {
572  Fn = nullptr;
573  throw;
574  }
575 }
C4PropListStatic * GetPropList()
Definition: C4Aul.h:153
C4AulFunc * GetFunc(C4PropertyName k) const
Definition: C4PropList.h:107
C4AulScriptEngine * Engine
Definition: C4ScriptHost.h:76
virtual C4PropListStatic * GetPropList()
Definition: C4ScriptHost.h:50
std::vector< Parameter > params
Definition: C4AulAST.h:382
#define C4AUL_MAX_Par
Definition: C4AulFunc.h:26
bool has_unnamed_params
Definition: C4AulAST.h:383
void AddPar(const char *Idtf, C4V_Type type=C4V_Any)
const char * loc
Definition: C4AulAST.h:128
void SetOverloaded(C4AulFunc *)
std::string name
Definition: C4AulAST.h:395
C4Value C4VFunction(C4AulFunc *pFn)
Definition: C4Value.h:250
virtual void SetPropertyByS(C4String *k, const C4Value &to)
Definition: C4PropList.cpp:929
C4RefCntPointer< C4String > Name
Definition: C4AulFunc.h:61
std::vector< C4Value > ownedFunctions
Definition: C4ScriptHost.h:96

Here is the call graph for this function:

void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::CallExpr n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 577 of file C4AulCompiler.cpp.

References C4AUL_MAX_Par.

578 {
579  if (n->append_unnamed_pars && Fn->ParCount != C4AUL_MAX_Par)
580  {
581  Fn->ParCount = C4AUL_MAX_Par;
582  }
583  DefaultRecursiveVisitor::visit(n);
584 }
bool append_unnamed_pars
Definition: C4AulAST.h:260
#define C4AUL_MAX_Par
Definition: C4AulFunc.h:26
void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::ParExpr n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 586 of file C4AulCompiler.cpp.

References C4AUL_MAX_Par.

587 {
588  if (Fn->ParCount != C4AUL_MAX_Par)
589  {
590  Warn(target_host, host, n, Fn, C4AulWarningId::undeclared_varargs, "Par()");
591  Fn->ParCount = C4AUL_MAX_Par;
592  }
593  DefaultRecursiveVisitor::visit(n);
594 }
#define C4AUL_MAX_Par
Definition: C4AulFunc.h:26
void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::AppendtoPragma n)
overridevirtual

Reimplemented from aul::AstVisitor.

Definition at line 596 of file C4AulCompiler.cpp.

References C4ScriptHost::Appends.

597 {
598  if (n->what.empty())
599  host->Appends.emplace_back("*");
600  else
601  host->Appends.emplace_back(n->what.c_str());
602 }
std::list< StdCopyStrBuf > Appends
Definition: C4ScriptHost.h:80
void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::IncludePragma n)
overridevirtual

Reimplemented from aul::AstVisitor.

Definition at line 604 of file C4AulCompiler.cpp.

References C4ScriptHost::Includes.

605 {
606  host->Includes.emplace_back(n->what.c_str());
607 }
std::list< StdCopyStrBuf > Includes
Definition: C4ScriptHost.h:79
void C4AulCompiler::PreparseAstVisitor::visit ( const ::aul::ast::Script n)
overridevirtual

Reimplemented from aul::DefaultRecursiveVisitor.

Definition at line 609 of file C4AulCompiler.cpp.

References C4ScriptHost::Engine, C4AulScriptEngine::GetErrorHandler(), C4AulErrorHandler::OnError(), and C4AulError::what().

610 {
611  for (const auto &d : n->declarations)
612  {
613  try
614  {
615  d->accept(this);
616  }
617  catch (C4AulParseError &e)
618  {
619  target_host->Engine->GetErrorHandler()->OnError(e.what());
620  }
621  }
622 }
C4AulErrorHandler * GetErrorHandler() const
Definition: C4Aul.h:175
C4AulScriptEngine * Engine
Definition: C4ScriptHost.h:76
virtual const char * what() const noexcept
std::vector< DeclPtr > declarations
Definition: C4AulAST.h:430
virtual void OnError(const char *msg)=0

Here is the call graph for this function:

virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::ArrayLit n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 446 of file C4AulAST.h.

447  {
448  for (const auto &c : n->values)
449  c->accept(this);
450  }
std::vector< ExprPtr > values
Definition: C4AulAST.h:185
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::ProplistLit n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 451 of file C4AulAST.h.

452  {
453  for (const auto &c : n->values)
454  c.second->accept(this);
455  }
std::vector< std::pair< std::string, ExprPtr > > values
Definition: C4AulAST.h:192
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::UnOpExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 456 of file C4AulAST.h.

457  {
458  n->operand->accept(this);
459  }
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::BinOpExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 460 of file C4AulAST.h.

461  {
462  n->lhs->accept(this);
463  n->rhs->accept(this);
464  }
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::AssignmentExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 465 of file C4AulAST.h.

466  {
467  n->lhs->accept(this);
468  n->rhs->accept(this);
469  }
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::SubscriptExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 470 of file C4AulAST.h.

471  {
472  n->object->accept(this);
473  n->index->accept(this);
474  }
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::SliceExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 475 of file C4AulAST.h.

476  {
477  n->object->accept(this);
478  n->start->accept(this);
479  n->end->accept(this);
480  }
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::Block n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 492 of file C4AulAST.h.

References s.

493  {
494  for (const auto &s : n->children)
495  s->accept(this);
496  }
std::vector< StmtPtr > children
Definition: C4AulAST.h:278
#define s
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::Return n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 497 of file C4AulAST.h.

498  {
499  n->value->accept(this);
500  }
ExprPtr value
Definition: C4AulAST.h:289
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::ForLoop n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 501 of file C4AulAST.h.

502  {
503  if (n->init)
504  n->init->accept(this);
505  if (n->cond)
506  n->cond->accept(this);
507  if (n->incr)
508  n->incr->accept(this);
509  n->body->accept(this);
510  }
StmtPtr body
Definition: C4AulAST.h:296
ExprPtr cond
Definition: C4AulAST.h:295
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::DoLoop n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 516 of file C4AulAST.h.

517  {
518  n->body->accept(this);
519  n->cond->accept(this);
520  }
StmtPtr body
Definition: C4AulAST.h:296
ExprPtr cond
Definition: C4AulAST.h:295
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::WhileLoop n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 521 of file C4AulAST.h.

522  {
523  n->cond->accept(this);
524  n->body->accept(this);
525  }
StmtPtr body
Definition: C4AulAST.h:296
ExprPtr cond
Definition: C4AulAST.h:295
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::If n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 526 of file C4AulAST.h.

527  {
528  n->cond->accept(this);
529  n->iftrue->accept(this);
530  if (n->iffalse)
531  n->iffalse->accept(this);
532  }
ExprPtr cond
Definition: C4AulAST.h:343
StmtPtr iftrue
Definition: C4AulAST.h:344
StmtPtr iffalse
Definition: C4AulAST.h:344
virtual void aul::DefaultRecursiveVisitor::visit ( const ::aul::ast::FunctionExpr n)
inlineoverridevirtualinherited

Reimplemented from aul::AstVisitor.

Reimplemented in C4AulCompiler::CodegenAstVisitor.

Definition at line 543 of file C4AulAST.h.

544  {
545  n->body->accept(this);
546  }
std::unique_ptr< Block > body
Definition: C4AulAST.h:384

The documentation for this class was generated from the following file: