FLANG
dump-parse-tree.h
1//===-- include/flang/Parser/dump-parse-tree.h ------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef FORTRAN_PARSER_DUMP_PARSE_TREE_H_
10#define FORTRAN_PARSER_DUMP_PARSE_TREE_H_
11
12#include "format-specification.h"
13#include "parse-tree-visitor.h"
14#include "parse-tree.h"
15#include "tools.h"
16#include "unparse.h"
17#include "flang/Common/enum-set.h"
18#include "flang/Common/idioms.h"
19#include "flang/Common/indirection.h"
20#include "flang/Support/Fortran.h"
21#include "llvm/ADT/StringExtras.h"
22#include "llvm/Frontend/OpenMP/OMP.h"
23#include "llvm/Support/raw_ostream.h"
24#include <string>
25#include <type_traits>
26
27namespace Fortran::parser {
28
29//
30// Dump the Parse Tree hierarchy of any node 'x' of the parse tree.
31//
32
33class ParseTreeDumper {
34public:
35 explicit ParseTreeDumper(llvm::raw_ostream &out,
36 const AnalyzedObjectsAsFortran *asFortran = nullptr)
37 : out_(out), asFortran_{asFortran} {}
38
39 static constexpr const char *GetNodeName(const char *) { return "char *"; }
40
41 template <typename T, typename E, size_t B>
42 static std::string GetMemberNames(const common::EnumSet<E, B> &x) {
43 llvm::ListSeparator sep;
44 std::string s;
45 llvm::raw_string_ostream stream(s);
46 x.IterateOverMembers([&](E e) { stream << sep << T::EnumToString(e); });
47 return stream.str();
48 }
49#define NODE_ENUMSET(T, S) \
50 static std::string GetNodeName(const T::S &x) { \
51 return #S " = {"s + GetMemberNames<T>(x) + "}"s; \
52 }
53#define NODE_NAME(T, N) \
54 static constexpr const char *GetNodeName(const T &) { return N; }
55#define NODE_ENUM(T, E) \
56 static std::string GetNodeName(const T::E &x) { \
57 return #E " = "s + std::string{T::EnumToString(x)}; \
58 }
59#define NODE(T1, T2) NODE_NAME(T1::T2, #T2)
60 NODE_NAME(bool, "bool")
61 NODE_NAME(int, "int")
62 NODE(std, string)
63 NODE(std, int64_t)
64 NODE(std, uint64_t)
65 NODE_ENUM(common, CUDADataAttr)
66 NODE_ENUM(common, CUDASubprogramAttrs)
67 NODE_ENUM(common, ImportKind)
68 NODE_ENUM(common, OmpDependenceKind)
69 NODE_ENUM(common, OmpMemoryOrderType)
70 NODE_ENUM(common, OpenACCDeviceType)
71 NODE(format, ControlEditDesc)
72 NODE(format::ControlEditDesc, Kind)
73 NODE(format, DerivedTypeDataEditDesc)
74 NODE(format, FormatItem)
75 NODE(format, FormatSpecification)
76 NODE(format, IntrinsicTypeDataEditDesc)
78 NODE(parser, Abstract)
80 NODE(AccAtomicCapture, Stmt1)
81 NODE(AccAtomicCapture, Stmt2)
89 NODE(parser, AccClause)
90#define GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
91#include "llvm/Frontend/OpenACC/ACC.inc"
94 static std::string GetNodeName(const llvm::acc::DefaultValue &x) {
95 return llvm::Twine(
96 "llvm::acc::DefaultValue = ", llvm::acc::getOpenACCDefaultValueName(x))
97 .str();
98 }
102 NODE_ENUM(parser::AccDataModifier, Modifier)
104 NODE(parser, AccEndAtomic)
108 NODE(parser, AccGangArg)
109 NODE(AccGangArg, Num)
110 NODE(AccGangArg, Dim)
111 NODE(AccGangArg, Static)
113 NODE(parser, AccObject)
114 NODE(parser, AccObjectList)
117 NODE(parser, AccSizeExpr)
119 NODE(parser, AccSelfClause)
122
124 NODE(parser, AccTileExpr)
127 NODE(parser, AccEndLoop)
129 static std::string GetNodeName(const llvm::acc::Directive &x) {
130 return llvm::Twine(
131 "llvm::acc::Directive = ", llvm::acc::getOpenACCDirectiveName(x))
132 .str();
133 }
134 NODE(parser, AcImpliedDo)
136 NODE(parser, AcValue)
137 NODE(parser, AccessStmt)
138 NODE(parser, AccessId)
139 NODE(parser, AccessSpec)
140 NODE_ENUM(AccessSpec, Kind)
141 NODE(parser, AcSpec)
142 NODE(parser, ActionStmt)
143 NODE(parser, ActualArg)
144 NODE(ActualArg, PercentRef)
145 NODE(ActualArg, PercentVal)
146 NODE(parser, ActualArgSpec)
147 NODE(AcValue, Triplet)
148 NODE(parser, AllocOpt)
149 NODE(AllocOpt, Mold)
150 NODE(AllocOpt, Source)
151 NODE(AllocOpt, Stream)
152 NODE(AllocOpt, Pinned)
153 NODE(parser, Allocatable)
154 NODE(parser, AllocatableStmt)
158 NODE(parser, AllocateStmt)
159 NODE(parser, Allocation)
160 NODE(parser, AltReturnSpec)
162 NODE(parser, ArrayConstructor)
163 NODE(parser, ArrayElement)
164 NODE(parser, ArraySpec)
165 NODE(parser, AssignStmt)
169 NODE(parser, AssociateStmt)
170 NODE(parser, Association)
171 NODE(parser, AssumedImpliedSpec)
172 NODE(parser, AssumedRankSpec)
173 NODE(parser, AssumedShapeSpec)
175 NODE(parser, Asynchronous)
176 NODE(parser, AsynchronousStmt)
177 NODE(parser, AttrSpec)
178 NODE(parser, BOZLiteralConstant)
179 NODE(parser, BackspaceStmt)
180 NODE(parser, BasedPointer)
181 NODE(parser, BasedPointerStmt)
182 NODE(parser, BindAttr)
183 NODE(BindAttr, Deferred)
184 NODE(BindAttr, Non_Overridable)
185 NODE(parser, BindEntity)
186 NODE_ENUM(BindEntity, Kind)
187 NODE(parser, BindStmt)
188 NODE(parser, Block)
190 NODE(parser, BlockData)
191 NODE(parser, BlockDataStmt)
192 NODE(parser, BlockSpecificationPart)
193 NODE(parser, BlockStmt)
195 NODE(parser, BoundsSpec)
196 NODE(parser, Call)
197 NODE(parser, CallStmt)
198 NODE(CallStmt, Chevrons)
199 NODE(CallStmt, StarOrExpr)
200 NODE(parser, CaseConstruct)
201 NODE(CaseConstruct, Case)
202 NODE(parser, CaseSelector)
203 NODE(parser, CaseStmt)
205 NODE(CaseValueRange, Range)
208 NODE(parser, CharLength)
211 NODE(parser, CharSelector)
212 NODE(CharSelector, LengthAndKind)
213 NODE(parser, CloseStmt)
214 NODE(CloseStmt, CloseSpec)
216 NODE(parser, CoarraySpec)
218 NODE(parser, CodimensionStmt)
221 NODE(parser, CommonStmt)
222 NODE(CommonStmt, Block)
224 NODE(CompilerDirective, AssumeAligned)
225 NODE(CompilerDirective, IgnoreTKR)
226 NODE(CompilerDirective, Inline)
227 NODE(CompilerDirective, IVDep)
228 NODE(CompilerDirective, ForceInline)
229 NODE(CompilerDirective, LoopCount)
230 NODE(CompilerDirective, NameValue)
231 NODE(CompilerDirective, NoInline)
232 NODE(CompilerDirective, Unrecognized)
233 NODE(CompilerDirective, VectorAlways)
234 NODE_ENUM(CompilerDirective::VectorLength, VectorLength::Kind)
235 NODE(CompilerDirective, VectorLength)
236 NODE(CompilerDirective, Unroll)
237 NODE(CompilerDirective, UnrollAndJam)
238 NODE(CompilerDirective, NoVector)
239 NODE(CompilerDirective, NoUnroll)
240 NODE(CompilerDirective, NoUnrollAndJam)
241 NODE(CompilerDirective, Prefetch)
243 NODE(parser, ComplexPart)
246 NODE(parser, ComponentDataSource)
247 NODE(parser, ComponentDecl)
248 NODE(parser, FillDecl)
251 NODE(parser, ComponentSpec)
255 NODE(parser, ConnectSpec)
256 NODE(ConnectSpec, CharExpr)
257 NODE_ENUM(ConnectSpec::CharExpr, Kind)
258 NODE(ConnectSpec, Newunit)
259 NODE(ConnectSpec, Recl)
260 NODE(parser, ContainsStmt)
261 NODE(parser, Contiguous)
262 NODE(parser, ContiguousStmt)
263 NODE(parser, ContinueStmt)
265 NODE(parser, CriticalStmt)
268 NODE(CUFKernelDoConstruct, StarOrExpr)
269 NODE(CUFKernelDoConstruct, Directive)
270 NODE(CUFKernelDoConstruct, LaunchConfiguration)
271 NODE(parser, CUFReduction)
272 NODE(parser, CycleStmt)
274 NODE(parser, DataIDoObject)
275 NODE(parser, DataImpliedDo)
276 NODE(parser, DataRef)
277 NODE(parser, DataStmt)
281 NODE(parser, DataStmtSet)
282 NODE(parser, DataStmtValue)
286 NODE(DeclarationTypeSpec, Class)
287 NODE(DeclarationTypeSpec, ClassStar)
288 NODE(DeclarationTypeSpec, Record)
289 NODE(DeclarationTypeSpec, Type)
290 NODE(DeclarationTypeSpec, TypeStar)
291 NODE(parser, Default)
292 NODE(parser, DeferredCoshapeSpecList)
293 NODE(parser, DeferredShapeSpecList)
294 NODE(parser, DefinedOpName)
296 NODE_ENUM(DefinedOperator, IntrinsicOperator)
300 NODE(parser, Designator)
301 NODE(parser, DimensionStmt)
302 NODE(DimensionStmt, Declaration)
303 NODE(parser, DoConstruct)
304 NODE(parser, DummyArg)
305 NODE(parser, ElseIfStmt)
306 NODE(parser, ElseStmt)
307 NODE(parser, ElsewhereStmt)
308 NODE(parser, EndAssociateStmt)
309 NODE(parser, EndBlockDataStmt)
310 NODE(parser, EndBlockStmt)
312 NODE(parser, EndCriticalStmt)
313 NODE(parser, EndDoStmt)
314 NODE(parser, EndEnumStmt)
315 NODE(parser, EndForallStmt)
316 NODE(parser, EndFunctionStmt)
317 NODE(parser, EndIfStmt)
318 NODE(parser, EndInterfaceStmt)
319 NODE(parser, EndLabel)
320 NODE(parser, EndModuleStmt)
321 NODE(parser, EndMpSubprogramStmt)
322 NODE(parser, EndProgramStmt)
323 NODE(parser, EndSelectStmt)
324 NODE(parser, EndSubmoduleStmt)
325 NODE(parser, EndSubroutineStmt)
326 NODE(parser, EndTypeStmt)
327 NODE(parser, EndWhereStmt)
328 NODE(parser, EndfileStmt)
329 NODE(parser, EntityDecl)
330 NODE(parser, EntryStmt)
331 NODE(parser, EnumDef)
332 NODE(parser, EnumDefStmt)
333 NODE(parser, Enumerator)
334 NODE(parser, EnumeratorDefStmt)
335 NODE(parser, EorLabel)
336 NODE(parser, EquivalenceObject)
337 NODE(parser, EquivalenceStmt)
338 NODE(parser, ErrLabel)
339 NODE(parser, ErrorRecovery)
340 NODE(parser, EventPostStmt)
341 NODE(parser, EventWaitSpec)
342 NODE(parser, EventWaitStmt)
344 NODE(parser, ExecutionPart)
346 NODE(parser, ExitStmt)
349 NODE(parser, Expr)
350 NODE(Expr, Parentheses)
351 NODE(Expr, UnaryPlus)
352 NODE(Expr, Negate)
353 NODE(Expr, NOT)
354 NODE(Expr, PercentLoc)
355 NODE(Expr, DefinedUnary)
356 NODE(Expr, Power)
357 NODE(Expr, Multiply)
358 NODE(Expr, Divide)
359 NODE(Expr, Add)
360 NODE(Expr, Subtract)
361 NODE(Expr, Concat)
362 NODE(Expr, LT)
363 NODE(Expr, LE)
364 NODE(Expr, EQ)
365 NODE(Expr, NE)
366 NODE(Expr, GE)
367 NODE(Expr, GT)
368 NODE(Expr, AND)
369 NODE(Expr, OR)
370 NODE(Expr, EQV)
371 NODE(Expr, NEQV)
372 NODE(Expr, DefinedBinary)
373 NODE(Expr, ComplexConstructor)
374 NODE(parser, External)
375 NODE(parser, ExternalStmt)
376 NODE(parser, FailImageStmt)
377 NODE(parser, FileUnitNumber)
378 NODE(parser, FinalProcedureStmt)
379 NODE(parser, FlushStmt)
384 NODE(parser, ForallStmt)
385 NODE(parser, FormTeamStmt)
386 NODE(FormTeamStmt, FormTeamSpec)
387 NODE(parser, Format)
388 NODE(parser, FormatStmt)
390 NODE(parser, FunctionStmt)
392 NODE(parser, GenericSpec)
393 NODE(GenericSpec, Assignment)
394 NODE(GenericSpec, ReadFormatted)
395 NODE(GenericSpec, ReadUnformatted)
396 NODE(GenericSpec, WriteFormatted)
397 NODE(GenericSpec, WriteUnformatted)
398 NODE(parser, GenericStmt)
399 NODE(parser, GotoStmt)
401 NODE(parser, IdExpr)
402 NODE(parser, IdVariable)
403 NODE(parser, IfConstruct)
404 NODE(IfConstruct, ElseBlock)
405 NODE(IfConstruct, ElseIfBlock)
406 NODE(parser, IfStmt)
407 NODE(parser, IfThenStmt)
408 NODE(parser, TeamValue)
409 NODE(parser, ImageSelector)
411 NODE(ImageSelectorSpec, Notify)
412 NODE(ImageSelectorSpec, Stat)
413 NODE(ImageSelectorSpec, Team_Number)
414 NODE(parser, ImplicitPart)
416 NODE(parser, ImplicitSpec)
417 NODE(parser, ImplicitStmt)
418 NODE_ENUM(ImplicitStmt, ImplicitNoneNameSpec)
419 NODE(parser, ImpliedShapeSpec)
420 NODE(parser, ImportStmt)
423 NODE(parser, InputItem)
424 NODE(parser, InquireSpec)
425 NODE(InquireSpec, CharVar)
426 NODE_ENUM(InquireSpec::CharVar, Kind)
427 NODE(InquireSpec, IntVar)
428 NODE_ENUM(InquireSpec::IntVar, Kind)
429 NODE(InquireSpec, LogVar)
430 NODE_ENUM(InquireSpec::LogVar, Kind)
431 NODE(parser, InquireStmt)
432 NODE(InquireStmt, Iolength)
433 NODE(parser, IntegerTypeSpec)
434 NODE(parser, IntentSpec)
435 NODE_ENUM(IntentSpec, Intent)
436 NODE(parser, IntentStmt)
438 NODE(parser, InterfaceBody)
439 NODE(InterfaceBody, Function)
440 NODE(InterfaceBody, Subroutine)
442 NODE(parser, InterfaceStmt)
445 NODE(parser, Intrinsic)
446 NODE(parser, IntrinsicStmt)
448 NODE(IntrinsicTypeSpec, Character)
449 NODE(IntrinsicTypeSpec, Complex)
450 NODE(IntrinsicTypeSpec, DoubleComplex)
451 NODE(IntrinsicTypeSpec, DoublePrecision)
453 NODE(IntrinsicTypeSpec, Real)
454 NODE(parser, IoControlSpec)
455 NODE(IoControlSpec, Asynchronous)
456 NODE(IoControlSpec, CharExpr)
457 NODE_ENUM(IoControlSpec::CharExpr, Kind)
458 NODE(IoControlSpec, Pos)
459 NODE(IoControlSpec, Rec)
460 NODE(IoControlSpec, Size)
461 NODE(parser, IoUnit)
462 NODE(parser, Keyword)
463 NODE(parser, KindParam)
464 NODE(parser, KindSelector)
465 NODE(KindSelector, StarSize)
466 NODE(parser, LabelDoStmt)
469 NODE(parser, LetterSpec)
473 NODE_ENUM(parser::ReductionOperator, Operator)
474 NODE(parser, LocalitySpec)
475 NODE(LocalitySpec, DefaultNone)
476 NODE(LocalitySpec, Local)
477 NODE(LocalitySpec, LocalInit)
478 NODE(LocalitySpec, Reduce)
479 NODE(LocalitySpec, Shared)
480 NODE(parser, LockStmt)
481 NODE(LockStmt, LockStat)
483 NODE_NAME(LoopControl::Bounds, "LoopBounds")
484 NODE_NAME(AcImpliedDoControl::Bounds, "LoopBounds")
485 NODE_NAME(DataImpliedDo::Bounds, "LoopBounds")
486 NODE(parser, LoopControl)
487 NODE(LoopControl, Concurrent)
488 NODE(parser, MainProgram)
489 NODE(parser, Map)
490 NODE(Map, EndMapStmt)
491 NODE(Map, MapStmt)
493 NODE(parser, Module)
494 NODE(parser, ModuleStmt)
497 NODE(parser, MpSubprogramStmt)
498 NODE(parser, MsgVariable)
499 NODE(parser, Name)
500 NODE(parser, NamedConstant)
502 NODE(parser, NamelistStmt)
503 NODE(NamelistStmt, Group)
505 NODE(parser, NoPass)
507 NODE(parser, NullifyStmt)
508 NODE(parser, NullInit)
509 NODE(parser, ObjectDecl)
510 NODE(parser, OldParameterStmt)
511
512 static std::string GetNodeName(const llvm::omp::Directive &x) {
513 return llvm::Twine("llvm::omp::Directive = ",
514 llvm::omp::getOpenMPDirectiveName(x, llvm::omp::FallbackVersion))
515 .str();
516 }
517 static std::string GetNodeName(const llvm::omp::Clause &x) {
518 return llvm::Twine(
519 "llvm::omp::Clause = ", llvm::omp::getOpenMPClauseName(x))
520 .str();
521 }
524 NODE_ENUM(OmpAccessGroup, Value)
526 NODE(OmpAdjustArgsClause, OmpAdjustOp)
527 NODE_ENUM(OmpAdjustArgsClause::OmpAdjustOp, Value)
529 NODE(OmpAffinityClause, Modifier)
532 NODE(OmpAlignedClause, Modifier)
533 NODE(parser, OmpAlignment)
536 NODE(OmpAllocateClause, Modifier)
541 NODE_ENUM(OmpAlwaysModifier, Value)
543 NODE(OmpAppendArgsClause, OmpAppendOp)
544 NODE(parser, OmpArgument)
546 NODE(parser, OmpAtClause)
547 NODE_ENUM(OmpAtClause, ActionTime)
550 NODE_ENUM(OmpAttachModifier, Value)
552 NODE_ENUM(OmpAutomapModifier, Value)
557 NODE(parser, OmpBindClause)
558 NODE_ENUM(OmpBindClause, Binding)
562 NODE_ENUM(OmpChunkModifier, Value)
563 NODE(parser, OmpClause)
564 NODE(parser, OmpClauseList)
566 NODE_ENUM(OmpCloseModifier, Value)
573 NODE_ENUM(OmpDefaultClause, DataSharingAttribute)
575 NODE(OmpDefaultmapClause, Modifier)
576 NODE_ENUM(OmpDefaultmapClause, ImplicitBehavior)
578 NODE_ENUM(OmpDeleteModifier, Value)
580 NODE(OmpDependClause, TaskDep)
581 NODE(OmpDependClause::TaskDep, Modifier)
583 NODE_ENUM(OmpDependenceType, Value)
588 NODE(OmpDeviceClause, Modifier)
590 NODE_ENUM(OmpDeviceModifier, Value)
593 NODE_ENUM(OmpDeviceTypeClause, DeviceTypeDescription)
597 NODE_ENUM(OmpDirectiveSpecification, Flag)
598 NODE_ENUMSET(OmpDirectiveSpecification, Flags)
599 NODE(parser, OmpDoacross)
600 NODE(OmpDoacross, Sink)
601 NODE(OmpDoacross, Source)
605 NODE(OmpDynGroupprivateClause, Modifier)
610 NODE(OmpEnterClause, Modifier)
613 NODE_ENUM(OmpExpectation, Value)
614 NODE(parser, OmpFailClause)
616 NODE_ENUM(OmpFallbackModifier, Value)
617 NODE(parser, OmpFromClause)
618 NODE(OmpFromClause, Modifier)
620 NODE(OmpGrainsizeClause, Modifier)
623 NODE(parser, OmpHintClause)
625 NODE(parser, OmpIfClause)
626 NODE(OmpIfClause, Modifier)
628 NODE(parser, OmpInitClause)
629 NODE(OmpInitClause, Modifier)
633 NODE(OmpInReductionClause, Modifier)
635 NODE_ENUM(OmpInteropType, Value)
636 NODE(parser, OmpIteration)
639 NODE(parser, OmpIterator)
642 NODE(OmpLastprivateClause, Modifier)
644 NODE_ENUM(OmpLastprivateModifier, Value)
646 NODE(OmpLinearClause, Modifier)
648 NODE_ENUM(OmpLinearModifier, Value)
649 NODE(parser, OmpLocator)
652 NODE(parser, OmpLowerBound)
653 NODE(parser, OmpMapClause)
654 NODE(OmpMapClause, Modifier)
655 NODE(parser, OmpMapper)
657 NODE(parser, OmpMapType)
658 NODE_ENUM(OmpMapType, Value)
660 NODE_ENUM(OmpMapTypeModifier, Value)
664 NODE(parser, OmpNoOpenMPClause)
665 NODE(parser, OmpNoOpenMPRoutinesClause)
666 NODE(parser, OmpNoParallelismClause)
670 NODE(OmpNumTeamsClause, Modifier)
672 NODE(OmpNumThreadsClause, Modifier)
673 NODE(OmpNumTasksClause, Modifier)
674 NODE(parser, OmpObject)
675 NODE(OmpObject, Invalid)
676 NODE_ENUM(OmpObject::Invalid, Kind)
677 NODE(parser, OmpObjectList)
679 NODE(OmpOrderClause, Modifier)
680 NODE_ENUM(OmpOrderClause, Ordering)
682 NODE_ENUM(OmpOrderingModifier, Value)
684 NODE_ENUM(OmpOrderModifier, Value)
688 NODE(parser, OmpPreferType)
690 NODE_ENUM(OmpPrescriptiveness, Value)
692 NODE_ENUM(OmpPresentModifier, Value)
694 NODE_ENUM(OmpProcBindClause, AffinityPolicy)
696 NODE(OmpReductionClause, Modifier)
699 NODE_ENUM(OmpReductionModifier, Value)
702 NODE_ENUM(OmpRefModifier, Value)
706 NODE(OmpScheduleClause, Modifier)
707 NODE_ENUM(OmpScheduleClause, Kind)
710 NODE_ENUM(OmpSelfModifier, Value)
712 NODE_ENUM(OmpSeverityClause, SevLevel)
718 NODE(OmpStylizedInstance, Instance)
721 NODE(OmpTaskReductionClause, Modifier)
723 NODE(OmpThreadLimitClause, Modifier)
725 NODE_ENUM(OmpThreadsetClause, ThreadsetPolicy)
726 NODE(parser, OmpToClause)
727 NODE(OmpToClause, Modifier)
730 NODE(OmpTraitPropertyExtension, Complex)
732 NODE(parser, OmpTraitScore)
734 NODE(OmpTraitSelector, Properties)
736 NODE_ENUM(OmpTraitSelectorName, Value)
739 NODE_ENUM(OmpTraitSetSelectorName, Value)
741 NODE(parser, OmpTypeName)
746 NODE(parser, OmpUseClause)
748 NODE_ENUM(OmpVariableCategory, Value)
749 NODE(parser, OmpWhenClause)
750 NODE(OmpWhenClause, Modifier)
752 NODE_ENUM(OmpxHoldModifier, Value)
753#define GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
754#include "llvm/Frontend/OpenMP/OMP.inc"
755
756 NODE(parser, Only)
770
798
799 NODE(parser, OpenStmt)
800 NODE(parser, Optional)
801 NODE(parser, OptionalStmt)
804 NODE(parser, OutputItem)
805 NODE(parser, Parameter)
806 NODE(parser, ParameterStmt)
808 NODE(parser, Pass)
809 NODE(parser, PauseStmt)
810 NODE(parser, Pointer)
812 NODE(PointerAssignmentStmt, Bounds)
813 NODE(parser, PointerDecl)
814 NODE(parser, PointerObject)
815 NODE(parser, PointerStmt)
817 NODE(parser, PrefixSpec)
818 NODE(PrefixSpec, Elemental)
819 NODE(PrefixSpec, Impure)
820 NODE(PrefixSpec, Module)
821 NODE(PrefixSpec, Non_Recursive)
822 NODE(PrefixSpec, Pure)
823 NODE(PrefixSpec, Recursive)
824 NODE(PrefixSpec, Attributes)
825 NODE(PrefixSpec, Launch_Bounds)
826 NODE(PrefixSpec, Cluster_Dims)
827 NODE(parser, PrintStmt)
828 NODE(parser, PrivateStmt)
830 NODE(parser, ProcAttrSpec)
834 NODE(parser, ProcDecl)
835 NODE(parser, ProcInterface)
839 NODE(parser, ProcedureStmt)
840 NODE_ENUM(ProcedureStmt, Kind)
841 NODE(parser, Program)
842 NODE(parser, ProgramStmt)
843 NODE(parser, ProgramUnit)
844 NODE(parser, Protected)
845 NODE(parser, ProtectedStmt)
846 NODE(parser, RankClause)
847 NODE(parser, ReadStmt)
849 NODE(RealLiteralConstant, Real)
850 NODE(parser, Rename)
851 NODE(Rename, Names)
852 NODE(Rename, Operators)
853 NODE(parser, ReturnStmt)
854 NODE(parser, RewindStmt)
855 NODE(parser, Save)
856 NODE(parser, SaveStmt)
857 NODE(parser, SavedEntity)
858 NODE_ENUM(SavedEntity, Kind)
862 NODE(SelectRankCaseStmt, Rank)
864 NODE(SelectRankConstruct, RankCase)
867 NODE(SelectTypeConstruct, TypeCase)
869 NODE(parser, Selector)
871 NODE(parser, SequenceStmt)
872 NODE(parser, Sign)
877 NODE(parser, SpecificationExpr)
879 NODE(parser, Star)
880 NODE(parser, StatOrErrmsg)
881 NODE(parser, StatVariable)
882 NODE(parser, StatusExpr)
884 NODE(parser, StopCode)
885 NODE(parser, StopStmt)
886 NODE_ENUM(StopStmt, Kind)
889 NODE(parser, StructureDef)
890 NODE(StructureDef, EndStructureStmt)
892 NODE(parser, StructureStmt)
893 NODE(parser, Submodule)
894 NODE(parser, SubmoduleStmt)
898 NODE(parser, Substring)
901 NODE(parser, Suffix)
902 NODE(parser, SyncAllStmt)
904 NODE(SyncImagesStmt, ImageSet)
905 NODE(parser, SyncMemoryStmt)
906 NODE(parser, SyncTeamStmt)
907 NODE(parser, Target)
908 NODE(parser, TargetStmt)
909 NODE(parser, TypeAttrSpec)
910 NODE(TypeAttrSpec, BindC)
911 NODE(TypeAttrSpec, Extends)
917 NODE(TypeBoundProcedureStmt, WithInterface)
918 NODE(TypeBoundProcedureStmt, WithoutInterface)
920 NODE(parser, TypeGuardStmt)
921 NODE(TypeGuardStmt, Guard)
922 NODE(parser, TypeParamDecl)
924 NODE(common, TypeParamAttr)
925 NODE(parser, TypeParamSpec)
927 NODE(TypeParamValue, Deferred)
928 NODE(parser, TypeSpec)
929 NODE(parser, Union)
930 NODE(Union, EndUnionStmt)
931 NODE(Union, UnionStmt)
932 NODE(parser, UnlockStmt)
934 NODE(parser, UnsignedTypeSpec)
935 NODE(parser, UseStmt)
936 NODE_ENUM(UseStmt, ModuleNature)
937 NODE(parser, Value)
938 NODE(parser, ValueStmt)
939 NODE(parser, Variable)
941 NODE(VectorTypeSpec, PairVectorTypeSpec)
942 NODE(VectorTypeSpec, QuadVectorTypeSpec)
943 NODE(parser, IntrinsicVectorTypeSpec)
945 NODE(parser, Verbatim)
946 NODE(parser, Volatile)
947 NODE(parser, VolatileStmt)
948 NODE(parser, WaitSpec)
949 NODE(parser, WaitStmt)
952 NODE(WhereConstruct, Elsewhere)
953 NODE(WhereConstruct, MaskedElsewhere)
955 NODE(parser, WhereStmt)
956 NODE(parser, WriteStmt)
957#undef NODE
958#undef NODE_NAME
959
960 template <typename T> bool Pre(const T &x) {
961 std::string fortran{AsFortran<T>(x)};
962 if (fortran.empty() && (UnionTrait<T> || WrapperTrait<T>)) {
963 Prefix(GetNodeName(x));
964 } else {
965 IndentEmptyLine();
966 out_ << GetNodeName(x);
967 if (!fortran.empty()) {
968 out_ << " = '" << fortran << '\'';
969 }
970 EndLine();
971 ++indent_;
972 }
973 return true;
974 }
975
976 template <typename T> void Post(const T &x) {
977 if (AsFortran<T>(x).empty() && (UnionTrait<T> || WrapperTrait<T>)) {
978 EndLineIfNonempty();
979 } else {
980 --indent_;
981 }
982 }
983
984 // A few types we want to ignore
985
986 bool Pre(const CharBlock &) { return true; }
987 void Post(const CharBlock &) {}
988
989 template <typename T> bool Pre(const Statement<T> &) { return true; }
990 template <typename T> void Post(const Statement<T> &) {}
991 template <typename T> bool Pre(const UnlabeledStatement<T> &) { return true; }
992 template <typename T> void Post(const UnlabeledStatement<T> &) {}
993
994 template <typename T> bool Pre(const common::Indirection<T> &) {
995 return true;
996 }
997 template <typename T> void Post(const common::Indirection<T> &) {}
998
999 template <typename A> bool Pre(const Scalar<A> &) {
1000 Prefix("Scalar");
1001 return true;
1002 }
1003 template <typename A> void Post(const Scalar<A> &) { EndLineIfNonempty(); }
1004
1005 template <typename A> bool Pre(const Constant<A> &) {
1006 Prefix("Constant");
1007 return true;
1008 }
1009 template <typename A> void Post(const Constant<A> &) { EndLineIfNonempty(); }
1010
1011 template <typename A> bool Pre(const Integer<A> &) {
1012 Prefix("Integer");
1013 return true;
1014 }
1015 template <typename A> void Post(const Integer<A> &) { EndLineIfNonempty(); }
1016
1017 template <typename A> bool Pre(const Logical<A> &) {
1018 Prefix("Logical");
1019 return true;
1020 }
1021 template <typename A> void Post(const Logical<A> &) { EndLineIfNonempty(); }
1022
1023 template <typename A> bool Pre(const DefaultChar<A> &) {
1024 Prefix("DefaultChar");
1025 return true;
1026 }
1027 template <typename A> void Post(const DefaultChar<A> &) {
1028 EndLineIfNonempty();
1029 }
1030
1031 template <typename... A> bool Pre(const std::tuple<A...> &) { return true; }
1032 template <typename... A> void Post(const std::tuple<A...> &) {}
1033
1034 template <typename... A> bool Pre(const std::variant<A...> &) { return true; }
1035 template <typename... A> void Post(const std::variant<A...> &) {}
1036
1037protected:
1038 // Return a Fortran representation of this node to include in the dump
1039 template <typename T> std::string AsFortran(const T &x) {
1040 std::string buf;
1041 llvm::raw_string_ostream ss{buf};
1042 if constexpr (HasTypedExpr<T>::value) {
1043 if (asFortran_ && x.typedExpr) {
1044 asFortran_->expr(ss, *x.typedExpr);
1045 }
1046 } else if constexpr (std::is_same_v<T, AssignmentStmt> ||
1047 std::is_same_v<T, PointerAssignmentStmt>) {
1048 if (asFortran_ && x.typedAssignment) {
1049 asFortran_->assignment(ss, *x.typedAssignment);
1050 }
1051 } else if constexpr (std::is_same_v<T, CallStmt>) {
1052 if (asFortran_ && x.typedCall) {
1053 asFortran_->call(ss, *x.typedCall);
1054 }
1055 } else if constexpr (std::is_same_v<T, IntLiteralConstant> ||
1056 std::is_same_v<T, SignedIntLiteralConstant> ||
1057 std::is_same_v<T, UnsignedLiteralConstant>) {
1058 ss << std::get<CharBlock>(x.t);
1059 } else if constexpr (std::is_same_v<T, RealLiteralConstant::Real>) {
1060 ss << x.source;
1061 } else if constexpr (std::is_same_v<T, std::string> ||
1062 std::is_same_v<T, std::int64_t> || std::is_same_v<T, std::uint64_t>) {
1063 ss << x;
1064 }
1065 if (ss.tell()) {
1066 return buf;
1067 }
1068 if constexpr (std::is_same_v<T, Name>) {
1069 return x.source.ToString();
1070#ifdef SHOW_ALL_SOURCE_MEMBERS
1071 } else if constexpr (HasSource<T>::value) {
1072 return x.source.ToString();
1073#endif
1074 } else if constexpr (std::is_same_v<T, int>) {
1075 return std::to_string(x);
1076 } else if constexpr (std::is_same_v<T, bool>) {
1077 return x ? "true" : "false";
1078 } else {
1079 return "";
1080 }
1081 }
1082
1083 void IndentEmptyLine() {
1084 if (emptyline_ && indent_ > 0) {
1085 for (int i{0}; i < indent_; ++i) {
1086 out_ << "| ";
1087 }
1088 emptyline_ = false;
1089 }
1090 }
1091
1092 void Prefix(const char *str) {
1093 IndentEmptyLine();
1094 out_ << str << " -> ";
1095 emptyline_ = false;
1096 }
1097
1098 void Prefix(const std::string &str) {
1099 IndentEmptyLine();
1100 out_ << str << " -> ";
1101 emptyline_ = false;
1102 }
1103
1104 void EndLine() {
1105 out_ << '\n';
1106 emptyline_ = true;
1107 }
1108
1109 void EndLineIfNonempty() {
1110 if (!emptyline_) {
1111 EndLine();
1112 }
1113 }
1114
1115private:
1116 int indent_{0};
1117 llvm::raw_ostream &out_;
1118 const AnalyzedObjectsAsFortran *const asFortran_;
1119 bool emptyline_{false};
1120};
1121
1122template <typename T>
1123llvm::raw_ostream &DumpTree(llvm::raw_ostream &out, const T &x,
1124 const AnalyzedObjectsAsFortran *asFortran = nullptr) {
1125 ParseTreeDumper dumper{out, asFortran};
1126 Walk(x, dumper);
1127 return out;
1128}
1129
1130} // namespace Fortran::parser
1131#endif // FORTRAN_PARSER_DUMP_PARSE_TREE_H_
Definition enum-set.h:28
Definition indirection.h:31
Definition char-block.h:28
Definition dump-parse-tree.h:33
Definition bit-population-count.h:20
Definition check-expression.h:19
Definition format-specification.h:76
Definition format-specification.h:38
Definition parse-tree.h:1275
Definition parse-tree.h:1282
Definition parse-tree.h:1246
Definition parse-tree.h:1234
Definition parse-tree.h:5661
Definition parse-tree.h:5637
Definition parse-tree.h:5653
Definition parse-tree.h:5645
Definition parse-tree.h:5622
Definition parse-tree.h:5686
Definition parse-tree.h:5616
Definition parse-tree.h:5492
Definition parse-tree.h:5465
Definition parse-tree.h:5593
Definition parse-tree.h:5578
Definition parse-tree.h:5573
Definition parse-tree.h:5481
Definition parse-tree.h:5503
Definition parse-tree.h:5486
Definition parse-tree.h:5498
Definition parse-tree.h:5530
Definition parse-tree.h:5524
Definition parse-tree.h:5628
Definition parse-tree.h:5692
Definition parse-tree.h:5569
Definition parse-tree.h:5560
Definition parse-tree.h:5470
Definition parse-tree.h:5509
Definition parse-tree.h:5457
Definition parse-tree.h:5553
Definition parse-tree.h:5549
Definition parse-tree.h:5545
Definition parse-tree.h:5475
Definition parse-tree.h:5541
Definition parse-tree.h:5535
Definition parse-tree.h:5519
Definition parse-tree.h:895
Definition parse-tree.h:1404
Definition parse-tree.h:496
Definition parse-tree.h:3222
Definition parse-tree.h:3212
Definition parse-tree.h:1954
Definition parse-tree.h:1919
Definition parse-tree.h:1898
Definition parse-tree.h:1910
Definition parse-tree.h:1965
Definition parse-tree.h:1927
Definition parse-tree.h:3438
Definition parse-tree.h:1884
Definition parse-tree.h:1330
Definition parse-tree.h:3443
Definition parse-tree.h:3448
Definition parse-tree.h:1991
Definition parse-tree.h:2146
Definition parse-tree.h:2137
Definition parse-tree.h:2130
Definition parse-tree.h:1312
Definition parse-tree.h:1365
Definition parse-tree.h:3388
Definition parse-tree.h:1113
Definition parse-tree.h:1426
Definition parse-tree.h:1433
Definition parse-tree.h:2168
Definition parse-tree.h:3000
Definition parse-tree.h:2001
Definition parse-tree.h:3382
Definition parse-tree.h:5762
Definition parse-tree.h:5756
Definition parse-tree.h:3246
Definition parse-tree.h:3229
Definition parse-tree.h:2409
Definition parse-tree.h:2391
Definition parse-tree.h:2397
Definition parse-tree.h:2378
Definition parse-tree.h:2199
Definition parse-tree.h:2184
Definition parse-tree.h:670
Definition parse-tree.h:854
Definition parse-tree.h:686
Definition parse-tree.h:2667
Definition parse-tree.h:2176
Definition parse-tree.h:970
Definition parse-tree.h:1439
Definition parse-tree.h:1878
Definition parse-tree.h:1606
Definition parse-tree.h:1614
Definition parse-tree.h:3331
Definition parse-tree.h:840
Definition parse-tree.h:832
Definition parse-tree.h:981
Definition parse-tree.h:994
Definition parse-tree.h:1025
Definition parse-tree.h:1102
Definition parse-tree.h:1047
Definition parse-tree.h:1197
Definition parse-tree.h:2496
Definition parse-tree.h:2224
Definition parse-tree.h:2233
Definition parse-tree.h:2645
Definition parse-tree.h:2643
Definition parse-tree.h:303
Definition parse-tree.h:2215
Definition parse-tree.h:2206
Definition parse-tree.h:1055
Definition parse-tree.h:1496
Definition parse-tree.h:1508
Definition parse-tree.h:1794
Definition parse-tree.h:1467
Definition parse-tree.h:1516
Definition parse-tree.h:1482
Definition parse-tree.h:1522
Definition parse-tree.h:1488
Definition parse-tree.h:1985
Definition parse-tree.h:437
Definition parse-tree.h:764
Definition parse-tree.h:327
Definition parse-tree.h:612
Definition parse-tree.h:1182
Definition parse-tree.h:746
Definition parse-tree.h:912
Definition parse-tree.h:1833
Definition parse-tree.h:1533
Definition parse-tree.h:2311
Definition parse-tree.h:3130
Definition parse-tree.h:2331
Definition parse-tree.h:2193
Definition parse-tree.h:1380
Definition parse-tree.h:3300
Definition parse-tree.h:1226
Definition parse-tree.h:1212
Definition parse-tree.h:2550
Definition parse-tree.h:2556
Definition parse-tree.h:2564
Definition parse-tree.h:529
Definition parse-tree.h:554
Definition parse-tree.h:964
Definition parse-tree.h:951
Definition parse-tree.h:1682
Definition parse-tree.h:1041
Definition parse-tree.h:2087
Definition parse-tree.h:2103
Definition parse-tree.h:2081
Definition parse-tree.h:2116
Definition parse-tree.h:2093
Definition parse-tree.h:2576
Definition parse-tree.h:2679
Definition parse-tree.h:3234
Definition parse-tree.h:3119
Definition parse-tree.h:3266
Definition parse-tree.h:3013
Definition parse-tree.h:3028
Definition tools.h:134
Definition tools.h:140
Definition parse-tree.h:2345
Definition parse-tree.h:2361
Definition parse-tree.h:2324
Definition parse-tree.h:1666
Definition parse-tree.h:1676
Definition parse-tree.h:419
Definition parse-tree.h:1590
Definition parse-tree.h:1599
Definition parse-tree.h:625
Definition parse-tree.h:1012
Definition parse-tree.h:2775
Definition parse-tree.h:2719
Definition parse-tree.h:2862
Definition parse-tree.h:2870
Definition parse-tree.h:2875
Definition parse-tree.h:2860
Definition parse-tree.h:2888
Definition parse-tree.h:790
Definition parse-tree.h:311
Definition parse-tree.h:1338
Definition parse-tree.h:1542
Definition parse-tree.h:3186
Definition parse-tree.h:3151
Definition parse-tree.h:3176
Definition parse-tree.h:3034
Definition parse-tree.h:475
Definition parse-tree.h:463
Definition parse-tree.h:704
Definition parse-tree.h:2703
Definition parse-tree.h:2701
Definition parse-tree.h:2615
Definition parse-tree.h:777
Definition parse-tree.h:658
Definition parse-tree.h:2288
Definition parse-tree.h:1291
Definition parse-tree.h:676
Definition parse-tree.h:1584
Definition parse-tree.h:886
Definition parse-tree.h:2256
Definition parse-tree.h:2590
Definition parse-tree.h:868
Definition parse-tree.h:319
Definition parse-tree.h:2276
Definition parse-tree.h:2909
Definition parse-tree.h:3404
Definition parse-tree.h:2048
Definition parse-tree.h:2933
Definition parse-tree.h:2923
Definition parse-tree.h:2944
Definition parse-tree.h:587
Definition parse-tree.h:1297
Definition parse-tree.h:638
Definition parse-tree.h:2294
Definition parse-tree.h:2518
Definition parse-tree.h:1413
Definition parse-tree.h:4269
Definition parse-tree.h:4273
Definition parse-tree.h:4288
Definition parse-tree.h:4295
Definition parse-tree.h:4303
Definition parse-tree.h:4318
Definition parse-tree.h:5260
Definition parse-tree.h:4325
Definition parse-tree.h:4334
Definition parse-tree.h:5054
Definition parse-tree.h:5397
Definition parse-tree.h:5125
Definition parse-tree.h:4357
Definition parse-tree.h:5064
Definition parse-tree.h:5023
Definition parse-tree.h:5007
Definition parse-tree.h:4372
Definition parse-tree.h:3573
Definition parse-tree.h:4380
Definition parse-tree.h:4397
Definition parse-tree.h:4415
Definition parse-tree.h:4474
Definition parse-tree.h:4472
Definition parse-tree.h:4496
Definition parse-tree.h:4504
Definition parse-tree.h:4514
Definition parse-tree.h:4524
Definition parse-tree.h:4532
Definition parse-tree.h:3474
Definition parse-tree.h:5030
Definition parse-tree.h:4487
Definition parse-tree.h:4454
Definition parse-tree.h:4547
Definition parse-tree.h:5059
Definition parse-tree.h:5401
Definition parse-tree.h:5130
Definition parse-tree.h:4558
Definition parse-tree.h:5092
Definition parse-tree.h:4566
Definition parse-tree.h:4579
Definition parse-tree.h:4590
Definition parse-tree.h:4600
Definition parse-tree.h:4608
Definition parse-tree.h:4613
Definition parse-tree.h:4621
Definition parse-tree.h:4637
Definition parse-tree.h:4660
Definition parse-tree.h:4626
Definition parse-tree.h:4650
Definition parse-tree.h:4667
Definition parse-tree.h:3585
Definition parse-tree.h:4427
Definition parse-tree.h:4445
Definition parse-tree.h:4436
Definition parse-tree.h:4676
Definition parse-tree.h:4691
Definition parse-tree.h:4702
Definition parse-tree.h:4727
Definition parse-tree.h:4739
Definition parse-tree.h:4748
Definition parse-tree.h:5077
Definition parse-tree.h:5086
Definition parse-tree.h:4772
Definition parse-tree.h:4784
Definition parse-tree.h:4796
Definition parse-tree.h:3519
Definition parse-tree.h:3510
Definition parse-tree.h:3507
Definition parse-tree.h:4807
Definition parse-tree.h:4820
Definition parse-tree.h:4832
Definition parse-tree.h:4843
Definition parse-tree.h:3563
Definition parse-tree.h:4853
Definition parse-tree.h:4862
Definition parse-tree.h:4874
Definition parse-tree.h:4885
Definition parse-tree.h:4892
Definition parse-tree.h:3523
Definition parse-tree.h:3545
Definition parse-tree.h:3532
Definition parse-tree.h:4901
Definition parse-tree.h:4912
Definition parse-tree.h:4921
Definition parse-tree.h:4936
Definition parse-tree.h:4946
Definition parse-tree.h:3499
Definition parse-tree.h:3492
Definition parse-tree.h:4955
Definition parse-tree.h:4980
Definition parse-tree.h:5002
Definition parse-tree.h:4991
Definition parse-tree.h:3044
Definition parse-tree.h:5668
Definition parse-tree.h:5675
Definition parse-tree.h:5604
Definition parse-tree.h:5697
Definition parse-tree.h:5736
Definition parse-tree.h:5725
Definition parse-tree.h:5716
Definition parse-tree.h:5598
Definition parse-tree.h:5610
Definition parse-tree.h:5286
Definition parse-tree.h:5119
Definition parse-tree.h:5291
Definition parse-tree.h:5328
Definition parse-tree.h:5432
Definition parse-tree.h:5276
Definition parse-tree.h:5107
Definition parse-tree.h:5339
Definition parse-tree.h:5353
Definition parse-tree.h:5369
Definition parse-tree.h:5215
Definition parse-tree.h:5377
Definition parse-tree.h:5450
Definition parse-tree.h:5406
Definition parse-tree.h:5221
Definition parse-tree.h:5139
Definition parse-tree.h:5145
Definition parse-tree.h:5388
Definition parse-tree.h:5227
Definition parse-tree.h:5096
Definition parse-tree.h:376
Definition parse-tree.h:2780
Definition parse-tree.h:2743
Definition parse-tree.h:2969
Definition parse-tree.h:2013
Definition parse-tree.h:1552
Definition parse-tree.h:1974
Definition parse-tree.h:2806
Definition parse-tree.h:3089
Definition parse-tree.h:2764
Definition parse-tree.h:925
Definition parse-tree.h:3067
Definition parse-tree.h:1066
Definition parse-tree.h:1094
Definition parse-tree.h:1873
Definition parse-tree.h:1086
Definition parse-tree.h:1080
Definition parse-tree.h:1073
Definition parse-tree.h:3077
Definition parse-tree.h:3201
Definition parse-tree.h:3169
Definition parse-tree.h:571
Definition parse-tree.h:2727
Definition parse-tree.h:809
Definition parse-tree.h:2245
Definition parse-tree.h:2955
Definition parse-tree.h:1565
Definition parse-tree.h:295
Definition parse-tree.h:1651
Definition parse-tree.h:2368
Definition parse-tree.h:2432
Definition parse-tree.h:2444
Definition parse-tree.h:2423
Definition parse-tree.h:2478
Definition parse-tree.h:2458
Definition parse-tree.h:2124
Definition parse-tree.h:3292
Definition parse-tree.h:398
Definition parse-tree.h:451
Definition parse-tree.h:1943
Definition parse-tree.h:359
Definition parse-tree.h:3310
Definition parse-tree.h:2510
Definition parse-tree.h:1863
Definition parse-tree.h:1203
Definition parse-tree.h:3425
Definition parse-tree.h:3397
Definition parse-tree.h:3420
Definition parse-tree.h:2975
Definition parse-tree.h:2986
Definition parse-tree.h:3138
Definition parse-tree.h:3276
Definition parse-tree.h:1642
Definition parse-tree.h:1825
Definition parse-tree.h:1633
Definition parse-tree.h:1811
Definition parse-tree.h:3108
Definition parse-tree.h:2528
Definition parse-tree.h:2541
Definition parse-tree.h:903
Definition parse-tree.h:1146
Definition parse-tree.h:1159
Definition parse-tree.h:1121
Definition parse-tree.h:1168
Definition parse-tree.h:1131
Definition parse-tree.h:1394
Definition parse-tree.h:2467
Definition parse-tree.h:931
Definition parse-tree.h:939
Definition parse-tree.h:740
Definition parse-tree.h:649
Definition parse-tree.h:753
Definition parse-tree.h:3413
Definition parse-tree.h:354
Definition parse-tree.h:2600
Definition parse-tree.h:796
Definition parse-tree.h:3053
Definition parse-tree.h:1841
Definition parse-tree.h:726
Definition parse-tree.h:731
Definition parse-tree.h:282
Definition parse-tree.h:2790
Definition parse-tree.h:2039
Definition parse-tree.h:2032
Definition parse-tree.h:2063
Definition parse-tree.h:2026
Definition parse-tree.h:2749
Definition parse-tree.h:3647
Definition parse-tree.h:3638
Definition parse-tree.h:3608
Definition parse-tree.h:3597
Definition parse-tree.h:3592
Definition parse-tree.h:3618
Definition parse-tree.h:3631
Definition parse-tree.h:3802
Definition parse-tree.h:3819
Definition parse-tree.h:3811
Definition parse-tree.h:3847
Definition parse-tree.h:3859
Definition parse-tree.h:3869
Definition parse-tree.h:3880
Definition parse-tree.h:3893
Definition parse-tree.h:3905
Definition parse-tree.h:3926
Definition parse-tree.h:3937
Definition parse-tree.h:3947
Definition parse-tree.h:3956
Definition parse-tree.h:3988
Definition parse-tree.h:3999
Definition parse-tree.h:4010
Definition parse-tree.h:4022
Definition parse-tree.h:4032
Definition parse-tree.h:4040
Definition parse-tree.h:4049
Definition parse-tree.h:4058
Definition parse-tree.h:4092
Definition parse-tree.h:4079
Definition parse-tree.h:4066
Definition parse-tree.h:4116
Definition parse-tree.h:4107
Definition parse-tree.h:4150
Definition parse-tree.h:4126
Definition parse-tree.h:4159
Definition parse-tree.h:4172
Definition parse-tree.h:4181
Definition parse-tree.h:4191
Definition parse-tree.h:4201
Definition parse-tree.h:4210
Definition parse-tree.h:4218
Definition parse-tree.h:4228
Definition parse-tree.h:4239
Definition parse-tree.h:4252
Definition parse-tree.h:3685
Definition parse-tree.h:3668
Definition parse-tree.h:3709
Definition parse-tree.h:3675
Definition parse-tree.h:3736
Definition parse-tree.h:3748
Definition parse-tree.h:3761
Definition parse-tree.h:3770