Add support for parsing user defined literals

This commit is contained in:
Dustin Spicuzza
2022-12-15 02:55:07 -05:00
parent 1eaa85ae8d
commit e5295070a0
3 changed files with 83 additions and 4 deletions

View File

@@ -236,3 +236,34 @@ def test_final() -> None:
],
)
)
#
# User defined literals
#
def test_user_defined_literal() -> None:
content = """
units::volt_t v = 1_V;
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
variables=[
Variable(
name=PQName(segments=[NameSpecifier(name="v")]),
type=Type(
typename=PQName(
segments=[
NameSpecifier(name="units"),
NameSpecifier(name="volt_t"),
]
)
),
value=Value(tokens=[Token(value="1_V")]),
)
]
)
)

View File

@@ -1,6 +1,6 @@
import pytest
from cxxheaderparser.lexer import PlyLexer
from cxxheaderparser.lexer import PlyLexer, LexerTokenStream
from cxxheaderparser.tokfmt import tokfmt
from cxxheaderparser.types import Token
@@ -48,6 +48,7 @@ def test_tokfmt(instr: str) -> None:
if not tok:
break
toks.append(Token(tok.value, tok.type))
if tok.type not in LexerTokenStream._discard_types:
toks.append(Token(tok.value, tok.type))
assert tokfmt(toks) == instr