public ClassInfo(string Name, LiteEnv Env, SyntaxClassBodyStatementNode BodyNode, ClassInfo BaseClass) { this.Name_ = Name; this.BaseClass_ = BaseClass; this.Env_ = Env; this.Body_ = BodyNode; }
// class_block ::= "{" [ member ] { [ member ] } "}" private SyntaxClassBodyStatementNode ParseClassBodyNode() { if (!TokenStream_.TakeExpect(TokenType.Delimiter, "{", out Token Tok)) { ExitCode_ = new ExitUnexpectedSymbolCode(Tok); return(null); } var Node = new SyntaxClassBodyStatementNode(); if (TokenStream_.PeekExpect(TokenType.Delimiter, "}")) { TokenStream_.Take(); return(Node); } while (!TokenStream_.IsEnd()) { var Member = ParseClassMemberNode(); if (Member == null) { return(null); } Node.AddNode(Member); if (TokenStream_.PeekExpect(TokenType.Delimiter, "}")) { TokenStream_.Take(); return(Node); } } ExitCode_ = new ExitUnexpectedSymbolCode(Tok); return(null); }
public LiteValue Visit(SyntaxClassBodyStatementNode Node, LiteEnv Env) { var Val = LiteValue.Nil; foreach (var Child in Node.GetChildren()) { Val = Child.Accept(this, Env); if (Val.IsError()) { break; } } return(Val); }
public SyntaxClassNode(string ClassName, SyntaxClassBodyStatementNode BlockNode, SyntaxIdentifierNode BaseClassIdentNode) : base(BlockNode, BaseClassIdentNode) { ClassName_ = ClassName; }