.. _stdlib_quote: =============================== AST quasiquoting infrastructure =============================== .. das:module:: quote 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. .. code-block:: das require daslib/quote ++++++++++ Structures ++++++++++ .. _struct-quote-LineInfoInitData: .. das:attribute:: LineInfoInitData Initialization data for source line info reconstruction. :Fields: * **fileInfo** : :ref:`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. .. _struct-quote-FileInfoInitData: .. das:attribute:: FileInfoInitData Initialization data for reconstructing file info. :Fields: * **name** : string - File name string. * **tabSize** : int - Tab size for the file. ++++++++++++++++ Clone operations ++++++++++++++++ * :ref:`clone (var a: dasvector`LineInfo; b: array\) ` * :ref:`clone (var a: dasvector`CaptureEntry; b: array\) ` * :ref:`clone (var args: AnnotationList; var nargs: array\\>) ` * :ref:`clone (var a: dasvector`EnumEntry; var b: array\) ` * :ref:`clone (var a: AnnotationArgumentList; b: array\) ` * :ref:`clone_file_info (b: FileInfoInitData) : FileInfo? ` * :ref:`clone_line_info (var b: LineInfoInitData) : LineInfo ` clone ^^^^^ .. _function-quote_clone_dasvector_rq_LineInfo_array_ls_LineInfoInitData_gr_: .. das:function:: clone(a: dasvector`LineInfo; b: array) Clones an array of LineInfoInitData into a dasvector of LineInfo. :Arguments: * **a** : vector * **b** : array< :ref:`LineInfoInitData `> .. _function-quote_clone_dasvector_rq_CaptureEntry_array_ls_CaptureEntryInitData_gr_: .. das:function:: clone(a: dasvector`CaptureEntry; b: array) .. _function-quote_clone_AnnotationList_array_ls_smart_ptr_ls_AnnotationDeclaration_gr__gr_: .. das:function:: clone(args: AnnotationList; nargs: array>) .. _function-quote_clone_dasvector_rq_EnumEntry_array_ls_EnumEntryInitData_gr_: .. das:function:: clone(a: dasvector`EnumEntry; b: array) .. _function-quote_clone_AnnotationArgumentList_array_ls_AnnotationArgumentInitData_gr_: .. das:function:: clone(a: AnnotationArgumentList; b: array) ---- .. _function-quote_clone_file_info_FileInfoInitData: .. das:function:: clone_file_info(b: FileInfoInitData) : FileInfo? Creates a FileInfo from a FileInfoInitData struct. :Arguments: * **b** : :ref:`FileInfoInitData ` .. _function-quote_clone_line_info_LineInfoInitData: .. das:function:: clone_line_info(b: LineInfoInitData) : LineInfo Creates a LineInfo from a LineInfoInitData struct. :Arguments: * **b** : :ref:`LineInfoInitData ` ++++++++++ Conversion ++++++++++ * :ref:`cvt_to_mks (var args: auto) : smart_ptr\ ` .. _function-quote_cvt_to_mks_auto_0x83: .. das:function:: cvt_to_mks(args: auto) : smart_ptr Converts an array of arguments into a MakeStruct smart pointer. :Arguments: * **args** : auto