Exemplo n.º 1
0
        // Token: 0x0600004D RID: 77 RVA: 0x000051D4 File Offset: 0x000033D4
        public static void ShowTokens(TextReader Input, TextWriter Output)
        {
            DTAParser dtaparser = new DTAParser(Input);

            for (;;)
            {
                DTAParserToken token = dtaparser.GetToken();
                if (token.Status == DTAParserStatus.EOF)
                {
                    break;
                }
                Output.WriteLine("Token Status: " + token.Status.ToString());
                Output.WriteLine("Token Type: " + token.Type.ToString());
                Output.WriteLine("Token Line: " + token.Line.ToString());
                Output.WriteLine("Token Position: " + token.Position.ToString());
                Output.WriteLine("Token Text: \"" + token.Text + "\"");
                Output.WriteLine();
            }
        }
Exemplo n.º 2
0
        // Token: 0x06000018 RID: 24 RVA: 0x00002E60 File Offset: 0x00001060
        private static DTBTreeItem ReadNode(DTAParser Parser, DTAParserStatus BreakAt)
        {
            DTAParserToken token = Parser.GetToken();

            if (token.Status == BreakAt)
            {
                return(null);
            }
            if (token.Status != DTAParserStatus.OK)
            {
                throw new DTBException(string.Concat(new string[]
                {
                    "Unexpected end character (at line ",
                    token.Line.ToString(),
                    ", position ",
                    token.Position.ToString(),
                    ")."
                }));
            }
            DTBType type = token.Type;

            switch (type)
            {
            case DTBType.Integer:
            {
                DTBTreeInteger dtbtreeInteger = new DTBTreeInteger();
                dtbtreeInteger.Type = token.Type;
                if (token.Text.StartsWith("0x") || token.Text.StartsWith("0X"))
                {
                    dtbtreeInteger.Integer = Convert.ToInt32(token.Text, 16);
                }
                else
                {
                    dtbtreeInteger.Integer = Convert.ToInt32(token.Text, 10);
                }
                return(dtbtreeInteger);
            }

            case DTBType.Float:
                return(new DTBTreeFloat
                {
                    Type = token.Type,
                    Float = Convert.ToSingle(token.Text, CultureInfo.InvariantCulture)
                });

            case DTBType.Variable:
            case DTBType.Keyword:
            case DTBType.String:
                return(new DTBTreeString
                {
                    Type = token.Type,
                    String = token.Text
                });

            case (DTBType)3:
            case (DTBType)4:
            case (DTBType)10:
            case (DTBType)11:
            case (DTBType)12:
            case (DTBType)13:
            case (DTBType)14:
            case (DTBType)15:
                goto IL_2F7;

            case DTBType.kDataUnhandled:
            case DTBType.Else:
            case DTBType.EndIf:
                return(new DTBTreeInteger
                {
                    Type = token.Type,
                    Integer = 0
                });

            case DTBType.IfDef:
                break;

            case DTBType.InnerNode:
            case DTBType.ScriptInnerNode:
            case DTBType.PropertyInnerNode:
            {
                DTBTreeInnerNode dtbtreeInnerNode = new DTBTreeInnerNode();
                DTAParserStatus  breakAt;
                switch (token.Type)
                {
                case DTBType.InnerNode:
                    breakAt = DTAParserStatus.InnerNodeEnd;
                    goto IL_2D0;

                case DTBType.ScriptInnerNode:
                    breakAt = DTAParserStatus.ScriptInnerNodeEnd;
                    goto IL_2D0;

                case DTBType.PropertyInnerNode:
                    breakAt = DTAParserStatus.PropertyInnerNodeEnd;
                    goto IL_2D0;
                }
                throw new DTBException("Internal error (DTA Reader: Unknown type).");
IL_2D0:
                dtbtreeInnerNode.Type       = token.Type;
                dtbtreeInnerNode.LineNumber = token.Line;
                DTAReader.ReadNodeList(dtbtreeInnerNode, Parser, breakAt);
                return(dtbtreeInnerNode);
            }

            default:
                switch (type)
                {
                case DTBType.Define:
                case DTBType.Include:
                case DTBType.Merge:
                case DTBType.IfNDef:
                    break;

                default:
                    goto IL_2F7;
                }
                break;
            }
            DTBTreeString  dtbtreeString = new DTBTreeString();
            DTAParserToken token2        = Parser.GetToken();

            if (token2.Status != DTAParserStatus.OK)
            {
                throw new DTBException(string.Concat(new string[]
                {
                    "Invalid format found in a macro declaration (at line ",
                    token.Line.ToString(),
                    ", position ",
                    token.Position.ToString(),
                    ")."
                }));
            }
            if (token2.Type != DTBType.Keyword)
            {
                throw new DTBException(string.Concat(new string[]
                {
                    "Macro name not followed by a keyword (at line ",
                    token.Line.ToString(),
                    ", position ",
                    token.Position.ToString(),
                    ")."
                }));
            }
            dtbtreeString.Type   = token.Type;
            dtbtreeString.String = token2.Text;
            return(dtbtreeString);

IL_2F7:
            throw new DTBException("Unknown type \"" + token.Type.ToString() + "\"");
        }
Exemplo n.º 3
0
        // Token: 0x06000055 RID: 85 RVA: 0x000052F8 File Offset: 0x000034F8
        public DTAParserToken GetToken()
        {
            DTAParserToken dtaparserToken = new DTAParserToken();

            for (;;)
            {
                if (this.IsEndOfLine())
                {
                    if (!this.GetNextLine())
                    {
                        break;
                    }
                }
                else if (char.IsWhiteSpace(this.Line[this.LinePos]))
                {
                    this.LinePos++;
                }
                else
                {
                    char c = this.Line[this.LinePos];
                    if (c <= ';')
                    {
                        switch (c)
                        {
                        case '"':
                        case '\'':
                            goto IL_1B7;

                        case '#':
                        case '%':
                        case '&':
                            break;

                        case '$':
                            goto IL_22D;

                        case '(':
                        case ')':
                            goto IL_D4;

                        default:
                            if (c == ';')
                            {
                                if (!this.GetNextLine())
                                {
                                    goto Block_9;
                                }
                                continue;
                            }
                            break;
                        }
                    }
                    else
                    {
                        switch (c)
                        {
                        case '[':
                        case ']':
                            goto IL_D4;

                        case '\\':
                            break;

                        default:
                            switch (c)
                            {
                            case '{':
                            case '}':
                                goto IL_D4;
                            }
                            break;
                        }
                    }
                    dtaparserToken.Line     = this.LineCount;
                    dtaparserToken.Position = this.LinePos;
                    dtaparserToken.Text     = this.GetSimpleKeywordToken();
                    if (!(dtaparserToken.Text == ""))
                    {
                        goto Block_15;
                    }
                }
            }
            dtaparserToken.Status = DTAParserStatus.EOF;
            return(dtaparserToken);

Block_9:
            dtaparserToken.Status = DTAParserStatus.EOF;
            return(dtaparserToken);

IL_D4:
            char c2 = this.Line[this.LinePos];

            switch (c2)
            {
            case '(':
                dtaparserToken.Type = DTBType.InnerNode;
                break;

            case ')':
                dtaparserToken.Status = DTAParserStatus.InnerNodeEnd;
                dtaparserToken.Type   = DTBType.InnerNode;
                break;

            default:
                switch (c2)
                {
                case '[':
                    dtaparserToken.Type = DTBType.PropertyInnerNode;
                    break;

                case '\\':
                    break;

                case ']':
                    dtaparserToken.Status = DTAParserStatus.PropertyInnerNodeEnd;
                    dtaparserToken.Type   = DTBType.PropertyInnerNode;
                    break;

                default:
                    switch (c2)
                    {
                    case '{':
                        dtaparserToken.Type = DTBType.ScriptInnerNode;
                        break;

                    case '}':
                        dtaparserToken.Status = DTAParserStatus.ScriptInnerNodeEnd;
                        dtaparserToken.Type   = DTBType.ScriptInnerNode;
                        break;
                    }
                    break;
                }
                break;
            }
            dtaparserToken.Line     = this.LineCount;
            dtaparserToken.Position = this.LinePos;
            dtaparserToken.Text     = this.Line[this.LinePos++].ToString();
            return(dtaparserToken);

IL_1B7:
            char c3 = this.Line[this.LinePos];

            if (c3 != '"')
            {
                if (c3 == '\'')
                {
                    dtaparserToken.Type = DTBType.Keyword;
                }
            }
            else
            {
                dtaparserToken.Type = DTBType.String;
            }
            dtaparserToken.Line     = this.LineCount;
            dtaparserToken.Position = this.LinePos;
            dtaparserToken.Text     = this.GetStringToken(this.Line[this.LinePos++]);
            return(dtaparserToken);

IL_22D:
            dtaparserToken.Type     = DTBType.Variable;
            dtaparserToken.Line     = this.LineCount;
            dtaparserToken.Position = this.LinePos;
            this.LinePos++;
            dtaparserToken.Text = this.GetSimpleKeywordToken();
            return(dtaparserToken);

Block_15:
            dtaparserToken.Type = this.GetSimpleKeywordTokenType(dtaparserToken.Text);
            return(dtaparserToken);
        }