示例#1
0
        internal static MathExpression FromTokens(StringToken[] tokens)
        {
            var reader = new StringTokenReader <StringToken>(tokens);

            ///TODO: Read math formula here

            return(null);
        }
示例#2
0
 void IStringTokenReaderHelper.ReportError(
     string str,
     int offset,
     Token token,
     string errorId)
 {
     StringTokenReader.ReportError(this._parser, str, offset, errorId);
 }
示例#3
0
 void IStringTokenReaderHelper.ReportMissingTerminator(
     string str,
     int startOffset,
     int errorOffset,
     string errorId,
     Token token,
     string terminator)
 {
     StringTokenReader.ReportMissingTerminator(this._parser, str, startOffset, errorOffset, errorId, terminator);
 }
        public static TokenReader BuildChainOfResponsibility()
        {
            CommentReader              commentReader              = new CommentReader();
            WhiteSpaceReader           whiteSpaceReader           = new WhiteSpaceReader();
            EqualityTokenReader        equalityTokenReader        = new EqualityTokenReader();
            SingleCharacterTokenReader singleCharacterTokenReader = new SingleCharacterTokenReader(Reserved.Characters);
            StringTokenReader          stringTokenReader          = new StringTokenReader();
            IdentifierTokenReader      identifierTokenReader      = new IdentifierTokenReader();
            NumberTokenReader          numberTokenReader          = new NumberTokenReader();

            commentReader.SetSuccessor(whiteSpaceReader);
            whiteSpaceReader.SetSuccessor(equalityTokenReader);
            equalityTokenReader.SetSuccessor(singleCharacterTokenReader);
            singleCharacterTokenReader.SetSuccessor(stringTokenReader);
            stringTokenReader.SetSuccessor(identifierTokenReader);
            identifierTokenReader.SetSuccessor(numberTokenReader);

            return(commentReader);
        }
示例#5
0
        internal override Token GetToken(string input, ref int offset)
        {
            if (offset >= input.Length)
            {
                return((Token)null);
            }
            char ch = input[offset];

            switch (ch)
            {
            case '$':
            case '@':
                int offset1 = offset + 1;
                if (offset1 >= input.Length)
                {
                    return((Token)null);
                }
                if (ch == '@' && input[offset1] == '{' || input[offset1] == '(')
                {
                    return((Token)null);
                }
                bool   inBraces = false;
                string text     = StringTokenReader.MatchVariableName(input, ref offset1, (IStringTokenReaderHelper)this.Tokenizer, (Token)null, out inBraces);
                if (string.IsNullOrEmpty(text))
                {
                    if (inBraces)
                    {
                        this._tokenizer.Parser.ReportException((object)null, typeof(ParseException), this._tokenizer.PositionToken(offset), "EmptyVariableReference");
                    }
                    return((Token)null);
                }
                if (offset1 < input.Length && this.Tokenizer.IsEnabled(8) && ":.[{}();,|&\r\n\t ".IndexOf(input[offset1]) == -1)
                {
                    return((Token)null);
                }
                offset = offset1;
                return(new Token(text, ch == '@' ? TokenId.SplattedVariableToken : TokenId.VariableToken));

            default:
                return((Token)null);
            }
        }