• Kipper

    v0.12.1
  • Downloads

  • Docs

  • Playground

  • Changelog

  • Kipper

    v0.12.1
    • Downloads

    • Docs

    • Playground

    • Changelog

      • latest /
      • Kipper API /
      • Module /
      • @kipper/core /
      • compiler
    Kipper Docs
    • next
    • latest
    • 0.11.0
    • 0.10.4
    • 0.9.2
    • Overview

    • Quickstart

    • Goals for Kipper

    • Supported platforms

    • Usage Examples

      • Overview

      • Type Consistency

      • Runtime Type Casting

      • Strict Compiler Inspection

      • Integrated Runtime Library

    • Variables

      • Overview

      • String Type

      • Number Type

      • Boolean Type

      • Void Type

      • Null Type

      • Undefined Type

      • Array Type

      • Overview

      • Tangled Expression

      • Arithmetic Expression

      • Assignment Expression

      • Conditional Expressions

      • Logical Expressions

      • Bitwise Expression

      • Relational Expressions

      • Convert Or Cast Expression

      • F-String Expression

      • Member Access Expression

      • Function Call Expression

      • Lambda Expression

      • Matches Expression

      • Overview

      • Expression Statement

      • If Statement

      • While Loop

      • Do-While Loop

      • For Loop

      • Compound Statement

      • Jump Statement

    • Functions

    • Interfaces

    • Classes

    • Comments

    • Built-in Functions

      • Overview

      • Compiler Setup

        • Overview

          • index

          • compiler

          • errors

          • logger

          • utils

          • config

          • index

          • index

        • Overview

        • new

        • run

        • compile

        • help

        • version

      • latest /
      • Kipper API /
      • Module /
      • @kipper/core /
      • compiler
    • latest /
    • Kipper API /
    • Module /
    • @kipper/core /
    • compiler

    Edit page

    Class: KipperSemanticChecker

    compiler.KipperSemanticChecker

    Kipper Semantic Checker, which asserts that semantic logic and cohesion is valid and throws errors in case that an invalid use of tokens is detected.

    Since

    0.7.0

    Hierarchy

    • KipperSemanticsAsserter

      ↳ KipperSemanticChecker

    Table of contents

    Constructors

    • constructor

    Properties

    • col
    • ctx
    • filePath
    • line
    • programCtx
    • stream

    Methods

    • assertError
    • builtInNotDefined
    • error
    • getExistingReference
    • getJumpStatementParent
    • getReference
    • getReturnStatementParent
    • globalCanBeGenerated
    • globalCanBeRegistered
    • identifierNotUsed
    • notImplementedError
    • refTargetDefined
    • setTracebackData
    • validAssignment
    • validFunctionBody
    • validVariableDeclaration

    Constructors

    constructor

    • new KipperSemanticChecker(programCtx)

    Parameters

    Name Type
    programCtx KipperProgramContext

    Overrides

    KipperSemanticsAsserter.constructor

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:54

    Properties

    col

    • Protected col: undefined | number

    Inherited from

    KipperSemanticsAsserter.col

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:16


    ctx

    • Protected ctx: undefined | CompilableASTNode<SemanticData, TypeData>

    Inherited from

    KipperSemanticsAsserter.ctx

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:17


    filePath

    • Protected filePath: undefined | string

    Inherited from

    KipperSemanticsAsserter.filePath

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:18


    line

    • Protected line: undefined | number

    Inherited from

    KipperSemanticsAsserter.line

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:15


    programCtx

    • Readonly programCtx: KipperProgramContext

    Inherited from

    KipperSemanticsAsserter.programCtx

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-asserter.ts:18


    stream

    • Protected stream: undefined | KipperFileStream

    Inherited from

    KipperSemanticsAsserter.stream

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:19

    Methods

    assertError

    ▸ Protected assertError(error, overwriteCtx?): KipperError

    Updates the given error and adds the proper traceback data, and returns it.

    Parameters

    Name Type Description
    error KipperError The error to update.
    overwriteCtx? CompilableASTNode<SemanticData, TypeData> The context to overwrite the current context with. This is used when a parent checks children semantics in order to provide the correct traceback data and errors occur in the children.

    Returns

    KipperError

    The Kipper error.

    Inherited from

    KipperSemanticsAsserter.assertError

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-asserter.ts:33


    builtInNotDefined

    ▸ builtInNotDefined(identifier): void

    Asserts that the passed identifier does not exist as a built-in global.

    Throws

    If the identifier is already used by a built-in global.

    Since

    0.7.0

    Parameters

    Name Type Description
    identifier string The identifier to check.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:145


    error

    ▸ Protected error(error): KipperError

    Updates the error and adds the proper traceback data, and returns it.

    This function also automatically logs the error.

    Parameters

    Name Type Description
    error KipperError The error to update.

    Returns

    KipperError

    The Kipper error.

    Inherited from

    KipperSemanticsAsserter.error

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:52


    getExistingReference

    ▸ getExistingReference(identifier, scope): ScopeDeclaration

    Tries to fetch the function, and if it fails it will throw an UnknownReferenceError.

    Since

    0.7.0

    Parameters

    Name Type Description
    identifier string The identifier to fetch.
    scope Scope<any, any, any> The scope to search in.

    Returns

    ScopeDeclaration

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:74


    getJumpStatementParent

    ▸ getJumpStatementParent(jmpStatement): IterationStatement<IterationStatementSemantics, IterationStatementTypeSemantics>

    Searches for the parent of the specified jump statement (either 'break' or 'continue' and asserts that it is an iteration statement.)

    Throws

    If the parent is not an iteration statement.

    Since

    0.10.0

    Parameters

    Name Type Description
    jmpStatement JumpStatement The jump statement.

    Returns

    IterationStatement<IterationStatementSemantics, IterationStatementTypeSemantics>

    The parent iteration statement if found.

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:260


    getReference

    ▸ Protected getReference(identifier, scope): undefined | ScopeDeclaration

    Tries to find a reference for the given identifier and scope.

    Since

    0.8.0

    Parameters

    Name Type Description
    identifier string The identifier to search for.
    scope Scope<any, any, any> The scope to search in.

    Returns

    undefined | ScopeDeclaration

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:64


    getReturnStatementParent

    ▸ getReturnStatementParent(retStatement): KipperCallable

    Searches for the parent of the specified return statement and asserts that it is a function.

    Throws

    If the parent is not a function.

    Since

    0.10.0

    Parameters

    Name Type Description
    retStatement ReturnStatement The return statement.

    Returns

    KipperCallable

    The parent function if found.

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:231


    globalCanBeGenerated

    ▸ globalCanBeGenerated(identifier): void

    Asserts that the passed identifier is a valid built-in global that has a generator function in the this.programCtx.target.builtInGenerator BuiltInGenerator of the target.

    Throws

    If there is no generator function for the passed identifier.

    Since

    0.10.0

    Parameters

    Name Type Description
    identifier string The identifier to check.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:177


    globalCanBeRegistered

    ▸ globalCanBeRegistered(identifier): void

    Asserts that a new global with the passed identifier may be created.

    Throws

    If the identifier is already used by a built-in global.

    Since

    0.7.0

    Parameters

    Name Type Description
    identifier string The identifier to check.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:157


    identifierNotUsed

    ▸ identifierNotUsed(declaration, identifier, scopeCtx): void

    Recursively ensures that the identifier does not overwrite any declarations in this scope or parent scopes.

    Throws

    If the identifier is already used by a variable.

    Throws

    If the identifier is already used by a function.

    Throws

    If the identifier is already used by a parameter.

    Throws

    If the identifier is already in use by a built-in function.

    Since

    0.10.0

    Parameters

    Name Type Description
    declaration Declaration<DeclarationSemantics, DeclarationTypeSemantics> The declaration to check.
    identifier string The identifier to search for in this scope and its parent scopes.
    scopeCtx Scope<any, any, any> The context instance of the scope.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:105


    notImplementedError

    ▸ notImplementedError(error): KipperNotImplementedError

    Modifies the metadata for a KipperNotImplementedError

    Since

    0.7.0

    Parameters

    Name Type Description
    error KipperNotImplementedError The KipperNotImplementedError instance.

    Returns

    KipperNotImplementedError

    Inherited from

    KipperSemanticsAsserter.notImplementedError

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-asserter.ts:54


    refTargetDefined

    ▸ refTargetDefined(ref): void

    Asserts that the passed ref is defined and has a value assigned that can be used.

    Throws

    If the reference is undefined.

    Since

    0.10.0

    Parameters

    Name Type Description
    ref ScopeDeclaration The reference that should be checked.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:88


    setTracebackData

    ▸ setTracebackData(data): void

    Sets the traceback related metadata that will be used to create a traceback for an KipperError instance.

    In case that data.ctx is set and other fields are missing, these fields will be filled up using the data in the data.ctx AST node ctx instance.

    Since

    0.8.0

    Parameters

    Name Type Description
    data Object The traceback data that will be used to initialise an KipperError instance.
    data.col? number -
    data.ctx? CompilableASTNode<SemanticData, TypeData> -
    data.filePath? string -
    data.line? number -
    data.stream? KipperFileStream -

    Returns

    void

    Inherited from

    KipperSemanticsAsserter.setTracebackData

    Defined in

    kipper/core/src/compiler/semantics/analyser/err-handler/semantics-error-handler.ts:29


    validAssignment

    ▸ validAssignment(leftExp): void

    Asserts that the passed expression is valid.

    Throws

    If the left-hand side of the assignment is invalid.

    Since

    0.7.0

    Parameters

    Name Type Description
    leftExp Expression<ExpressionSemantics, ExpressionTypeSemantics, CompilableASTNode<SemanticData, TypeData>> The left-hand side of the assignment.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:190


    validFunctionBody

    ▸ validFunctionBody(body): void

    Asserts that the passed function body is valid.

    Throws

    If the function body is missing or invalid.

    Since

    0.10.0

    Parameters

    Name Type Description
    body undefined | CompilableNodeChild The function body.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:218


    validVariableDeclaration

    ▸ validVariableDeclaration(decl): void

    Asserts that the variable declaration is valid.

    Throws

    If the variable is a constant and has no value assigned.

    Parameters

    Name Type Description
    decl VariableDeclaration The variable declaration.

    Returns

    void

    Defined in

    kipper/core/src/compiler/semantics/analyser/semantic-checker.ts:205

  • Developed at:

    • Releases
    • GitHub
    • Security
    • Issue Tracker
    • License
  • Copyright © 2021-2026 Luna Klatzer, 2024-2025 Lorenz Holzbauer & Fabian Baitura.
    Kipper is licensed under the GPL-3.0-or-later license.