On page 30 you have defined
methodProto ::= [ attributeInstances ] method type identifier ( [ methodProtoFormals ] ) ;
but in the example of an interface, you omit empty braces which shouldn't be possible according to the grammar above,
interface IntStack;
method Action push (int x);
method Action pop;
method int top;
endinterface: IntStack
To fix this you could use:
_methodProto ::= [ attributeInstances ] method type identifier ( [ methodProtoFormals ] );
| [ attributeInstances ] method type identifier ;
On page 30 you have defined
methodProto ::= [ attributeInstances ] method type identifier ( [ methodProtoFormals ] ) ;
but in the example of an interface, you omit empty braces which shouldn't be possible according to the grammar above,
To fix this you could use:
_methodProto ::= [ attributeInstances ] method type identifier ( [ methodProtoFormals ] );
| [ attributeInstances ] method type identifier ;