summaryrefslogtreecommitdiff
path: root/lib9p/idl/__init__.py
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-14 07:46:18 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-14 14:45:11 -0600
commitc3d898044d5ce4d60c771e3818b30a9ef9d48bdf (patch)
tree83759c9b46310e2dfb03e84ae19f110e4140ec00 /lib9p/idl/__init__.py
parentb5ea4c02dc4940464d68b9061cc27b378bfbd368 (diff)
lib9p_core: Integrate linux-errno.h into 2010-9P2000.L.9p
Diffstat (limited to 'lib9p/idl/__init__.py')
-rw-r--r--lib9p/idl/__init__.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib9p/idl/__init__.py b/lib9p/idl/__init__.py
index 154e157..3133cc4 100644
--- a/lib9p/idl/__init__.py
+++ b/lib9p/idl/__init__.py
@@ -647,6 +647,7 @@ def re_string(grpname: str) -> str:
re_line_version = f"version\\s+{re_string('version')}"
re_line_import = f"from\\s+(?P<file>\\S+)\\s+import\\s+(?P<syms>{re_impname}(?:\\s*,\\s*{re_impname})*)"
re_line_num = f"num\\s+(?P<name>{re_symname})\\s*=\\s*(?P<prim>{re_priname})"
+re_line_num_ = f"num\\s+(?P<name>{re_symname})\\s*\\+=\\s*{re_string('spec')}"
re_line_bitfield = f"bitfield\\s+(?P<name>{re_symname})\\s*=\\s*(?P<prim>{re_priname})"
re_line_bitfield_ = f"bitfield\\s+(?P<name>{re_symname})\\s*\\+=\\s*{re_string('spec')}"
re_line_struct = (
@@ -739,6 +740,11 @@ def parse_file(
raise ValueError(f"duplicate type name {num.typname!r}")
env[num.typname] = num
prev = num
+ elif m := re.fullmatch(re_line_num_, line):
+ num = get_type(env, m.group("name"), Number)
+ parse_numspec(env, version, num, m.group("spec"))
+
+ prev = num
elif m := re.fullmatch(re_line_bitfield, line):
prim = env[m.group("prim")]
assert isinstance(prim, Primitive)