diff options
Diffstat (limited to 'qface/idl/listener.py')
-rw-r--r-- | qface/idl/listener.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/qface/idl/listener.py b/qface/idl/listener.py index 81df9b8..925e908 100644 --- a/qface/idl/listener.py +++ b/qface/idl/listener.py @@ -28,6 +28,7 @@ class DomainListener(TListener): self.enum = None # type:Enum self.enumCounter = 0 # int self.operation = None # type:Operation + self.signal = None # type:Signal self.parameter = None # type:Parameter self.property = None # type:Property self.field = None # type:Field @@ -139,8 +140,7 @@ class DomainListener(TListener): def enterOperationSymbol(self, ctx: TParser.OperationSymbolContext): assert self.interface name = ctx.name.text - is_event = bool(ctx.isEvent) - self.operation = Operation(name, self.interface, is_event) + self.operation = Operation(name, self.interface) self.parse_annotations(ctx, self.operation) self.parse_type(ctx, self.operation.type) contextMap[ctx] = self.operation @@ -148,9 +148,20 @@ class DomainListener(TListener): def exitOperationSymbol(self, ctx: TParser.OperationSymbolContext): self.operation = None + def enterSignalSymbol(self, ctx: TParser.SignalSymbolContext): + assert self.interface + name = ctx.name.text + self.signal = Signal(name, self.interface) + self.parse_annotations(ctx, self.operation) + contextMap[ctx] = self.signal + + def exitSignalSymbol(self, ctx: TParser.SignalSymbolContext): + self.signal = None + def enterOperationParameterSymbol(self, ctx: TParser.OperationParameterSymbolContext): name = ctx.name.text - self.parameter = Parameter(name, self.operation) + symbol = self.operation if self.operation else self.signal + self.parameter = Parameter(name, symbol) contextMap[ctx] = self.parameter def exitOperationParameterSymbol(self, ctx: TParser.OperationParameterSymbolContext): |