Antlr4.StringTemplate.Misc.Utility.GetLineCharPosition C# (CSharp) Method

GetLineCharPosition() public static method

public static GetLineCharPosition ( string s, int index ) : Antlr4.StringTemplate.Misc.Coordinate
s string
index int
return Antlr4.StringTemplate.Misc.Coordinate
        public static Coordinate GetLineCharPosition(string s, int index)
        {
            int line = 1;
            int charPos = 0;
            int p = 0;
            while (p < index)
            {
                // don't care about s[index] itself; count before
                if (s[p] == '\n')
                {
                    line++;
                    charPos = 0;
                }
                else
                {
                    charPos++;
                }

                p++;
            }

            return new Coordinate(line, charPos);
        }

Usage Example

Beispiel #1
0
        /** Given an ip (code location), get it's range in source template then
         *  return it's template line:col.
         */
        public virtual string GetSourceLocation()
        {
            Interval interval = SourceInterval;

            if (interval == null)
            {
                return(null);
            }

            // get left edge and get line/col
            int        i   = interval.Start;
            Coordinate loc = Utility.GetLineCharPosition(Self.impl.Template, i);

            return(loc.ToString());
        }