450 lines
14 KiB
Plaintext
450 lines
14 KiB
Plaintext
================================================================================
|
|
simple quoted template expression
|
|
================================================================================
|
|
|
|
foo = "${ var.bar }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(variable_expr
|
|
(identifier))
|
|
(get_attr
|
|
(identifier)))
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
empty template interpolation
|
|
================================================================================
|
|
|
|
foo = "${}"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
template for expression in quoted template
|
|
================================================================================
|
|
|
|
foo = "%{ for a in b } prefix-${a} %{ endfor }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_directive
|
|
(template_for
|
|
(template_for_start
|
|
(template_directive_start)
|
|
(identifier)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(template_directive_end))
|
|
(template_literal)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(template_interpolation_end))
|
|
(template_for_end
|
|
(template_directive_start)
|
|
(template_directive_end))))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
escaped template for directive
|
|
================================================================================
|
|
|
|
foo = "%{ for a in b } %%{ endfor } %{ endfor }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_directive
|
|
(template_for
|
|
(template_for_start
|
|
(template_directive_start)
|
|
(identifier)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(template_directive_end))
|
|
(template_literal)
|
|
(template_for_end
|
|
(template_directive_start)
|
|
(template_directive_end))))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
escaped template for directive 2
|
|
================================================================================
|
|
|
|
foo = "%%{ for a in b } %%{ endfor }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(literal_value
|
|
(string_lit
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
template for directive with weird whitespace
|
|
================================================================================
|
|
|
|
foo = "%{ for a in b } %{ endfor }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_directive
|
|
(template_for
|
|
(template_for_start
|
|
(template_directive_start)
|
|
(identifier)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(template_directive_end))
|
|
(template_for_end
|
|
(template_directive_start)
|
|
(template_directive_end))))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
template for expression in heredoc template
|
|
================================================================================
|
|
|
|
foo = <<EOF
|
|
%{ for a in b ~}
|
|
|
|
prefix-${a}
|
|
|
|
%{~ endfor }
|
|
EOF
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(heredoc_template
|
|
(heredoc_start)
|
|
(heredoc_identifier)
|
|
(template_directive
|
|
(template_for
|
|
(template_for_start
|
|
(template_directive_start)
|
|
(identifier)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(strip_marker)
|
|
(template_directive_end))
|
|
(template_literal)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(template_interpolation_end))
|
|
(template_for_end
|
|
(template_directive_start)
|
|
(strip_marker)
|
|
(template_directive_end))))
|
|
(heredoc_identifier)))))))
|
|
|
|
================================================================================
|
|
empty heredoc template
|
|
================================================================================
|
|
|
|
foo = <<END
|
|
END
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(heredoc_template
|
|
(heredoc_start)
|
|
(heredoc_identifier)
|
|
(heredoc_identifier)))))))
|
|
|
|
================================================================================
|
|
heredoc with fake ending
|
|
================================================================================
|
|
|
|
foo = <<END
|
|
END not!
|
|
END
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(heredoc_template
|
|
(heredoc_start)
|
|
(heredoc_identifier)
|
|
(template_literal)
|
|
(heredoc_identifier)))))))
|
|
|
|
================================================================================
|
|
quoted template expression with escaped strings and fake strip marker
|
|
================================================================================
|
|
|
|
foo = "${ " ~ " }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(literal_value
|
|
(string_lit
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(quoted_template_end))))
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
quoted template with nested quoted template
|
|
================================================================================
|
|
|
|
foo = "p-${ foo("v-${a.b}") }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(function_call
|
|
(identifier)
|
|
(function_arguments
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(variable_expr
|
|
(identifier))
|
|
(get_attr
|
|
(identifier)))
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
quoted template interpolation with strip markers
|
|
================================================================================
|
|
|
|
foo = "hello ${~ "world" ~} hello"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(strip_marker)
|
|
(expression
|
|
(literal_value
|
|
(string_lit
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(quoted_template_end))))
|
|
(strip_marker)
|
|
(template_interpolation_end))
|
|
(template_literal)
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
quoted template object expression in template
|
|
================================================================================
|
|
|
|
foo = "${ {a=b}[a] }"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(quoted_template
|
|
(quoted_template_start)
|
|
(template_interpolation
|
|
(template_interpolation_start)
|
|
(expression
|
|
(collection_value
|
|
(object
|
|
(object_start)
|
|
(object_elem
|
|
(expression
|
|
(variable_expr
|
|
(identifier)))
|
|
(expression
|
|
(variable_expr
|
|
(identifier))))
|
|
(object_end)))
|
|
(index
|
|
(new_index
|
|
(expression
|
|
(variable_expr
|
|
(identifier))))))
|
|
(template_interpolation_end))
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
escaped template interpolation start
|
|
================================================================================
|
|
|
|
foo = "hello $${ world"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(literal_value
|
|
(string_lit
|
|
(quoted_template_start)
|
|
(template_literal)
|
|
(quoted_template_end)))))))
|
|
|
|
================================================================================
|
|
tricky heredoc
|
|
================================================================================
|
|
|
|
foo = <<END
|
|
contains fake endings
|
|
END (ineligible) END
|
|
END
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(heredoc_template
|
|
(heredoc_start)
|
|
(heredoc_identifier)
|
|
(template_literal)
|
|
(heredoc_identifier)))))))
|
|
|
|
================================================================================
|
|
heredoc with identifier that does not fit into the serialization buffer (should not crash)
|
|
================================================================================
|
|
|
|
foo = <<XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(config_file
|
|
(body
|
|
(attribute
|
|
(identifier)
|
|
(expression
|
|
(template_expr
|
|
(heredoc_template
|
|
(heredoc_start)
|
|
(heredoc_identifier)
|
|
(heredoc_identifier)))))))
|