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
clone (var a: dasvector`LineInfo; b: array<LineInfoInitData>)
clone (var a: dasvector`CaptureEntry; b: array<CaptureEntryInitData>)
clone (var args: AnnotationList; var nargs: array<smart_ptr<AnnotationDeclaration>>)
clone (var a: dasvector`EnumEntry; var b: array<EnumEntryInitData>)
clone (var a: AnnotationArgumentList; b: array<AnnotationArgumentInitData>)
10.6.2.1. clone
- quote::clone(a: dasvector`LineInfo; b: array<LineInfoInitData>)
Clones an array of LineInfoInitData into a dasvector of LineInfo.
- Arguments
a : vector<LineInfo>
b : array< LineInfoInitData>
- 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
b : FileInfoInitData
- quote::clone_line_info(b: LineInfoInitData) : LineInfo()
Creates a LineInfo from a LineInfoInitData struct.
- Arguments
b : LineInfoInitData