Example #1
0
        private void TexArgumentMode(char x)
        {
            // _texCommandFlag == false
            // _texArgumentFlag == true
            // _supOrSubFlag == true or false
            // _primeFlag == false
            if (_texCommandFlag)
            {
                throw new InvalidOperationException("_texCommandFlag == false でないのにTexArgumentModeに来るのはおかしい");
            }
            if (!_texArgumentFlag)
            {
                throw new InvalidOperationException("_texArgumentFlag == true でないのにTexArgumentModeに来るのはおかしい");
            }
            if (_primeFlag)
            {
                throw new InvalidOperationException("_primeFlag == false でないのにTexArgumentModeに来るのはおかしい");
            }

            if (_temp.Length == 1)
            {
                if (x >= '0' && x <= '9')
                {
                    _temp.Append(x);
                    _origin.Append(x);
                }
                else
                {
                    throw new InvalidOperationException("# の直後は数字でなければなりません。");
                }
            }
            else if (x.AllowedCharacter())
            {
                _texArgumentFlag = false;
                _temp.Append(x);
                _origin.Append(x);
                AddToken(_temp.ToString(), _supOrSubFlag);
            }
            else
            {
                _texArgumentFlag = false;
                AddToken(_temp.ToString(), _supOrSubFlag);
                TextMode(x);
            }
        }