Add meta-variables

This is an EPITA extension of the language, used mostly by internal
compiler machinery.
This commit is contained in:
Bruno BELANYI 2022-06-04 20:25:41 +02:00
parent 1cfcc43469
commit 572dab6f4b
5 changed files with 6785 additions and 4090 deletions

View file

@ -0,0 +1,65 @@
================================================================================
Meta chunks
================================================================================
_chunks(42)
--------------------------------------------------------------------------------
(source_file
(meta_chunks
index: (integer_literal)))
================================================================================
Cast
================================================================================
_cast(42, string)
--------------------------------------------------------------------------------
(source_file
(meta_cast
expression: (integer_literal)
type: (type_alias
(type_identifier))))
================================================================================
Meta expression
================================================================================
_exp(42)
--------------------------------------------------------------------------------
(source_file
(meta_expression
index: (integer_literal)))
================================================================================
Meta lvalue
================================================================================
_lvalue(42)
--------------------------------------------------------------------------------
(source_file
(meta_lvalue
index: (integer_literal)))
================================================================================
Meta type identifier
================================================================================
var a : _namety(42) := "I'm So Meta Even This Acronym"
--------------------------------------------------------------------------------
(source_file
(variable_declaration
name: (identifier)
type: (meta_type_identifier
(integer_literal))
(operator)
value: (string_literal)))