qasm-ts - v2.0.0
    Preparing search index...

    Class default

    OpenQASM 3.0 Recursive Descent Parser

    Implements a comprehensive parser for the OpenQASM 3.0 language specification. The parser uses recursive descent parsing with appropriate error recovery and maintains symbol tables for gates, subroutines, and variables.

    Parser state includes:

    • Token stream and current position
    • Symbol tables for gates, subroutines, arrays, aliases
    • Machine-specific defaults (float width, int size)
    const parser = new Parser(tokens);

    // Parse the entire program
    const ast = parser.parse();

    // AST contains array of top-level statements and declarations
    console.log(ast); // [VersionNode, IncludeNode, DeclarationNode, ...]
    Index

    Constructors

    • Creates a parser.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      • OptionaldefaultFloatWidth: number

        Optional default float width override.

      • OptionalmachineIntSize: number

        Optional default int size override.

      Returns default

    Methods

    • Parses an alias statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [AliasStatement, number]

      A tuple containing the AliasStatement and the number of tokens consumed.

    • Parses a binary expression.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [Expression, number]

      A tuple containing the parsed Expression and the number of tokens consumed.

    • Parses a classical type declaration.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      • OptionalisConst: boolean

        Whether the declaration is for a constant, defaults to False.

      Returns [ClassicalDeclaration, number]

      The parsed ClassicalDeclaration AstNode and the number of consumed tokens.

    • Parses a defcalgrammar declaration.

      calibrationGrammarStatement: DEFCALGRAMMAR StringLiteral SEMICOLON

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [CalibrationGrammarDeclaration, number]

      The parsed CalibrationGrammarDeclaration AstNode node and the number of consumed tokens.

    • Parses a durationof function call.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [DurationOf, number]

      A DurationOf node and the number of tokens consumed.

    • Parses an extern signature.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [ExternSignature, number]

      A tuple containing the ExternSignature and the number of tokens consumed.

    • Parses a branching condition (if) statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [BranchingStatement, number]

      A BranchingStatement node representing the if statement and the number of tokens consumed.

    • Parses an include statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [Include, number]

      An Include node representing the include statement and the number of consumed tokens.

    • Parses an IO declaration statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [IODeclaration, number]

      A tuple containing the parsed IODeclaration and the number of tokens consumed.

    • Checks if the next tokens match those expected.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      • expectedTokens: Token[]

        Expected tokens.

      Returns boolean

      Whether these is a match.

    • Parses an array access.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [ArrayAccess, number]

      An ArrayAccess node and the number of tokens consumed.

    • Parses an array reference.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [ArrayReference, number]

      A tuple containing the ArrayReference and the number of tokens consumed.

    • Parses a case statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [CaseStatement, number]

      A CaseStatement node and the number of tokens consumed.

    • Parses a hardware qubit.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [HardwareQubit, number]

      A tuple containing the HardwareQubit and the number of tokens consumed.

    • Parses an index set.

      Parameters

      • tokens: [Token, (string | number)?][]

      Returns [IndexSet, number]

      The resulting Identifier, IndexSet, or Range node and the number of consumed tokens.

    • Parses a single statement or declaration by delegating the parsing of the next set of tokens to the appropriate method.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      • allowVariables: boolean = true

        Whether encountered identifiers should be consider variable initializations or references.

      Returns [AstNode[], number]

      A set of AST nodes and the number of consumed tokens.

    • Parses a set of parameters.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [Parameters, number]

      A tuple containing the Parameters and the number of tokens consumed.

    • Parses a type cast expression.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [Expression, number]

      A tuple containing the parsed Cast Expression and the number of tokens consumed.

    • Parses a quantum gate call.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [QuantumGateCall, number]

      A tuple containing the QuantumGateCall and the number of tokens consumed.

    • Parses a quantum reset.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [QuantumReset, number]

      A tuple containing the QuantumReset and the number of tokens consumed.

    • Parses a subroutine return statement.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [ReturnStatement, number]

      A tuple containing the SubroutineDefinition and the number of tokens consumed.

    • Parses a sizeof function call.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [SizeOf, number]

      A SizeOf node and the number of tokens consumed.

    • Parses a subroutine call.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [SubroutineCall, number]

      A tuple containing the SubroutineCall and the number of tokens consumed.

    • Parses a unary expression.

      Parameters

      • tokens: [Token, (string | number)?][]

        Remaining tokens to parse.

      Returns [Expression, number]

      A tuple containing the parsed Expression and the number of tokens consumed.

    • Parses the version header and sets the parser version.

      Parameters

      • tokens: [Token, (string | number)?][]

        Tokens to parse.

      Returns [Version, number]

      A Version node representing the version statement and the number of consumed tokens.

    Properties

    aliases: Map<string, string>

    User defined aliases.

    customArrays: Set<string>

    User defined arrays.

    customGates: Set<string>

    Custom defined gates.

    gates: Set<string>

    The built in gates.

    index: number

    Index of the current token.

    machineFloatWidth: number

    The default machine precision float width.

    machineIntSize: number

    The default machine int size.

    standardGates: Set<string>

    Standard library gates.

    subroutines: Set<string>

    Custom defined subroutines.

    tokens: [Token, (string | number)?][]

    The tokens to parse.