Literals are the basic foundation of treehugger DSL. Numeric literals, String, and symbols are written by wrapping a Scala literal with LIT():

scala> import treehugger.forest._, definitions._, treehuggerDSL._
import treehugger.forest._
import definitions._
import treehuggerDSL._

scala> LIT(1)     // Int
res0: treehugger.forest.Literal = Literal(Constant(1))

scala> LIT(1L)    // Long
res1: treehugger.forest.Literal = Literal(Constant(1))

scala> LIT(1.23)  // Double
res2: treehugger.forest.Literal = Literal(Constant(1.23))

scala> LIT(1.23F) // Float
res3: treehugger.forest.Literal = Literal(Constant(1.23))

scala> LIT('H')   // Char
res4: treehugger.forest.Literal = Literal(Constant(H))

scala> LIT("H")   // String
res5: treehugger.forest.Literal = Literal(Constant(H))

scala> LIT('Sym)  // scala.Symbol
res6: treehugger.forest.Literal = Literal(Constant('Sym))

Boolean literals, (), and null are written as follows:

scala> TRUE       // true
res7: treehugger.forest.Literal = Literal(Constant(true))

scala> FALSE      // false
res8: treehugger.forest.Literal = Literal(Constant(false))

scala> NULL       // null
res9: treehugger.forest.Literal = Literal(Constant(null))

scala> UNIT       // ()
res10: treehugger.forest.Literal = Literal(Constant(()))