public override void Accept (InterfaceDeclaration contractDecl) { IodineInterface contract = new IodineInterface (contractDecl.Name); foreach (AstNode node in contractDecl.Children) { FunctionDeclaration decl = node as FunctionDeclaration; contract.AddMethod (new IodineMethod (methodBuilder.Module, decl.Name, decl.InstanceMethod, decl.Parameters.Count, 0)); } methodBuilder.EmitInstruction (contractDecl.Location, Opcode.LoadConst, methodBuilder.Module.DefineConstant (contract)); methodBuilder.EmitInstruction (contractDecl.Location, Opcode.StoreLocal, symbolTable.GetSymbol (contractDecl.Name).Index); }
private static AstNode ParseInterface(TokenStream stream) { stream.Expect (TokenClass.Keyword, "interface"); string name = stream.Expect (TokenClass.Identifier).Value; InterfaceDeclaration contract = new InterfaceDeclaration (stream.Location, name); stream.Expect (TokenClass.OpenBrace); while (!stream.Match (TokenClass.CloseBrace)) { if (stream.Match (TokenClass.Keyword, "func")) { FunctionDeclaration func = ParseFunction (stream, true) as FunctionDeclaration; contract.Add (func); } else { stream.ErrorLog.AddError (ErrorType.ParserError, stream.Location, "Interface may only contain function prototypes!"); } while (stream.Accept (TokenClass.SemiColon)); } stream.Expect (TokenClass.CloseBrace); return contract; }
public void Accept(InterfaceDeclaration contractDecl) { IodineInterface contract = new IodineInterface (contractDecl.Name); foreach (AstNode node in contractDecl.Children) { FunctionDeclaration decl = node as FunctionDeclaration; contract.AddMethod (new IodineMethod (module, decl.Name, decl.InstanceMethod, decl.Parameters.Count, 0)); } module.SetAttribute (contractDecl.Name, contract); }
public override void Accept (InterfaceDeclaration contractDecl) { errorLog.AddError (ErrorType.ParserError, contractDecl.Location, "statement can not exist inside pattern!"); }
public virtual void Accept(InterfaceDeclaration interfaceDecl) { }
public void Accept(InterfaceDeclaration interfaceDecl) { symbolTable.AddSymbol (interfaceDecl.Name); }
public void Accept(InterfaceDeclaration contractDecl) { }