def p_interface(p): '''interface : INTERFACE name extendsList LBRACE invariants methods RBRACE''' no_comma(p[7]) # Every interface implicitly inherits from BaseInterface if p[3]: exts = p[3] else: if p[2] <> 'BaseInterface': exts = [ sidlir.Extends(sidlir.Scoped_id(['sidl'], 'BaseInterface', '')) ] else: exts = [] p[0] = sidlir.Interface(p[2], exts, (p[5]), (p[6]), scanner.last_doc_comment())
def p_class(p): '''class : CLASS name maybeExtendsOne implementsSomeAllLists LBRACE invariants methods RBRACE''' no_comma(p[8]) # Every class implicitly inherits from BaseClass if not p[3]: if p[2] <> 'BaseClass': ext = [sidlir.Extends(sidlir.Scoped_id(['sidl'], 'BaseClass', ''))] else: ext = [] else: ext = p[3] if p[4]: impl = list(itertools.chain.from_iterable(p[4])) else: impl = p[4] p[0] = sidlir.Class(p[2], ext, impl, (p[6]), (p[7]), scanner.last_doc_comment())
def p_method(p): '''method : methodAttrs typeVoid methodName LPAREN maybeArgList RPAREN maybeExceptClause maybeFromClause SEMICOLON requireAssertions ensureAssertions''' p[0] = sidlir.Method(p[2], p[3], (p[1]), (p[5]), p[7], p[8], (p[10]), (p[11]), scanner.last_doc_comment())
def p_struct(p): '''struct : STRUCT name LBRACE structItems RBRACE''' no_comma(p[5]) p[0] = sidlir.Struct(p[2], (p[4]), scanner.last_doc_comment())
def p_enum(p): '''enum : ENUM name LBRACE enumerators RBRACE''' p[0] = sidlir.Enum(p[2], (p[4]), scanner.last_doc_comment())
def p_package_2(p): '''package : PACKAGE name version LBRACE userTypes RBRACE''' no_comma(p[6]) p[0] = (sidlir.package, p[2], p[3], (p[5]), scanner.last_doc_comment())
def p_package_1(p): '''package : PACKAGE name LBRACE userTypes RBRACE''' no_comma(p[5]) p[0] = (sidlir.package, p[2], 'no version', (p[4]), scanner.last_doc_comment())