예제 #1
0
 public ILangErrorToken(Source source, ILangErrorCode error, char current)
     : base(source)
 {
     TokenType = "error";
     Value = error;
     Text = current.ToString();
 }
예제 #2
0
        public void ParseList(Token token, ref ICodeNode parent, ILangTokenType terminator, ILangErrorCode error)
        {
            // As long as we are parseing neither endToken or terminating token
            // do this
            while (!(token is EndOfFileToken) && (token.TokenType.ToString() != terminator.ToString()))
            {
                ICodeNode statementNode = Parse(token);
                parent.AddChild(statementNode);

                // token have been moved; get the latest
                token = CurrentToken();

                if (token.TokenType == "semicolon")
                {
                    token = NextToken(); // move beyond the statement separator.
                }
                else if (token.TokenType == "identifier")
                {
                    ErrorHandler.Singleton.Flag(token, "missing_semicolon", this);
                }
                else if (token.TokenType != terminator)
                {
                    ErrorHandler.Singleton.Flag(token, "unexpected_token", this);
                    token = NextToken();
                }
            }

            if (token.TokenType == terminator)
            {
                token = NextToken();
            }
            else
            {
                ErrorHandler.Singleton.Flag(token, error, this);
            }
        }