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
- CaptureEntryInitData
struct CaptureEntryInitData
- LineInfoInitData
struct LineInfoInitData
- EnumEntryInitData
struct EnumEntryInitData
- AnnotationArgumentInitData
struct AnnotationArgumentInitData
- FileInfoInitData
struct FileInfoInitData
10.6.2. Clone operations
clone (var a: AnnotationArgumentList; b: array<AnnotationArgumentInitData>)
clone (var a: dasvector`CaptureEntry; b: array<CaptureEntryInitData>)
clone (var a: dasvector`EnumEntry; var b: array<EnumEntryInitData>)
clone (var a: dasvector`LineInfo; b: array<LineInfoInitData>)
clone (var args: AnnotationList; var nargs: array<AnnotationDeclaration?>)
10.6.2.1. clone
- clone(a: AnnotationArgumentList; b: array<AnnotationArgumentInitData> )
def clone (var a: AnnotationArgumentList; b: array<AnnotationArgumentInitData>)
- Arguments:
b : array< AnnotationArgumentInitData>
- clone(a: dasvector`CaptureEntry; b: array<CaptureEntryInitData> )
- clone(a: dasvector`EnumEntry; b: array<EnumEntryInitData> )
- clone(a: dasvector`LineInfo; b: array<LineInfoInitData> )
- clone(args: AnnotationList; nargs: array<AnnotationDeclaration?> )
- clone_file_info(b: FileInfoInitData ): FileInfo?
def clone_file_info (b: FileInfoInitData) : FileInfo?
- Arguments:
b : FileInfoInitData
- clone_line_info(b: LineInfoInitData ): LineInfo
def clone_line_info (var b: LineInfoInitData) : LineInfo
- Arguments:
b : LineInfoInitData
- resolve_file_info(b: FileInfoInitData ): FileInfo?
def resolve_file_info (b: FileInfoInitData) : FileInfo?
- Arguments:
b : FileInfoInitData
10.6.3. Conversion
- cvt_to_mks(args: auto ): MakeStruct?
def cvt_to_mks (var args: auto) : MakeStruct?
- Arguments:
args : auto
- make_alias_type_decl(name: string ): TypeDecl?
def make_alias_type_decl (name: string) : TypeDecl?
- Arguments:
name : string