Parse() public method

public Parse ( Token token ) : ICodeNode
token Token
return ICodeNode
        public override ICodeNode Parse(Token token)
        {
            // Create the ASSIGN node.
            ICodeNode assignNode = ICodeFactory.CreateICodeNode(ICodeNodeTypeImplementation.ASSIGN);

            string targetName = token.text.ToLower();
            SymbolTableEntry targetID = symbolTableStack.Lookup(targetName);

            if (targetID == null)
                targetID = symbolTableStack.EnterLocal(targetName);

            targetID.AppendLineNumber(token.lineNumber);
            token = NextToken();

            ICodeNode variableNode = ICodeFactory.CreateICodeNode(ICodeNodeTypeImplementation.VARIABLE);
            variableNode.SetAttribute(ICodeKeyImplementation.ID, targetID);
            assignNode.AddChild(variableNode);

            if (token.type == PascalTokenType.COLON_EQUALS)
                token = NextToken();
            else
                errorHandler.flag(token, PascalErrorCode.MISSING_COLON_EQUALS, this);

            ExpressionParser expressionParser = new ExpressionParser(this);
            assignNode.AddChild(expressionParser.Parse(token));

            return assignNode;
        }
        public override ICodeNode Parse(Token token)
        {
            // Create the ASSIGN node.
            ICodeNode assignNode = ICodeFactory.CreateICodeNode(ICodeNodeTypeImplementation.ASSIGN);

            string           targetName = token.text.ToLower();
            SymbolTableEntry targetID   = symbolTableStack.Lookup(targetName);

            if (targetID == null)
            {
                targetID = symbolTableStack.EnterLocal(targetName);
            }

            targetID.AppendLineNumber(token.lineNumber);
            token = NextToken();

            ICodeNode variableNode = ICodeFactory.CreateICodeNode(ICodeNodeTypeImplementation.VARIABLE);

            variableNode.SetAttribute(ICodeKeyImplementation.ID, targetID);
            assignNode.AddChild(variableNode);

            if (token.type == PascalTokenType.COLON_EQUALS)
            {
                token = NextToken();
            }
            else
            {
                errorHandler.flag(token, PascalErrorCode.MISSING_COLON_EQUALS, this);
            }

            ExpressionParser expressionParser = new ExpressionParser(this);

            assignNode.AddChild(expressionParser.Parse(token));

            return(assignNode);
        }