Discard line continuations

- Fixes #54
This commit is contained in:
Dustin Spicuzza 2023-07-23 17:00:35 -04:00
parent 9bf99db87b
commit b07e1f81a6
3 changed files with 33 additions and 4 deletions

View File

@ -659,6 +659,11 @@ class LexerTokenStream(TokenStream):
tokbuf.append(tok) tokbuf.append(tok)
if tok.type == "NEWLINE": if tok.type == "NEWLINE":
# detect/remove line continuations
if len(tokbuf) > 2 and tokbuf[-2].type == "\\":
tokbuf.pop()
tokbuf.pop()
else:
break break
# detect/combine user defined literals # detect/combine user defined literals

View File

@ -116,17 +116,14 @@ def test_enum_w_multiline_expr() -> None:
Token(value="<<"), Token(value="<<"),
Token(value="24"), Token(value="24"),
Token(value="|"), Token(value="|"),
Token(value="\\"),
Token(value="'A'"), Token(value="'A'"),
Token(value="<<"), Token(value="<<"),
Token(value="16"), Token(value="16"),
Token(value="|"), Token(value="|"),
Token(value="\\"),
Token(value="'S'"), Token(value="'S'"),
Token(value="<<"), Token(value="<<"),
Token(value="8"), Token(value="8"),
Token(value="|"), Token(value="|"),
Token(value="\\"),
Token(value="'H'"), Token(value="'H'"),
Token(value=")"), Token(value=")"),
] ]

View File

@ -267,3 +267,30 @@ def test_user_defined_literal() -> None:
] ]
) )
) )
#
# Line continuation
#
def test_line_continuation() -> None:
content = """
static int \
variable;
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
variables=[
Variable(
name=PQName(segments=[NameSpecifier(name="variable")]),
type=Type(
typename=PQName(segments=[FundamentalSpecifier(name="int")])
),
static=True,
)
]
)
)