diff --git a/src/openqasm_pygments/qasm3.py b/src/openqasm_pygments/qasm3.py index 060e723..cc00ff5 100644 --- a/src/openqasm_pygments/qasm3.py +++ b/src/openqasm_pygments/qasm3.py @@ -80,7 +80,7 @@ def _defcalgrammar_callback(self, match): "annotation", ), ( - r"^([ \t]*)(@\w+(\.\w+)*)([ \t]*)", + r"^([ \t]*)(@\w+(?:\.\w+)*)([ \t]*)", bygroups(token.Whitespace, token.Name.Decorator, token.Whitespace), "annotation", ), diff --git a/tests/examples/qasm3/annotations.qasm b/tests/examples/qasm3/annotations.qasm new file mode 100644 index 0000000..0730aa4 --- /dev/null +++ b/tests/examples/qasm3/annotations.qasm @@ -0,0 +1,9 @@ +// Test lexing of annotations with namespaces +OPENQASM 3.1; +@annotation +@annotation value +@annotation.long.namespace +@annotation.long.namespace value + @annotation.long.namespace + @annotation.long.namespace value +h q; diff --git a/tests/examples/qasm3/annotations.qasm.output b/tests/examples/qasm3/annotations.qasm.output new file mode 100644 index 0000000..bdd932c --- /dev/null +++ b/tests/examples/qasm3/annotations.qasm.output @@ -0,0 +1,32 @@ +'// Test lexing of annotations with namespaces' Token.Comment.Single +'\n' Token.Text.Whitespace +'OPENQASM' Token.Comment.Preproc +' ' Token.Text.Whitespace +'3.1' Token.Literal +';' Token.Punctuation +'\n' Token.Text.Whitespace +'@annotation' Token.Name.Decorator +'\n' Token.Text.Whitespace +'@annotation' Token.Name.Decorator +' ' Token.Text.Whitespace +'value' Token.Text +'\n' Token.Text.Whitespace +'@annotation.long.namespace' Token.Name.Decorator +'\n' Token.Text.Whitespace +'@annotation.long.namespace' Token.Name.Decorator +' ' Token.Text.Whitespace +'value' Token.Text +'\n' Token.Text.Whitespace +' ' Token.Text.Whitespace +'@annotation.long.namespace' Token.Name.Decorator +'\n' Token.Text.Whitespace +' ' Token.Text.Whitespace +'@annotation.long.namespace' Token.Name.Decorator +' ' Token.Text.Whitespace +'value' Token.Text +'\n' Token.Text.Whitespace +'h' Token.Name.Function +' ' Token.Text.Whitespace +'q' Token.Name +';' Token.Punctuation +'\n' Token.Text.Whitespace