10.6. AST quasiquoting infrastructure

The QUOTE module provides quasiquotation support for AST construction. It allows building AST nodes using daslang syntax with $-prefixed splice points for inserting computed values, making macro writing more readable and less error-prone than manual AST construction.

All functions and symbols are in “quote” module, use require to get access to it.

require daslib/quote

10.6.1. Structures

quote::LineInfoInitData

Initialization data for source line info reconstruction.

Fields
  • fileInfo : FileInfo? - Pointer to the source file info.

  • column : uint - Column number (1-based).

  • line : uint - Line number (1-based).

  • last_column : uint - Last column number of the range.

  • last_line : uint - Last line number of the range.

quote::FileInfoInitData

Initialization data for reconstructing file info.

Fields
  • name : string - File name string.

  • tabSize : int - Tab size for the file.

10.6.2. Clone operations

10.6.2.1. clone

quote::clone(a: dasvector`LineInfo; b: array<LineInfoInitData>)

Clones an array of LineInfoInitData into a dasvector of LineInfo.

Arguments
quote::clone(a: dasvector`CaptureEntry; b: array<CaptureEntryInitData>)
quote::clone(args: AnnotationList; nargs: array<smart_ptr<AnnotationDeclaration>>)
quote::clone(a: dasvector`EnumEntry; b: array<EnumEntryInitData>)
quote::clone(a: AnnotationArgumentList; b: array<AnnotationArgumentInitData>)

quote::clone_file_info(b: FileInfoInitData) : FileInfo?()

Creates a FileInfo from a FileInfoInitData struct.

Arguments
quote::clone_line_info(b: LineInfoInitData) : LineInfo()

Creates a LineInfo from a LineInfoInitData struct.

Arguments

10.6.3. Conversion

quote::cvt_to_mks(args: auto) : smart_ptr<MakeStruct>()

Converts an array of arguments into a MakeStruct smart pointer.

Arguments
  • args : auto