private InterfaceDeclaringNode InterfaceDeclaring() { InterfaceDeclaringNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; Accept(Token.TokenType.Interface); IdentifierNode itsName = new IdentifierNode(_currentToken); Accept(Token.TokenType.Identifier); Accept(Token.TokenType.LeftBrace); DeclaringSequenceNode itsInterfaceMethodDeclarings = InterfaceMethods(); Accept(Token.TokenType.RightBrace); itsAST = new InterfaceDeclaringNode(itsName, itsInterfaceMethodDeclarings, itsPos); return(itsAST); }
private DeclaringSequenceNode ParseMethodDeclarings() { DeclaringSequenceNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; DeclaringNode itsMethod = ParseMethodDeclaring(); if (_currentToken.Type == Token.TokenType.Method) { DeclaringSequenceNode itsNextMethods = ParseMethodDeclarings(); itsAST = new MultipleDeclaringSequenceNode(itsMethod, itsNextMethods, itsPos); } else { itsAST = new SingleDeclaringSequenceNode(itsMethod, itsPos); } return(itsAST); }
private DeclaringSequenceNode ParseVariableDeclarings() { DeclaringSequenceNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; DeclaringNode itsVar = ParseVariableDeclaring(); if (_currentToken.Type == Token.TokenType.Var) { DeclaringSequenceNode itsNextVars = ParseVariableDeclarings(); itsAST = new MultipleDeclaringSequenceNode(itsVar, itsNextVars, itsPos); } else { itsAST = new SingleDeclaringSequenceNode(itsVar, itsPos); } return(itsAST); }
private DeclaringSequenceNode ParseImplements() { DeclaringSequenceNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; DeclaringNode itsImplement = ParseImplement(); if (_currentToken.Type == Token.TokenType.Comma) { Accept(Token.TokenType.Comma); DeclaringSequenceNode itsNextImplements = ParseImplements(); itsAST = new MultipleDeclaringSequenceNode(itsImplement, itsNextImplements, itsPos); } else { itsAST = new SingleDeclaringSequenceNode(itsImplement, itsPos); } return(itsAST); }
private ClassDeclaringNode ClassDeclaring() { ClassDeclaringNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; Accept(Token.TokenType.Class); IdentifierNode itsName = new IdentifierNode(_currentToken); Accept(Token.TokenType.Identifier); DeclaringSequenceNode itsImplements = Implements(); Accept(Token.TokenType.LeftBrace); DeclaringSequenceNode itsVars = VariableDeclarings(); DeclaringNode itsConstructor = ConstructorDeclaring(); DeclaringSequenceNode itsMethods = MethodDeclarings(); Accept(Token.TokenType.RightBrace); itsAST = new ClassDeclaringNode(itsName, itsImplements, itsVars, itsConstructor, itsMethods, itsPos); return(itsAST); }
private ConstructorDeclaringNode ConstructorDeclaring() { ConstructorDeclaringNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; Accept(Token.TokenType.Constructor); IdentifierNode itsName = new IdentifierNode(_currentToken); TypeNode itsType = new ClassTypeNode(itsName, itsPos); Accept(Token.TokenType.Identifier); Accept(Token.TokenType.LeftParen); ParameterSequenceNode itsParams = Parameters(); Accept(Token.TokenType.RightParen); Accept(Token.TokenType.LeftBrace); DeclaringSequenceNode itsVars = VariableDeclarings(); ActionSequenceNode itsActions = ActionStatements(); Accept(Token.TokenType.RightBrace); itsAST = new ConstructorDeclaringNode(itsName, itsType, itsParams, itsVars, itsActions, itsPos); return(itsAST); }
private MethodDeclaringNode ParseMethodDeclaring() { MethodDeclaringNode itsAST; SourceCodePosition itsPos = _currentToken.SourcePosition; Accept(Token.TokenType.Method); TypeNode itsType = ReturnType(); IdentifierNode itsName = new IdentifierNode(_currentToken); Accept(Token.TokenType.Identifier); Accept(Token.TokenType.LeftParen); ParameterSequenceNode itsParams = Parameters(); Accept(Token.TokenType.RightParen); Accept(Token.TokenType.LeftBrace); DeclaringSequenceNode itsVars = VariableDeclarings(); ActionSequenceNode itsActions = ActionStatements(); ReturnActionNode itsReturn = ReturnStatement(); Accept(Token.TokenType.RightBrace); itsAST = new MethodDeclaringNode(itsName, itsType, itsParams, itsVars, itsActions, itsReturn, itsPos); return(itsAST); }
public ProgramNode(DeclaringSequenceNode declarings, SourceCodePosition pos) : base(pos) { Declarings = declarings; }