summaryrefslogtreecommitdiff
path: root/src/syntax
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-08-14 20:19:50 +0200
committerLaurenz <laurmaedje@gmail.com>2020-08-14 20:19:50 +0200
commit650c712eabc6f665a0a0cc2a47fb5b90cf715d87 (patch)
tree18d4f355e157d4d9211179c4056c44d1cbe2a9f0 /src/syntax
parent1fb2d5103d0840f24ae588f4a05ed20a13f621d0 (diff)
Add a syntax tree expression kind 🎍
This allows bodies to be passed as regular arguments.
Diffstat (limited to 'src/syntax')
-rw-r--r--src/syntax/expr.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/syntax/expr.rs b/src/syntax/expr.rs
index dd23ea61..e7e262bc 100644
--- a/src/syntax/expr.rs
+++ b/src/syntax/expr.rs
@@ -9,6 +9,7 @@ use crate::length::Length;
use crate::Feedback;
use super::span::{SpanVec, Spanned};
use super::tokens::is_identifier;
+use super::tree::SyntaxTree;
use super::value::Value;
/// An expression.
@@ -26,6 +27,8 @@ pub enum Expr {
Length(Length),
/// A color value with alpha channel: `#f79143ff`.
Color(RgbaColor),
+ /// A syntax tree containing typesetting content.
+ Tree(SyntaxTree),
/// A tuple: `(false, 12cm, "hi")`.
Tuple(Tuple),
/// A named tuple: `cmyk(37.7, 0, 3.9, 1.1)`.
@@ -56,6 +59,7 @@ impl Expr {
Number(_) => "number",
Length(_) => "length",
Color(_) => "color",
+ Tree(_) => "syntax tree",
Tuple(_) => "tuple",
NamedTuple(_) => "named tuple",
Object(_) => "object",
@@ -78,6 +82,7 @@ impl Debug for Expr {
Number(n) => n.fmt(f),
Length(s) => s.fmt(f),
Color(c) => c.fmt(f),
+ Tree(t) => t.fmt(f),
Tuple(t) => t.fmt(f),
NamedTuple(t) => t.fmt(f),
Object(o) => o.fmt(f),