Skip to content

Commit d6d0e07

Browse files
authored
Add switch keywords (#6)
1 parent b203921 commit d6d0e07

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
The new keywords ``switch``, ``case`` and ``default`` now lex correctly.

src/openqasm_pygments/qasm3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def _defcalgrammar_callback(self, match):
9292
("let", token.Keyword.Declaration),
9393
(
9494
words(
95-
"break continue end if else for while box return in".split(),
95+
"break continue end if else for while box return in switch case default".split(),
9696
prefix="\\b",
9797
suffix="\\b",
9898
),

tests/test_qasm3_lexer.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,37 @@ def test_annotation_namespace(lexer_qasm3):
8585
]
8686

8787

88+
def test_switch_case(lexer_qasm3):
89+
text = """\
90+
switch (i) {
91+
case 1, 2 {}
92+
case 3 {}
93+
default {}
94+
}
95+
"""
96+
assert _remove_whitespace(lexer_qasm3.get_tokens(text)) == [
97+
(token.Keyword, "switch"),
98+
(token.Punctuation, "("),
99+
(token.Name, "i"),
100+
(token.Punctuation, ")"),
101+
(token.Punctuation, "{"),
102+
(token.Keyword, "case"),
103+
(token.Literal.Number, "1"),
104+
(token.Punctuation, ","),
105+
(token.Literal.Number, "2"),
106+
(token.Punctuation, "{"),
107+
(token.Punctuation, "}"),
108+
(token.Keyword, "case"),
109+
(token.Literal.Number, "3"),
110+
(token.Punctuation, "{"),
111+
(token.Punctuation, "}"),
112+
(token.Keyword, "default"),
113+
(token.Punctuation, "{"),
114+
(token.Punctuation, "}"),
115+
(token.Punctuation, "}"),
116+
]
117+
118+
88119
class TestPulseLexerDelegation:
89120
def test_inferred_known_alias(self, lexer_qasm3):
90121
# This uses a very (!) non-standard pulse-grammar lexer to test delegation

0 commit comments

Comments
 (0)