[
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1, 2\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1, 2"
),
TokenInfo(
- NUMBER, string="2", start=(1, 3), end=(1, 4), line="1, 2\n"
+ NUMBER, string="2", start=(1, 3), end=(1, 4), line="1, 2"
),
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 4), end=(1, 5), line="1, 2\n"
+ NEWLINE, string="\n", start=(1, 4), end=(1, 5), line="1, 2"
),
],
)
self.assertEqual(
node,
[
- TokenInfo(NUMBER, string="42", start=(1, 0), end=(1, 2), line="42\n"),
- TokenInfo(NEWLINE, string="\n", start=(1, 2), end=(1, 3), line="42\n"),
+ TokenInfo(NUMBER, string="42", start=(1, 0), end=(1, 2), line="42"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 2), end=(1, 3), line="42"),
],
)
[
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2"
),
[
TokenInfo(
- OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2\n"
+ OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2"
),
TokenInfo(
- NUMBER, string="2", start=(1, 4), end=(1, 5), line="1 + 2\n"
+ NUMBER, string="2", start=(1, 4), end=(1, 5), line="1 + 2"
),
],
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 + 2\n"
+ NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 + 2"
),
],
)
node,
[
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1"),
None,
],
- TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1\n"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1"),
],
)
[
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1+\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1+"
),
- TokenInfo(OP, string="+", start=(1, 1), end=(1, 2), line="1+\n"),
+ TokenInfo(OP, string="+", start=(1, 1), end=(1, 2), line="1+"),
],
- TokenInfo(NEWLINE, string="\n", start=(1, 2), end=(1, 3), line="1+\n"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 2), end=(1, 3), line="1+"),
],
)
node = parse_string("1\n", parser_class)
node,
[
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1"),
None,
],
- TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1\n"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1"),
],
)
[
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2"
),
[
TokenInfo(
- OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2\n"
+ OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2"
),
TokenInfo(
- NUMBER, string="2", start=(1, 4), end=(1, 5), line="1 + 2\n"
+ NUMBER, string="2", start=(1, 4), end=(1, 5), line="1 + 2"
),
],
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 + 2\n"
+ NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 + 2"
),
],
)
node,
[
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1"),
None,
],
- TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1\n"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1"),
],
)
self.assertEqual(
node,
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 2 3\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 2 3"),
[
TokenInfo(
- NUMBER, string="2", start=(1, 2), end=(1, 3), line="1 2 3\n"
+ NUMBER, string="2", start=(1, 2), end=(1, 3), line="1 2 3"
),
TokenInfo(
- NUMBER, string="3", start=(1, 4), end=(1, 5), line="1 2 3\n"
+ NUMBER, string="3", start=(1, 4), end=(1, 5), line="1 2 3"
),
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 2 3\n"
+ NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 2 3"
),
],
)
self.assertEqual(
node,
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1"),
[],
- TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1\n"),
+ TokenInfo(NEWLINE, string="\n", start=(1, 1), end=(1, 2), line="1"),
],
)
node,
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2 + 3\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2 + 3"
),
[
[
TokenInfo(
- OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3"
),
TokenInfo(
NUMBER,
string="2",
start=(1, 4),
end=(1, 5),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
],
[
TokenInfo(
- OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3"
),
TokenInfo(
NUMBER,
string="3",
start=(1, 8),
end=(1, 9),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
],
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3\n"
+ NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3"
),
],
)
self.assertEqual(
node,
[
- TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 2 3\n"),
+ TokenInfo(NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 2 3"),
[
TokenInfo(
- NUMBER, string="2", start=(1, 2), end=(1, 3), line="1 2 3\n"
+ NUMBER, string="2", start=(1, 2), end=(1, 3), line="1 2 3"
),
TokenInfo(
- NUMBER, string="3", start=(1, 4), end=(1, 5), line="1 2 3\n"
+ NUMBER, string="3", start=(1, 4), end=(1, 5), line="1 2 3"
),
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 2 3\n"
+ NEWLINE, string="\n", start=(1, 5), end=(1, 6), line="1 2 3"
),
],
)
node,
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2 + 3\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1 + 2 + 3"
),
[
[
TokenInfo(
- OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3"
),
TokenInfo(
NUMBER,
string="2",
start=(1, 4),
end=(1, 5),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
],
[
TokenInfo(
- OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3"
),
TokenInfo(
NUMBER,
string="3",
start=(1, 8),
end=(1, 9),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
],
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3\n"
+ NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3"
),
],
)
[
[
TokenInfo(
- NUMBER, string="1", start=(1, 0), end=(1, 1), line="1, 2, 3\n"
+ NUMBER, string="1", start=(1, 0), end=(1, 1), line="1, 2, 3"
),
TokenInfo(
- NUMBER, string="2", start=(1, 3), end=(1, 4), line="1, 2, 3\n"
+ NUMBER, string="2", start=(1, 3), end=(1, 4), line="1, 2, 3"
),
TokenInfo(
- NUMBER, string="3", start=(1, 6), end=(1, 7), line="1, 2, 3\n"
+ NUMBER, string="3", start=(1, 6), end=(1, 7), line="1, 2, 3"
),
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 7), end=(1, 8), line="1, 2, 3\n"
+ NEWLINE, string="\n", start=(1, 7), end=(1, 8), line="1, 2, 3"
),
],
)
string="1",
start=(1, 0),
end=(1, 1),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
TokenInfo(
- OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 2), end=(1, 3), line="1 + 2 + 3"
),
TokenInfo(
NUMBER,
string="2",
start=(1, 4),
end=(1, 5),
- line="1 + 2 + 3\n",
+ line="1 + 2 + 3",
),
],
TokenInfo(
- OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3\n"
+ OP, string="+", start=(1, 6), end=(1, 7), line="1 + 2 + 3"
),
TokenInfo(
- NUMBER, string="3", start=(1, 8), end=(1, 9), line="1 + 2 + 3\n"
+ NUMBER, string="3", start=(1, 8), end=(1, 9), line="1 + 2 + 3"
),
],
TokenInfo(
- NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3\n"
+ NEWLINE, string="\n", start=(1, 9), end=(1, 10), line="1 + 2 + 3"
),
],
)
start:
| "number" n=NUMBER { eval(n.string) }
| "string" n=STRING { n.string }
- | SOFT_KEYWORD l=NAME n=(NUMBER | NAME | STRING) { f"{l.string} = {n.string}"}
+ | SOFT_KEYWORD l=NAME n=(NUMBER | NAME | STRING) { l.string + " = " + n.string }
"""
parser_class = make_parser(grammar)
self.assertEqual(parse_string("number 1", parser_class), 1)