• DoctypeDeclaration{http://etl.sf.net/etl/doctype/0.2.1}:
    • systemId: "calculator-vars-0_2_1.g.etl"
  • PrintStatement{http://etl.sf.net/samples/calculator}:
    • values:
      • StringLiteral{http://etl.sf.net/samples/calculator}:
        • value: "PI ** E: "
      • Power{http://etl.sf.net/samples/calculator/arith}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • quoted: Q'PI'
        • second:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: E
  • PrintStatement{http://etl.sf.net/samples/calculator}:
    • values:
      • StringLiteral{http://etl.sf.net/samples/calculator}:
        • value: "E ** PI: "
      • Power{http://etl.sf.net/samples/calculator/arith}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: E
        • second:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: PI
  • VarStatement{http://etl.sf.net/samples/calculator/vars}:
    • documentation:
      • DocumentationLine{http://etl.sf.net/samples/calculator/meta}:
        • text: /// The dozen constant defined in a complex way
    • type: let
    • name:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: dozen
    • value:
      • Multiply{http://etl.sf.net/samples/calculator/arith}:
        • first:
          • Sequence{http://etl.sf.net/samples/calculator}:
            • statements:
              • VarStatement{http://etl.sf.net/samples/calculator/vars}:
                • type: let
                • name:
                  • Name{http://etl.sf.net/samples/calculator/vars}:
                    • literal: a
                • value:
                  • Sequence{http://etl.sf.net/samples/calculator}:
                    • statements:
                      • VarStatement{http://etl.sf.net/samples/calculator/vars}:
                        • type: let
                        • name:
                          • Name{http://etl.sf.net/samples/calculator/vars}:
                            • literal: one
                        • value:
                          • NumberLiteral{http://etl.sf.net/samples/calculator}:
                            • value: 1
                      • ExpressionStatement{http://etl.sf.net/samples/calculator}:
                        • value:
                          • Plus{http://etl.sf.net/samples/calculator/arith}:
                            • first:
                              • Name{http://etl.sf.net/samples/calculator/vars}:
                                • literal: one
                            • second:
                              • Name{http://etl.sf.net/samples/calculator/vars}:
                                • literal: one
              • ExpressionStatement{http://etl.sf.net/samples/calculator}:
                • value:
                  • Multiply{http://etl.sf.net/samples/calculator/arith}:
                    • first:
                      • Name{http://etl.sf.net/samples/calculator/vars}:
                        • literal: a
                    • second:
                      • Name{http://etl.sf.net/samples/calculator/vars}:
                        • literal: a
        • second:
          • NumberLiteral{http://etl.sf.net/samples/calculator}:
            • value: 3
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: dozen
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: PI
  • VarStatement{http://etl.sf.net/samples/calculator/vars}:
    • type: let
    • name:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: a
  • ExpressionStatement{http://etl.sf.net/samples/calculator}:
    • value:
      • Assignment{http://etl.sf.net/samples/calculator/vars}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: a
        • second:
          • NumberLiteral{http://etl.sf.net/samples/calculator}:
            • value: 4
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: a
  • VarStatement{http://etl.sf.net/samples/calculator/vars}:
    • type: let
    • name:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: let
  • ExpressionStatement{http://etl.sf.net/samples/calculator}:
    • value:
      • Assignment{http://etl.sf.net/samples/calculator/vars}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • quoted: q'let'
        • second:
          • NumberLiteral{http://etl.sf.net/samples/calculator}:
            • value: 2
  • VarStatement{http://etl.sf.net/samples/calculator/vars}:
    • type: let
    • name:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • quoted: Q'print'
  • ExpressionStatement{http://etl.sf.net/samples/calculator}:
    • value:
      • Assignment{http://etl.sf.net/samples/calculator/vars}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • quoted: Q'print'
        • second:
          • Plus{http://etl.sf.net/samples/calculator/arith}:
            • first:
              • Plus{http://etl.sf.net/samples/calculator/arith}:
                • first:
                  • Name{http://etl.sf.net/samples/calculator/vars}:
                    • literal: let
                • second:
                  • Name{http://etl.sf.net/samples/calculator/vars}:
                    • quoted: q'let'
            • second:
              • Name{http://etl.sf.net/samples/calculator/vars}:
                • quoted: Q'\x6c\u0065\U000074;'
  • PrintStatement{http://etl.sf.net/samples/calculator}:
    • values:
      • StringLiteral{http://etl.sf.net/samples/calculator}:
        • value: "used keyword vars: "
      • Multiply{http://etl.sf.net/samples/calculator/arith}:
        • first:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: let
        • second:
          • Name{http://etl.sf.net/samples/calculator/vars}:
            • literal: print
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • literal: let
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • quoted: q'print'
  • Help{http://etl.sf.net/samples/calculator/vars}:
    • variable:
      • Name{http://etl.sf.net/samples/calculator/vars}:
        • quoted: q'$runner'
     1: doctype "calculator-vars-0_2_1.g.etl";
     2: 
     3: print "PI ** E: ", Q'PI' ** E;
     4: print "E ** PI: ", E ** PI;
     5: /// The dozen constant defined in a complex way
     6: let dozen = {let a = {let one = 1; one + one;}; a * a;} * 3;
     7: help dozen;
     8: help PI;
     9: let a;
    10: a = 4;
    11: help a;
    12: // Using keyword as a name. Quoting is only required
    13: // where it could happen as a keyword, but possible everywhere.
    14: let let;
    15: q'let' = 2;
    16: let Q'print';
    17: // quoting of left hand side is required, but in expression
    18: // is not since "let" is not a keyword in the expression context.
    19: // the last in the sum is also "let" but with 
    20: // all unicode escapes used. 
    21: Q'print' = let + q'let' + Q'\x6c\u0065\U000074;';
    22: // in the sample below quoting is not required
    23: // since "print" and "let" are not keywords in this context
    24: print "used keyword vars: ", let * print;  
    25: help let;
    26: help q'print';
    27: // the $runner is the system variable defined by the runner
    28: help q'$runner';
    29: