private void TokenizeStrings2() {
AssertTokenizer t = new AssertTokenizer(this) {
Verbatim = true
};
// string nested in a string:
t.Load(@"""abc#{""x#@hello#{{}}y""}def""")
[Tokens.StringBegin]
[Tokens.StringContent]
[Tokens.StringEmbeddedCodeBegin]
[Tokens.StringBegin]
[Tokens.StringContent]
[Tokens.StringEmbeddedVariableBegin]
[Tokens.InstanceVariable]
[Tokens.StringEmbeddedCodeBegin]
[Tokens.LeftBrace]
[Tokens.RightBrace]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringContent]
[Tokens.StringEnd]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringContent]
[Tokens.StringEnd].
EOF();
// nested braces:
t.Load(@"""a#{{{""#{{""#{1}""=>""c""}}""=>""#{2}""}=>""#{3}""}}a""")
[Tokens.StringBegin]
[Tokens.StringContent]
[Tokens.StringEmbeddedCodeBegin]
[Tokens.LeftBrace]
[Tokens.LeftBrace]
[Tokens.StringBegin]
[Tokens.StringEmbeddedCodeBegin]
[Tokens.LeftBrace]
[Tokens.StringBegin]
[Tokens.StringEmbeddedCodeBegin]
[1]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringEnd]
[Tokens.DoubleArrow]
[Tokens.StringBegin]
[Tokens.StringContent]
[Tokens.StringEnd]
[Tokens.RightBrace]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringEnd]
[Tokens.DoubleArrow]
[Tokens.StringBegin]
[Tokens.StringEmbeddedCodeBegin]
[2]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringEnd]
[Tokens.RightBrace]
[Tokens.DoubleArrow]
[Tokens.StringBegin]
[Tokens.StringEmbeddedCodeBegin]
[3]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringEnd]
[Tokens.RightBrace]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringContent]
[Tokens.StringEnd].
EOF();
// =begin .. =end nested in a string:
t.Load("\"hello#{\n=begin\nxxx\n=end\nidf\n}world\"")
[Tokens.StringBegin]
[Tokens.StringContent]
[Tokens.StringEmbeddedCodeBegin]
[Tokens.EndOfLine]
[Tokens.MultiLineComment]
[Tokens.Identifier, "idf"]
[Tokens.NewLine]
[Tokens.StringEmbeddedCodeEnd]
[Tokens.StringContent]
[Tokens.StringEnd].
EOF();
// braces nesting in word array:
t.Load("%w{#$a #{b + 1} c}")
[Tokens.VerbatimWordsBegin]
[Tokens.StringContent, "#$a"][Tokens.WordSeparator]
[Tokens.StringContent, "#{b"][Tokens.WordSeparator]
[Tokens.StringContent, "+"][Tokens.WordSeparator]
[Tokens.StringContent, "1}"][Tokens.WordSeparator]
[Tokens.StringContent, "c"]
[Tokens.StringEnd].
EOF();
}