IronLua.Compiler.Parser.Input.BufferRemove C# (CSharp) Method

BufferRemove() public method

public BufferRemove ( int length ) : void
length int
return void
        public void BufferRemove(int length)
        {
            buffer.Remove(buffer.Length - length, length);
        }

Same methods

Input::BufferRemove ( int start, int length ) : void

Usage Example

Example #1
0
        /* Long string literal, such as [[bla bla]] */
        Token LongStringLiteral()
        {
            input.StorePosition();
            input.BufferClear();

            int numEqualsStart = CountEquals();

            if (input.Current != '[')
            {
                throw new LuaSyntaxException(input, ExceptionMessage.INVALID_LONG_STRING_DELIMTER, input.Current);
            }

            // Skip immediately following newline
            if (input.Current == '\r' || input.Current == '\n')
            {
                NextLine();
            }

            while (true)
            {
                while (input.Current != ']')
                {
                    input.Advance();
                }

                input.Advance();
                int numEqualsEnd = CountEquals();

                // Output string if matching ='s found

                if (numEqualsStart == numEqualsEnd && input.Current == ']')
                {
                    // Trim long string delimters
                    input.BufferRemove(0, numEqualsStart);
                    input.BufferRemove(numEqualsEnd + 1);
                    input.Advance();
                    return(input.OutputBuffer(Symbol.String));
                }
                if (input.Current == ']')
                {
                    // Parse ']' again because it can be the start of another long string delimeter
                    input.Back();
                }
                else
                {
                    input.BufferAppend(input.Current);
                }
            }
        }