~nunit-core/nunitv2/2.5

« back to all changes in this revision

Viewing changes to src/GuiException/UiException/CSharpParser/LexToken.cs

  • Committer: charliepoole
  • Date: 2008-12-11 03:54:36 UTC
  • Revision ID: vcs-imports@canonical.com-20081211035436-thnyyjdctgmlxvot
Exception Browser - Initial Checkin

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// ----------------------------------------------------------------
 
2
// ExceptionBrowser
 
3
// Version 1.0.0
 
4
// Copyright 2008, Irénée HOTTIER,
 
5
// 
 
6
// This is free software licensed under the NUnit license, You may
 
7
// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
 
8
// ----------------------------------------------------------------
 
9
 
 
10
using System;
 
11
using System.Collections.Generic;
 
12
using System.Text;
 
13
 
 
14
namespace NUnit.UiException.CSharpParser
 
15
{
 
16
    /// <summary>
 
17
    /// This enum defines the list of all tags
 
18
    /// that can be assigned to a particular string.
 
19
    /// </summary>
 
20
    public enum LexerTag
 
21
    {
 
22
        /// <summary>
 
23
        /// All sequences but the ones below
 
24
        /// </summary>
 
25
        Text,
 
26
 
 
27
        /// <summary>
 
28
        /// White characters: ' ' \t \n
 
29
        /// and other separators like:
 
30
        ///     - '[' ']' '(' ')' ';'
 
31
        /// </summary>
 
32
        Separator,
 
33
 
 
34
        /// <summary>
 
35
        /// Char: \n
 
36
        /// </summary>
 
37
        EndOfLine,
 
38
 
 
39
        /// <summary>
 
40
        /// string: /*
 
41
        /// </summary>
 
42
        CommentC_Open,
 
43
 
 
44
        /// <summary>
 
45
        /// string: */
 
46
        /// </summary>
 
47
        CommentC_Close,
 
48
 
 
49
        /// <summary>
 
50
        /// string: //
 
51
        /// </summary>
 
52
        CommentCpp,
 
53
 
 
54
        /// <summary>
 
55
        /// Char: '
 
56
        /// </summary>
 
57
        SingleQuote,
 
58
 
 
59
        /// <summary>
 
60
        /// Char: "
 
61
        /// </summary>
 
62
        DoubleQuote
 
63
    }
 
64
 
 
65
    /// <summary>
 
66
    /// This class is used to make the link between a string and a LexerTag value.
 
67
    /// </summary>
 
68
    public class LexToken
 
69
    {
 
70
        /// <summary>
 
71
        /// The string in this token.
 
72
        /// </summary>
 
73
        protected string _text;
 
74
 
 
75
        /// <summary>
 
76
        /// The current tag.
 
77
        /// </summary>
 
78
        protected LexerTag _tag;
 
79
 
 
80
        /// <summary>
 
81
        /// The starting startingPosition.
 
82
        /// </summary>
 
83
        protected int _start;
 
84
 
 
85
        protected LexToken()
 
86
        {
 
87
            // nothing to do
 
88
        }
 
89
 
 
90
        /// <summary>
 
91
        /// Gets the string value.
 
92
        /// </summary>
 
93
        public string Text {
 
94
            get { return (_text); }
 
95
        }
 
96
 
 
97
        /// <summary>
 
98
        /// Gets the tag value
 
99
        /// </summary>
 
100
        public LexerTag Tag {
 
101
            get { return (_tag); }
 
102
        }
 
103
 
 
104
        /// <summary>
 
105
        /// Gets the starting startingPosition of the string.
 
106
        /// </summary>
 
107
        public int IndexStart {
 
108
            get { return (_start); }
 
109
        }
 
110
 
 
111
        public override bool Equals(object obj)
 
112
        {
 
113
            LexToken token;
 
114
 
 
115
            if (obj == null || !(obj is LexToken))
 
116
                return (false);
 
117
 
 
118
            token = (LexToken)obj;
 
119
 
 
120
            return (token.Text == Text &&
 
121
                    token.IndexStart == IndexStart &&
 
122
                    token.Tag == Tag);
 
123
        }
 
124
 
 
125
        public override int GetHashCode() {
 
126
            return base.GetHashCode();
 
127
        }
 
128
 
 
129
        public override string ToString()
 
130
        {
 
131
            return (String.Format("Token=([{0}], Index={1}, Tag={2})",
 
132
                Text, IndexStart, Tag));
 
133
        }
 
134
    }
 
135
}