import { GeneralProperties } from "./Properties/GeneralProperties" ; import { ProjectProperties } from "./Properties/ProjectProperties" ; import { ArrayNewSizedSyntax } from "./Properties/Syntax/ArrayNewSizedSyntax" ; import { ArraySyntax } from "./Properties/Syntax/ArraySyntax" ; import { BooleanSyntax } from "./Properties/Syntax/BooleanSyntax" ; import { ClassGenericSyntax } from "./Properties/Syntax/ClassGenericSyntax" ; import { ClassMemberFunctionSyntax } from "./Properties/Syntax/ClassMemberFunctionSyntax" ; import { ClassMemberVariableSyntax } from "./Properties/Syntax/ClassMemberVariableSyntax" ; import { ClassStaticFunctionSyntax } from "./Properties/Syntax/ClassStaticFunctionSyntax" ; import { ClassStaticVariableSyntax } from "./Properties/Syntax/ClassStaticVariableSyntax" ; import { ClassSyntax } from "./Properties/Syntax/ClassSyntax" ; import { CommentSyntax } from "./Properties/Syntax/CommentSyntax" ; import { ConditionalSyntax } from "./Properties/Syntax/ConditionalSyntax" ; import { DictionarySyntax } from "./Properties/Syntax/DictionarySyntax" ; import { EnumSyntax } from "./Properties/Syntax/EnumSyntax" ; import { ExceptionSyntax } from "./Properties/Syntax/ExceptionSyntax" ; import { ExportSyntax } from "./Properties/Syntax/ExportSyntax" ; import { FileSyntax } from "./Properties/Syntax/FileSyntax" ; import { FunctionSyntax } from "./Properties/Syntax/FunctionSyntax" ; import { ImportSyntax } from "./Properties/Syntax/ImportSyntax" ; import { InterfaceSyntax } from "./Properties/Syntax/InterfaceSyntax" ; import { LambdaSyntax } from "./Properties/Syntax/LambdaSyntax" ; import { LambdaTypeInlineSyntax } from "./Properties/Syntax/LambdaTypeInlineSyntax" ; import { ListNewItemsSyntax } from "./Properties/Syntax/ListNewItemsSyntax" ; import { ListNewSizedSyntax } from "./Properties/Syntax/ListNewSizedSyntax" ; import { ListSliceSyntax } from "./Properties/Syntax/ListSliceSyntax" ; import { ListSortMembersSyntax } from "./Properties/Syntax/ListSortMembersSyntax" ; import { ListSyntax } from "./Properties/Syntax/ListSyntax" ; import { LoopSyntax } from "./Properties/Syntax/LoopSyntax" ; import { MainSyntax } from "./Properties/Syntax/MainSyntax" ; import { MathSyntax } from "./Properties/Syntax/MathSyntax" ; import { NewSyntax } from "./Properties/Syntax/NewSyntax" ; import { OperatorSyntax } from "./Properties/Syntax/OperatorSyntax" ; import { ParameterSyntax } from "./Properties/Syntax/ParameterSyntax" ; import { PrintingSyntax } from "./Properties/Syntax/PrintingSyntax" ; import { SetSyntax } from "./Properties/Syntax/SetSyntax" ; import { StandaloneFunctionSyntax } from "./Properties/Syntax/StandaloneFunctionSyntax" ; import { StringFormatSyntax } from "./Properties/Syntax/StringFormatSyntax" ; import { StringSubstringSyntax } from "./Properties/Syntax/StringSubstringSyntax" ; import { StringSyntax } from "./Properties/Syntax/StringSyntax" ; import { StringToNumberSyntax } from "./Properties/Syntax/StringToNumberSyntax" ; import { StyleSyntax } from "./Properties/Syntax/StyleSyntax" ; import { UnsupportedSyntax } from "./Properties/Syntax/UnsupportedSyntax" ; import { VariableSyntax } from "./Properties/Syntax/VariableSyntax" ; import { SyntaxProperties } from "./Properties/SyntaxProperties" ; /**
 * A summary of information for a single language.
 */ export abstract class Language { /**
     * Metadata on the language's general properties.
     */ public general : GeneralProperties ; /**
     * Metadata on a language's project schemas.
     */ public projects : ProjectProperties ; /**
     * Metadata about the language's syntax.
     */ public syntax : SyntaxProperties ; /**
     * Initializes a new instance of the Language class.
     */ public constructor ( ) { this . general = new GeneralProperties ( ) ; this . generateGeneralProperties ( this . general ) ; this . projects = new ProjectProperties ( ) ; this . generateProjectProperties ( this . projects ) ; this . syntax = new SyntaxProperties ( ) ; this . generateArraySyntax ( this . syntax . arrays ) ; this . generateArrayNewSizedSyntax ( this . syntax . arrays . newSized ) ; this . generateBooleanSyntax ( this . syntax . booleans ) ; this . generateClassSyntax ( this . syntax . classes ) ; this . generateClassGenericSyntax ( this . syntax . classes . generics ) ; this . generateClassMemberFunctionSyntax ( this . syntax . classes . members . functions ) ; this . generateClassMemberVariableSyntax ( this . syntax . classes . members . variables ) ; this . generateClassStaticFunctionSyntax ( this . syntax . classes . statics . functions ) ; this . generateClassStaticVariableSyntax ( this . syntax . classes . statics . variables ) ; this . generateCommentSyntax ( this . syntax . comments ) ; this . generateConditionalSyntax ( this . syntax . conditionals ) ; this . generateDictionarySyntax ( this . syntax . dictionaries ) ; this . generateEnumSyntax ( this . syntax . enums ) ; this . generateExceptionSyntax ( this . syntax . exceptions ) ; this . generateExportSyntax ( this . syntax . exports ) ; this . generateFileSyntax ( this . syntax . files ) ; this . generateFunctionSyntax ( this . syntax . functions ) ; this . generateImportSyntax ( this . syntax . imports ) ; this . generateInterfaceSyntax ( this . syntax . interfaces ) ; this . generateLambdaSyntax ( this . syntax . lambdas ) ; this . generateLambdaTypeInlineSyntax ( this . syntax . lambdas . typeInline ) ; this . generateListSyntax ( this . syntax . lists ) ; this . generateListNewItemsSyntax ( this . syntax . lists . newItems ) ; this . generateListNewSizedSyntax ( this . syntax . lists . newSized ) ; this . generateListSliceSyntax ( this . syntax . lists . slices ) ; this . generateListSortMemberNumbersSyntax ( this . syntax . lists . sortMemberNumbers ) ; this . generateListSortMemberStringsSyntax ( this . syntax . lists . sortMemberStrings ) ; this . generateLoopSyntax ( this . syntax . loops ) ; this . generateMainSyntax ( this . syntax . main ) ; this . generateMathSyntax ( this . syntax . math ) ; this . generateNewSyntax ( this . syntax . newProp ) ; this . generateOperatorSyntax ( this . syntax . operators ) ; this . generateParameterSyntax ( this . syntax . parameters ) ; this . generatePrintingSyntax ( this . syntax . printing ) ; this . generateSetSyntax ( this . syntax . sets ) ; this . generateStandaloneFunctionSyntax ( this . syntax . standaloneFunctions ) ; this . generateStringFormatSyntax ( this . syntax . strings . formatting ) ; this . generateStringSyntax ( this . syntax . strings ) ; this . generateStringSubstringSyntax ( this . syntax . strings . substrings ) ; this . generateStringToDoubleSyntax ( this . syntax . strings . toDouble ) ; this . generateStringToIntSyntax ( this . syntax . strings . toInt ) ; this . generateStyleSyntax ( this . syntax . style ) ; this . generateUnsupportedSyntax ( this . syntax . unsupported ) ; this . generateVariableSyntax ( this . syntax . variables ) ; this . syntax . operators . generateAliases ( ) ; } /**
     * Fills out metadata on general properties.
     */ protected abstract generateGeneralProperties ( general ) ; param projects protected abstract generateProjectProperties ( projects ) ; param arrays protected abstract generateArraySyntax ( arrays ) ; param arrays protected abstract generateArrayNewSizedSyntax ( newSized ) ; param booleans protected abstract generateBooleanSyntax ( booleans ) ; param exports protected abstract generateExportSyntax ( exports ) ; param generics protected abstract generateClassGenericSyntax ( generics ) ; param functions protected abstract generateClassMemberFunctionSyntax ( functions ) ; param members protected abstract generateClassMemberVariableSyntax ( members ) ; param classes protected abstract generateClassSyntax ( classes ) ; param functions protected abstract generateClassStaticFunctionSyntax ( functions ) ; param members protected abstract generateClassStaticVariableSyntax ( variables ) ; param comments protected abstract generateCommentSyntax ( comments ) ; param conditionals protected abstract generateConditionalSyntax ( conditionals ) ; param dictionaries protected abstract generateDictionarySyntax ( dictionaries ) ; param enums protected abstract generateEnumSyntax ( enums ) ; param exceptions protected abstract generateExceptionSyntax ( exceptions ) ; param exceptions protected abstract generateFileSyntax ( files ) ; param functions protected abstract generateFunctionSyntax ( functions ) ; param imports protected abstract generateImportSyntax ( lambdas ) ; param interfaces protected abstract generateInterfaceSyntax ( lambdas ) ; param lambdas protected abstract generateLambdaSyntax ( lambdas ) ; param typeInline protected abstract generateLambdaTypeInlineSyntax ( typeInline ) ; /**
     * Fills out metadata on lists.
     */ protected abstract generateListSyntax ( lists ) ; /**
     * Fills out metadata on list with items creation.
     */ protected abstract generateListNewItemsSyntax ( newItems ) ; /**
     * Fills out metadata on fixed size list creation.
     */ protected abstract generateListNewSizedSyntax ( newSized ) ; /**
     * Fills out metadata on list slicing.
     */ protected abstract generateListSliceSyntax ( slices ) ; /**
     * Fills out metadata on list sorting by keyed member numbers.
     */ protected abstract generateListSortMemberNumbersSyntax ( members ) ; /**
     * Fills out metadata on list sorting by keyed member stringss.
     */ protected abstract generateListSortMemberStringsSyntax ( members ) ; param loops protected abstract generateLoopSyntax ( loops ) ; param main protected abstract generateMainSyntax ( main ) ; param math protected abstract generateMathSyntax ( math ) ; param newProp protected abstract generateNewSyntax ( newProp ) ; param numbers protected abstract generateNewSyntax ( newProp ) ; param operators protected abstract generateOperatorSyntax ( operators ) ; param parameters protected abstract generateParameterSyntax ( parameters ) ; param parameters protected abstract generatePrintingSyntax ( printing ) ; param parameters protected abstract generateSetSyntax ( sets ) ; param parameters protected abstract generateStandaloneFunctionSyntax ( standaloneFunctions ) ; param strings protected abstract generateStringFormatSyntax ( formatting ) ; param strings protected abstract generateStringSyntax ( strings ) ; param strings protected abstract generateStringSubstringSyntax ( substrings ) ; param toDouble protected abstract generateStringToDoubleSyntax ( toDouble ) ; param toDouble protected abstract generateStringToIntSyntax ( toInt ) ; param style protected abstract generateStyleSyntax ( style ) ; param style protected abstract generateUnsupportedSyntax ( style ) ; param variables protected abstract generateVariableSyntax ( variables ) ; }