set(SOURCES_DELPHI_HEADERS
  ${SOURCE_INC_DIR}/Delphi.hpp
)

set(SOURCES_DELPHI
  ${SOURCE_DIR}/Delphi.cpp
)

set(SOURCES_DELPHI_AST_HEADERS
  ${SOURCE_INC_DIR}/AST/IDelphiSyntaxTree.hpp
  ${SOURCE_DIR}/AST/DelphiSyntaxTree.hpp
)

set(SOURCES_DELPHI_AST
  ${SOURCE_DIR}/AST/DelphiSyntaxTree.cpp
  ${SOURCE_DIR}/AST/IDelphiSyntaxTree.cpp
)

set(SOURCES_DELPHI_ERRORS_HEADERS
  ${SOURCE_DIR}/Errors/DelphiErrorCodes.hpp
  ${SOURCE_DIR}/Errors/DelphiErrorFacts.hpp
)

set(SOURCES_DELPHI_ERRORS
  ${SOURCE_DIR}/Errors/DelphiErrorCodes.cpp
  ${SOURCE_DIR}/Errors/DelphiErrorFacts.cpp
)

set(SOURCES_DELPHI_PARSER_HEADERS
  ${SOURCE_DIR}/Parser/DelphiDeclarationParser.hpp
  ${SOURCE_DIR}/Parser/DelphiDirectiveLexer.hpp
  ${SOURCE_DIR}/Parser/DelphiExpressionParser.hpp
  ${SOURCE_DIR}/Parser/DelphiLexer.hpp
  ${SOURCE_DIR}/Parser/DelphiLexerBase.hpp
  ${SOURCE_DIR}/Parser/DelphiLexerTypes.hpp
  ${SOURCE_DIR}/Parser/DelphiParser.hpp
  ${SOURCE_DIR}/Parser/DelphiStatementParser.hpp
  ${SOURCE_DIR}/Parser/DelphiUnitDeclarationParser.hpp
  ${SOURCE_DIR}/Parser/Precedence.hpp
)

set(SOURCES_DELPHI_PARSER
  ${SOURCE_DIR}/Parser/DelphiDeclarationParser.cpp
  ${SOURCE_DIR}/Parser/DelphiDirectiveLexer.cpp
  ${SOURCE_DIR}/Parser/DelphiExpressionParser.cpp
  ${SOURCE_DIR}/Parser/DelphiLexer.cpp
  ${SOURCE_DIR}/Parser/DelphiLexerBase.cpp
  ${SOURCE_DIR}/Parser/DelphiLexerTypes.cpp
  ${SOURCE_DIR}/Parser/DelphiParser.cpp
  ${SOURCE_DIR}/Parser/DelphiStatementParser.cpp
  ${SOURCE_DIR}/Parser/DelphiUnitDeclarationParser.cpp
  ${SOURCE_DIR}/Parser/Precedence.cpp
)

set(SOURCES_DELPHI_SYNTAX_HEADERS
  ${SOURCE_INC_DIR}/Syntax/DelphiKeywordKinds.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiBinaryExpressionSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiBranchingDirectiveTriviaSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiDefineDirectiveTriviaSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiDirectiveTriviaSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiExpressionSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiLiteralExpressionSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiParenthesizedExpressionSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiStatementSyntax.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiSyntaxNode.hpp
  ${SOURCE_INC_DIR}/Syntax/IDelphiUndefDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCaseElseClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCaseItemListSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCaseItemSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCaseLabelListSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCaseLabelSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiCompilationUnitSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiElseClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiEndOfModuleDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiEqualsValueClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiExceptClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionBlockSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionHandlerBlockSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionStatementBlockSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiFinallyClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiLibraryModuleSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiPackageContainsClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiPackageHeadSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiPackageModuleSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiPackageRequiresClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiParameterListSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiParameterSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiProgramHeadSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiProgramModuleSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiSyntaxFacts.hpp
  ${SOURCE_DIR}/Syntax/DelphiSyntaxNode.hpp
  ${SOURCE_DIR}/Syntax/DelphiTryElseClauseSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiUnitFilenameReferenceDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiUnitReferenceDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/DelphiUsesClauseSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX
  ${SOURCE_DIR}/Syntax/DelphiCaseElseClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiCaseItemListSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiCaseItemSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiCaseLabelListSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiCaseLabelSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiCompilationUnitSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiElseClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiEndOfModuleDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiEqualsValueClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiExceptClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionBlockSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionHandlerBlockSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiExceptionStatementBlockSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiFinallyClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiKeywordKinds.cpp
  ${SOURCE_DIR}/Syntax/DelphiLibraryModuleSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiPackageContainsClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiPackageHeadSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiPackageModuleSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiPackageRequiresClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiParameterListSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiParameterSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiProgramHeadSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiProgramModuleSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiSyntaxFacts.cpp
  ${SOURCE_DIR}/Syntax/DelphiSyntaxNode.cpp
  ${SOURCE_DIR}/Syntax/DelphiTryElseClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiUnitFilenameReferenceDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiUnitReferenceDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/DelphiUsesClauseSyntax.cpp
  ${SOURCE_DIR}/Syntax/IDelphiSyntaxNode.cpp
)

set(SOURCES_DELPHI_SYNTAX_DECLARATIONS_HEADERS
  ${SOURCE_DIR}/Syntax/Declarations/DelphiAncestorSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiAttributeSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassForwardDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassReferenceDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassTypeDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassTypeMemberSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiDirectiveSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiGenericDefinitionsSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiGenericTypeIdentifierSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeDeclarationsSectionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeIdentifierSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX_DECLARATIONS
  ${SOURCE_DIR}/Syntax/Declarations/DelphiAncestorSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiAttributeSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassForwardDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassReferenceDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassTypeDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiClassTypeMemberSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiDirectiveSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiGenericDefinitionsSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiGenericTypeIdentifierSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeDeclarationsSectionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/Declarations/DelphiTypeIdentifierSyntax.cpp
)

set(SOURCES_DELPHI_SYNTAX_EXPRESSIONS_HEADERS
  ${SOURCE_DIR}/Syntax/Expressions/DelphiAssignmentExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBadExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBadTypeSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBinaryExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBracketArgumentListSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiCallExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiElementAccessExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiExtendedIdentifierNameSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiIdentifierNameSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiLiteralExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiMemberAccessExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiNameSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiParenthesizedExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPointerTypeSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPredefinedTypeSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPrefixUnaryExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiQualifiedNameSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiRangeExpressionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetConstructorSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetElementsConstructorSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetRangeConstructorSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSimpleNameSyntax.hpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiTypeSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX_EXPRESSIONS
  ${SOURCE_DIR}/Syntax/Expressions/DelphiAssignmentExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBadExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBadTypeSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBinaryExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiBracketArgumentListSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiCallExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiElementAccessExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiExtendedIdentifierNameSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiIdentifierNameSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiLiteralExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiMemberAccessExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiNameSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiParenthesizedExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPointerTypeSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPredefinedTypeSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiPrefixUnaryExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiQualifiedNameSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiRangeExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetConstructorSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetElementsConstructorSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSetRangeConstructorSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiSimpleNameSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/DelphiTypeSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/IDelphiBinaryExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/IDelphiExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/IDelphiLiteralExpressionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Expressions/IDelphiParenthesizedExpressionSyntax.cpp
)

set(SOURCES_DELPHI_SYNTAX_STATEMENTS_HEADERS
  ${SOURCE_DIR}/Syntax/Statements/DelphiAssemblerStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiBlockStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiBreakStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiCaseStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiContinueStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiEmptyBlockStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiEmptyStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExceptionHandlerStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExitStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExpressionStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForInStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForToStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiGotoStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiIfStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiLabeledStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiRaiseStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiRepeatStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiStatementListSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryExceptStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryFinallyStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiWhileStatementSyntax.hpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiWithStatementSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX_STATEMENTS
  ${SOURCE_DIR}/Syntax/Statements/DelphiAssemblerStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiBlockStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiBreakStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiCaseStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiContinueStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiEmptyBlockStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiEmptyStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExceptionHandlerStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExitStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiExpressionStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForInStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiForToStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiGotoStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiIfStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiLabeledStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiRaiseStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiRepeatStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiStatementListSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryExceptStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryFinallyStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiTryStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiWhileStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/DelphiWithStatementSyntax.cpp
  ${SOURCE_DIR}/Syntax/Statements/IDelphiStatementSyntax.cpp
)

set(SOURCES_DELPHI_SYNTAX_TRIVIA_HEADERS
  ${SOURCE_DIR}/Syntax/Trivia/DelphiBadDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiBranchingDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiConditionalDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiDefineDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiElseDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiElseIfDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiEndIfDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiEndRegionDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfDefDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfEndDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfNDefDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiMessageDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiRegionDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiSwitchDirectiveTriviaSyntax.hpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiUndefDirectiveTriviaSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX_TRIVIA
  ${SOURCE_DIR}/Syntax/Trivia/DelphiBadDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiBranchingDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiConditionalDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiDefineDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiElseDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiElseIfDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiEndIfDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiEndRegionDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfDefDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfEndDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiIfNDefDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiMessageDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiRegionDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiSwitchDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/DelphiUndefDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/IDelphiBranchingDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/IDelphiDefineDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/IDelphiDirectiveTriviaSyntax.cpp
  ${SOURCE_DIR}/Syntax/Trivia/IDelphiUndefDirectiveTriviaSyntax.cpp
)

set(SOURCES_DELPHI_SYNTAX_UNIT_HEADERS
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitBlockSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitDeclarationSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitFinalizationSectionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitHeadSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitImplementationSectionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitInitializationSectionSyntax.hpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitInterfaceSectionSyntax.hpp
)

set(SOURCES_DELPHI_SYNTAX_UNIT
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitBlockSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitDeclarationSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitFinalizationSectionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitHeadSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitImplementationSectionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitInitializationSectionSyntax.cpp
  ${SOURCE_DIR}/Syntax/Unit/DelphiUnitInterfaceSectionSyntax.cpp
)

set(SOURCES_LIB_DELPHI
  ${SOURCES_DELPHI_HEADERS}
  ${SOURCES_DELPHI}
  ${SOURCES_DELPHI_AST_HEADERS}
  ${SOURCES_DELPHI_AST}
  ${SOURCES_DELPHI_ERRORS_HEADERS}
  ${SOURCES_DELPHI_ERRORS}
  ${SOURCES_DELPHI_PARSER_HEADERS}
  ${SOURCES_DELPHI_PARSER}
  ${SOURCES_DELPHI_SYNTAX_HEADERS}
  ${SOURCES_DELPHI_SYNTAX}
  ${SOURCES_DELPHI_SYNTAX_DECLARATIONS_HEADERS}
  ${SOURCES_DELPHI_SYNTAX_DECLARATIONS}
  ${SOURCES_DELPHI_SYNTAX_EXPRESSIONS_HEADERS}
  ${SOURCES_DELPHI_SYNTAX_EXPRESSIONS}
  ${SOURCES_DELPHI_SYNTAX_STATEMENTS_HEADERS}
  ${SOURCES_DELPHI_SYNTAX_STATEMENTS}
  ${SOURCES_DELPHI_SYNTAX_TRIVIA_HEADERS}
  ${SOURCES_DELPHI_SYNTAX_TRIVIA}
  ${SOURCES_DELPHI_SYNTAX_UNIT_HEADERS}
  ${SOURCES_DELPHI_SYNTAX_UNIT}
)
