You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Macro tables can be defined by composing from other modules. E-expressions in both text and binary documents can invoke macros from user-defined modules. (We don't actually define macros yet; we just pass-through system macros.)
$ion_encodingmacro_table; can only meaningfully export $ion at this point
Master issue tracking work to do across various repositories.
System macro table and invocation
Simple system macros are available for invocation by E-expressions in both text and binary documents.
void
andvalues
(implicit-rest only)(:values)
(:$ion:values)
make_list
andmake_sexp
(implicit-rest only)make_string
andmake_symbol
(implicit-rest only)annotate
with exactly-one annotation (to avoid groups)Relevant roadmap items:
Basic Directives; symbol tables
The text and binary parsers detect simple 1.1 directives. Most symbol table features are supported.
$ion_literal
$ion_literal
. #97$ion_encoding
$ion_encoding
forms. #101$ion_encoding
symbol_table
with local symbolssymbol_table
forms in$ion_encoding
. #102load
clause, exact-match, with module referenced intosymbol_table
load
s shared module intosymbol_table
#112module
symbol_table
and installationmodule
withload
$ion_encoding
(retain *)
load
s shared module intosymbol_table
#112load
s shared module intosymbol_table
#112Relevant roadmap items:
User macro table and invocation
Macro tables can be defined by composing from other modules. E-expressions in both text and binary documents can invoke macros from user-defined modules. (We don't actually define macros yet; we just pass-through system macros.)
$ion_encoding
macro_table
; can only meaningfully export$ion
at this pointmacro_table
in encoding directive. #114module
macro_table
should be able to pass-through from$ion
(:0)
macro_table
in encoding directive. #114(:M:0)
(:M:values)
Relevant roadmap items:
Simple Macro Definitions and Template Language expressions
Macros with single-value parameters can be defined and invoked.
literal
special form(values)
!
); TL parameter references!
)null.list
is literalnull.struct
is literal; field fanout{n:(values 1 2)}
Relevant roadmap items:
Cardinality and Rest invocations
Macro definitions can declare non-singleton parameters. Invocations can use argument groups and implicit-rest syntax.
!
cardinality declaration in signature?
cardinality: declaration, TL empty-group invocation, Eexp empty-groups, stream-length check*
and+
cardinality: declaration, TL group invocation, Eexp groups, stream-length checkvalues
,make_string
, etc are usableannotate
) with proper cardinalities(':$ion:values')
(':$ion:1')
Relevant roadmap items:
Importing into modules
Modules can reference user macros from preceding inline modules.
module
use
another local moduleuse
d module:(':M:mac' ...)
(':mac' ...)
(':3' ...)
Encoding declarations
Macro parameters can be constrained to primitive and macro-shaped encodings.
uint8
encoding; range checks at invocation site!
and?
macro-shaped arguments in TL and Eexp*
and+
macro-shaped arguments in TL and Eexp (incl arg groups)TODO other primitive encodings
Advanced Template Language expressions
if_void
,if_single
,if_multi
special formsfor
special formConvenience Forms
use
import
clausesTODO Shared modules; tunneled modules; more advanced system macros
Other roadmap items:
The text was updated successfully, but these errors were encountered: