Mercurial > pub > ImplabNet
diff Implab/JSON/JSONScanner.cs @ 60:10c7337d29e7
+JSONXmlReaderOptions
*JSONScanner: fixed reading from TextReader
*code cleanup
author | cin |
---|---|
date | Thu, 19 Jun 2014 03:41:28 +0400 |
parents | c0bf853aa04f |
children | 130781364799 |
line wrap: on
line diff
--- a/Implab/JSON/JSONScanner.cs Wed Jun 18 03:54:02 2014 +0400 +++ b/Implab/JSON/JSONScanner.cs Thu Jun 19 03:41:28 2014 +0400 @@ -8,13 +8,16 @@ namespace Implab.JSON { /// <summary> - /// Сканнер, разбивающий поток символов на токены JSON. + /// Сканнер (лексер), разбивающий поток символов на токены JSON. /// </summary> public class JSONScanner : Scanner { char[] m_stringBuffer; DFAStateDescriptior[] m_stringDFA; int[] m_stringAlphabet; + /// <summary> + /// Создает новый экземпляр сканнера + /// </summary> public JSONScanner() : base(JSONGrammar.Instance.JsonDFA) { m_stringBuffer = new char[1024]; @@ -23,6 +26,14 @@ m_stringDFA = dfa.States; } + /// <summary> + /// Читает следующий лексический элемент из входных данных. + /// </summary> + /// <param name="tokenValue">Возвращает значение прочитанного токена.</param> + /// <param name="tokenType">Возвращает тип прочитанного токена.</param> + /// <returns><c>true</c> - чтение произведено успешно. <c>false</c> - достигнут конец входных данных</returns> + /// <remarks>В случе если токен не распознается, возникает исключение. Значения токенов обрабатываются, т.е. + /// в строках обрабатываются экранированные символы, числа становтся типа double.</remarks> public bool ReadToken(out object tokenValue, out JsonTokenType tokenType) { if (ReadTokenInternal()) { switch ((JSONGrammar.TokenType)m_currentState.tag[0]) {