Exemplo n.º 1
0
 private void ClearParseData()
 {
     ApiDictionary1 = null;
     ParseStatus1   = new ParseStatus();
     ApiDictionary2 = null;
     ParseStatus2   = new ParseStatus();
 }
Exemplo n.º 2
0
 public ParseResult(ParseStatus theParseStatus, ParseTree theParseTree)
 {
     Errors = new List <string>();
     Status = theParseStatus;
     Tree   = theParseTree;
     Root   = (T)theParseTree.Root.AstNode;
 }
    public zOSCMessage(byte[] sourceBuff, int startindex = 0)
    {
        UnityEngine.Debug.Log("Datratlen " + sourceBuff.Length);
        data             = sourceBuff;
        timeStamp        = DateTime.UtcNow.Ticks;
        objects          = null;
        parseStatus      = ParseStatus.raw;
        payloadOffsets   = null;
        typetagOffset    = 0;
        payloadOffset    = 0;
        _addressSegments = null;         // new List<string>();
        UnityEngine.Debug.Log("soruce " + data.ByteArrayToStringAsHex());
        OSCWordReader reader = new OSCWordReader();

        _address = data.UnpackString(reader);
        types    = null;
        // UnityEngine.Debug.Log("found address " + _address + " pos is now " + reader.readIndex);

        UnityEngine.Debug.Log("after alignment " + reader.readIndex);
        typetagOffset = reader.readIndex;
        //
        types = this.UnpackTypeTag(reader);
        //	reader.Align(data);
        // payloadOffset = reader.readIndex;
        UnityEngine.Debug.Log("found type count = " + typetagOffset + "  payloadOffset= " + payloadOffset + " types.count=" + types.Count);
        // //
        // //FindAddressesAndTypeTagIndex();
    }
Exemplo n.º 4
0
        // to build the roulette matrix
        public List <double> ComputeRouletteMatrix(Session session)
        {
            ParseStatus   current_parsestatus = session.parse_status;
            List <double> transition_row      = transition_matrix[parsestatus2int[current_parsestatus]];

            foreach (var item in session.is_considerd)
            {
                if (item.Value)
                {
                    ParseStatus reset_parsestatus = item.Key;
                    transition_row[parsestatus2int[reset_parsestatus]] = 0;
                }
            }
            List <double> roulette_row = new List <double>();
            double        sum          = 0;

            for (int j = 0; j < transition_matrix.Count; j++)
            {
                sum += transition_row[j];
            }
            roulette_row.Add(transition_row[0] / sum);
            for (int j = 1; j < transition_matrix.Count; j++)
            {
                roulette_row.Add(roulette_row[j - 1] + (transition_row[j] / sum));
            }
            return(roulette_row);
        }
 /// <summary>
 /// EnsureExists_ParseStatus - we want to make sure our respective ParseStatus item exists, but NOT refresh it.
 /// </summary>
 /// <param name="targetFile"></param>
 public static void EnsureExists(string targetFile)
 {
     lock (_synchronizationParseStatus)
     {
         if (!ParseStatus.ContainsKey(targetFile))
         {
             Init(targetFile);
         }
     }
 }
Exemplo n.º 6
0
        ResumeParsing(XMLParser *parser, ReadBuffer read, out XMLError error)
        {
            ParseStatus parseStatus = ParseStatus.Finished;

            if (!ResumeParsingBuffer(parser, ref parseStatus, out error))
            {
                parseStatus = Parse(parser, read, out error);
            }
            return(parseStatus);
        }
Exemplo n.º 7
0
        /// <summary>
        ///     Either HTTPRequest contains the header AND some data, or it contains part or all of the header. Accumulate pieces
        ///     of the header in case it spans multiple reads.
        /// </summary>
        /// <param name="requestChunk"></param>
        /// <returns></returns>
        public ParseStatus Append(string requestChunk)
        {
            if (headerStatus == ParseStatus.COMPLETE_HEADER && this.ContentComplete)
            {
                // restart with empty header and see if it works
                headerStatus = ParseStatus.UNINITIALIZED;
                DataString   = "";
                headerSoFar  = "";
                headerFields.Clear();
            }

            if (headerStatus != ParseStatus.COMPLETE_HEADER)
            {
                int betweenHeaderAndData = requestChunk.IndexOf("\r\n\r\n");        // AKo: Fix this: Parsing has to be changed, packet could be split at newline boundaries.
                if (betweenHeaderAndData > 0)
                {
                    headerStatus = ParseStatus.COMPLETE_HEADER;

                    //found the boundary between header and data
                    headerSoFar += requestChunk.Substring(0, betweenHeaderAndData);
                    ParseHeader(headerSoFar);

                    //shorten the request so we can fall through
                    requestChunk = requestChunk.Substring(betweenHeaderAndData + 4);

                    if (ContentComplete)
                    {
                        return(headerStatus);
                    }

                    //
                    // FALL THROUGH to header complete case
                    //
                }
                else
                {
                    headerSoFar += requestChunk;
                    headerStatus = ParseStatus.PARTIAL_HEADER;
                    ParseHeader(headerSoFar);
                    return(headerStatus);
                }
            }

            if (headerStatus == ParseStatus.COMPLETE_HEADER)
            {
                DataString += requestChunk;             // AKo: Fix this: remaining chunk is appended no matter if it is longer than the remaining content-length
                if (ContentComplete)
                {
                    logger.LogDebug("DONE READING CONTENT: {0}", DataString);
                }
            }

            return(headerStatus);
        }
Exemplo n.º 8
0
        ExternalEntityRefHandlerImpl(XMLParser *parser,
                                     char *context,
                                     char *baseUri,
                                     char *systemId,
                                     char *publicId)
        {
            int result = (int)XMLStatus.OK;

            GCHandle parserHandle = (GCHandle)LibExpat.XMLGetUserData(parser);
            X        expatParser  = (X)parserHandle.Target;

            E      newEntityContext = expatParser.freeEntityContext; // should always be != null
            string encoding;

            try {
                if (!newEntityContext.Open(context, baseUri, systemId, publicId, out encoding))
                {
                    return(result);
                }
            }
            catch (Exception e) {
                expatParser.error = e;
                result            = (int)XMLStatus.ERROR;
                return(result);
            }

            expatParser.PushChildEntityParseContext(parser, context, encoding);

            ParseStatus status = ExpatUtils.Parse(
                newEntityContext.XmlParser, newEntityContext.Read, out newEntityContext.error);

            switch (status)
            {
            case ParseStatus.Finished:
                expatParser.PopChildEntityParseContext();
                break;

            case ParseStatus.Suspended:
                // must suspend parent parser as well - don't check return value
                LibExpat.XMLStopParser(parser, XMLBool.TRUE);
                break;

            case ParseStatus.FatalError:
                result = (int)XMLStatus.ERROR;
                break;

            case ParseStatus.Aborted:
                // must abort parent parser as well - don't check return value
                LibExpat.XMLStopParser(parser, XMLBool.FALSE);
                break;
            }
            return(result);
        }
Exemplo n.º 9
0
        /// <summary>
        ///     Either HTTPRequest contains the header AND some data, or it contains part or all of the header. Accumulate pieces
        ///     of the header in case it spans multiple reads.
        /// </summary>
        /// <param name="HTTPRequest"></param>
        /// <returns></returns>
        public ParseStatus Append(string HTTPRequest)
        {
            if (headerStatus != ParseStatus.COMPLETE_HEADER)
            {
                int betweenHeaderAndData = HTTPRequest.IndexOf("\r\n\r\n");
                if (betweenHeaderAndData > 0)
                {
                    headerStatus = ParseStatus.COMPLETE_HEADER;

                    //found the boundary between header and data
                    headerSoFar += HTTPRequest.Substring(0, betweenHeaderAndData);
                    ParseHeader(headerSoFar);

                    //shorten the request so we can fall through
                    HTTPRequest = HTTPRequest.Substring(betweenHeaderAndData + 4);

                    //
                    // FALL THROUGH to header complete case
                    //
                }
                else
                {
                    headerSoFar += HTTPRequest;
                    headerStatus = ParseStatus.PARTIAL_HEADER;
                    ParseHeader(headerSoFar);
                    return(headerStatus);
                }
            }

            if (headerStatus == ParseStatus.COMPLETE_HEADER)
            {
                if (ContentComplete)
                {
                    //this isn't right... restart with empty header and see if it works
                    headerStatus = ParseStatus.UNINITIALIZED;
                    Data         = new byte[0];
                    DataString   = "";
                    headerSoFar  = "";
                    headerFields.Clear();
                    return(Append(HTTPRequest));
                }

                DataString += HTTPRequest;
                if (ContentComplete)
                {
                    Data = Encoding.ASCII.GetBytes(DataString);
                    logger.LogDebug("DONE READING CONTENT");
                }
            }

            return(headerStatus);
        }
Exemplo n.º 10
0
        /**
         * Resets the Builder to match the provided IETF BCP 47
         * language tag.  Discards the existing state.  Null and the
         * empty string cause the builder to be reset, like {@link
         * #clear}.  Grandfathered tags (see {@link
         * UCultureInfo.GetCultureInfoByIetfLanguageTag(string)}) are converted to their canonical
         * form before being processed.  Otherwise, the language tag
         * must be well-formed (see {@link UCultureInfo}) or an exception is
         * thrown (unlike <code>UCultureInfo.GetCultureInfoByIetfLanguageTag(string)</code>, which
         * just discards ill-formed and following portions of the
         * tag).
         *
         * @param languageTag the language tag
         * @return This builder.
         * @throws IllformedLocaleException if <code>languageTag</code> is ill-formed
         * @see UCultureInfo.GetCultureInfoByIetfLanguageTag(string)
         *
         * @stable ICU 4.2
         */
        public UCultureInfoBuilder SetLanguageTag(string languageTag)
        {
            ParseStatus sts = new ParseStatus();
            LanguageTag tag = LanguageTag.Parse(languageTag, sts);

            if (sts.IsError)
            {
                throw new IllformedLocaleException(sts.ErrorMessage, sts.ErrorIndex);
            }
            _locbld.SetLanguageTag(tag);

            return(this);
        }
Exemplo n.º 11
0
 public zOSCMessage(string address)
 {
     _address         = address;
     timeStamp        = DateTime.UtcNow.Ticks;
     parseStatus      = ParseStatus.adressKnown;
     _addressSegments = null;         // new List<string>(address.Split('/'));
     types            = new List <System.Type>();
     payloadOffsets   = null;
     objects          = null;
     data             = null;
     typetagOffset    = 0;
     payloadOffset    = 0;
 }
Exemplo n.º 12
0
 /// <summary>
 /// Init  - we want to make sure the ParseStatus for this file is freshly initialized (e.g. when opening / re-opening a file)
 /// </summary>
 /// <param name="targetFile"></param>
 public static void Init(string targetFile)
 {
     lock (_synchronizationParseStatus)
     {
         if (!ParseStatus.ContainsKey(targetFile))
         {
             ParseStatus.Add(targetFile, new ParseAttribute());
         }
         else
         {
             ParseStatus[targetFile] = new ParseAttribute();
         }
     }
 }
Exemplo n.º 13
0
        public static string StatusCode(ParseStatus status)
        {
            switch (status)
            {
            case ParseStatus.Error:
                return("ERR");

            case ParseStatus.Illegible:
                return("ILL");

            default:
                return(string.Empty);
            }
        }
Exemplo n.º 14
0
            public static void ParseFailed(ParseStatus status)
            {
                switch (status)
                {
                case ParseStatus.NullInput:
                    throw new ArgumentNullException("input");

                case ParseStatus.InvalidFormat:
                    throw new FormatException(
                              $"The value represented in the string is lower than {MinValue} or higher than {MaxValue}");

                case ParseStatus.Overflow:
                    throw new OverflowException();
                }
            }
Exemplo n.º 15
0
        private static void TestTranstionStatus()
        {
            Session       session = new Session();
            DialogManager dm      = new DialogManager();

            session.is_considerd[ParseStatus.Artist] = true;
            ParseStatus res = dm.GetTransitionStatus(session);

            Console.WriteLine(res.ToString());

            session = new Session();
            dm      = new DialogManager();
            session.is_considerd[ParseStatus.PublishDate] = true;
            res = dm.GetTransitionStatus(session);
            Console.WriteLine(res.ToString());
        }
Exemplo n.º 16
0
        public static Object Parse(byte[] buffer)
        {
            ParseStatus status = new ParseStatus();

            status.data = buffer;
            status.pos  = 0;
            object root = Parse(ref status);

            if (status.error)
            {
                return(null);
            }
            else
            {
                return(root as MicroJson.Object);
            }
        }
Exemplo n.º 17
0
        ResumeParsingBuffer(XMLParser *parser, ref ParseStatus parseStatus, out XMLError error)
        {
            bool      result = true;
            XMLStatus status = LibExpat.XMLResumeParser(parser);

            switch (status)
            {
            case XMLStatus.OK:
                error = XMLError.NONE;
                XMLParsingStatus pStatus;
                LibExpat.XMLGetParsingStatus(parser, out pStatus);
                if (pStatus.FinalBuffer == XMLBool.FALSE)
                {
                    result = false;
                }
                else
                {
                    parseStatus = ParseStatus.Finished;
                }
                break;

            case XMLStatus.ERROR:
                error = LibExpat.XMLGetErrorCode(parser);
                if (error == XMLError.ABORTED)
                {
                    parseStatus = ParseStatus.Aborted;
                }
                else
                {
                    parseStatus = ParseStatus.FatalError;
                }
                break;

            case XMLStatus.SUSPENDED:
                error       = XMLError.NONE;
                parseStatus = ParseStatus.Suspended;
                break;

            default:
                error = XMLError.NONE;
                break;
            }
            return(result);
        }
Exemplo n.º 18
0
        public static string AnswerIt(List <string> answer_entity, Session session, ParseStatus to)
        {
            int    from_status        = DialogManager.parsestatus2int[session.parse_status];
            int    to_status          = DialogManager.parsestatus2int[to];
            string entity_in_question = "";

            switch (DialogManager.int2parsestatus[from_status])
            {
            case ParseStatus.All:
                entity_in_question = string.Join("、 ", session.carried_artist.ToArray());
                break;

            case ParseStatus.Artist:
                entity_in_question = string.Join("、 ", session.carried_artist.ToArray());
                break;

            case ParseStatus.Director:
                entity_in_question = string.Join("、 ", session.carried_director.ToArray());
                break;

            case ParseStatus.Country:
                entity_in_question = string.Join("、 ", session.carried_country.ToArray());
                break;

            case ParseStatus.Genre:
                entity_in_question = string.Join("、 ", session.carried_genre.ToArray());
                break;

            case ParseStatus.PublishDate:
                int carried_start_data = session.carried_publishdate.from;
                int data_interface     = int.Parse(DateTime.Now.AddMonths(-18).ToString("yyyyMMdd"));
                entity_in_question = carried_start_data > data_interface ? "最近" : "过去";
                break;

            default:
                Utils.WriteError("error turn status!");
                break;
            }
            string answer = string.Format(relation_matrix[from_status, to_status], entity_in_question, string.Join("、 ", answer_entity.ToArray()));

            return(answer);
        }
Exemplo n.º 19
0
        private void Parse(string[] rawText)
        {
            Value    = string.Empty;
            Checksum = 0;

            try
            {
                for (int i = 0; i < 25; i += 3)
                {
                    var digitText = string.Empty;
                    for (int j = 0; j < 3; j++)
                    {
                        digitText = digitText + rawText[j].Substring(i, 3);
                    }
                    Value = Value + Digit.Parse(digitText);
                }

                if (Value.Contains("?"))
                {
                    Status = ParseStatus.Illegible;
                    return;
                }

                Checksum = CalculateChecksum(Value);

                if (Checksum != 0)
                {
                    Status = ParseStatus.Error;
                }
                else
                {
                    Status = ParseStatus.Success;
                }
            }
            catch
            {
                Status = ParseStatus.Error;
            }
        }
Exemplo n.º 20
0
        public TokenizerArgument(string input, int index, ParseStatus status, StringCollection output)
        {
            if (input.IsNullOrWhiteSpace())
            {
                throw new ArgumentException(nameof(input));
            }

            if (index < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }

            if (output == null)
            {
                output = new StringCollection();
            }

            Input  = input;
            Index  = index;
            Status = status;
            Output = output;
        }
Exemplo n.º 21
0
        public ParseStatus Parse(IList<string> args, object argumentContainer)
        {
            if (args == null)
                throw new ArgumentNullException("args");
            if(argumentContainer == null)
                throw new ArgumentNullException("argumentContainer");

            ParseStatus result = new ParseStatus{ Succeeded = true };

            try
            {
                // Get schema

                // Validate schema

                // Parse input

                // Map input to schema

                // Handle errors

                // Return status
            }
            catch (SchemaException ex)
            {
                result.Succeeded = false;
                result.Errors.Add(ex.Message);
            }
            catch (ParsingException ex)
            {
                result.Succeeded = false;
                result.Errors.Add(ex.Message);
            }

            return result;
        }
Exemplo n.º 22
0
        private void ParseData()
        {
            int byteCount = serialPort.BytesToRead;
            uint val,payloadLength;
            Byte tempByte;

            points.Clear();
            parseStep = ParseStatus.idle;       //reset
            while (byteCount > 0)
            {
                switch (parseStep)
                {
                    case ParseStatus.idle:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        if (tempByte == 0xFF)
                        {
                            parseStep = ParseStatus.header2;
                            //debugText.Text += "Hi";
                        }
                        break;

                    case ParseStatus.header2:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        if (tempByte== 0xFE)
                            parseStep = ParseStatus.type;
                        else
                            parseStep = ParseStatus.idle;   //reset
                        break;

            /*                    case ParseStatus.length:
                        try
                        {
                            payloadLength = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        parseStep = ParseStatus.type;
                        break;
            */

                    case ParseStatus.type:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        switch (tempByte)
                        {
                            case 0x02:
                                //Alerts
                                //parseStep = ParseStatus.alert;
                                parseStep = ParseStatus.idle;   //debug - no alerts
                                break;
                            case 0x03:
                                //Continious Data
                                //parseStep = ParseStatus.contData_subtype;
                                parseStep = ParseStatus.contDataPayload;
                                break;
                            case 0x04:
                                //one-shot data
                                parseStep = ParseStatus.singleData_subtype;
                                break;
                            default:
                                parseStep = ParseStatus.idle;   //reset
                                break;
                        }
                        break;

                    case ParseStatus.alert:
                        //debugText.Text += "Alert!\n";
                        showFall();
                        parseStep = ParseStatus.idle;       //reset
                        break;

                    case ParseStatus.contData_subtype:
                        parseStep = ParseStatus.idle;       //reset
                        break;

                    case ParseStatus.contDataPayload:
                        try
                        {
                            val = (uint)serialPort.ReadByte();
                            val = val * 256 + (uint)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        points.Add(val);    //add to PPG value list
                        try
                        {
                            AccelerometerData((double)((int)serialPort.ReadByte() - 128) / 64.0, (double)((int)serialPort.ReadByte() - 128) / 64.0, (double)((int)serialPort.ReadByte() - 128) / 64.0);
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount-=5;
                        //debugText.Text +=val +"\n";

                        parseStep = ParseStatus.idle;       //reset
                        break;

                    case ParseStatus.singleData_subtype:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        switch (tempByte)
                        {
                            case 0x00:
                                try
                                {
                                    tempByte = (Byte)serialPort.ReadByte();
                                }
                                catch (Exception)
                                {
                                    parseStep = ParseStatus.idle;
                                    break;
                                }
                                byteCount--;
                                temperature = (int)tempByte;    //set the temperature
                                break;
                            default:
                                parseStep = ParseStatus.idle;
                                break;
                        }
                        parseStep = ParseStatus.idle;
                        break;

                    default:
                        parseStep = ParseStatus.idle;
                        break;

                }
            }
        }
Exemplo n.º 23
0
 private static string MakeErrorMsg(ParseStatus status, string errorStatement, string errorMsg)
 {
     return string.Format("Status {2} for {0} : {1}", errorStatement, errorMsg, status);
 }
Exemplo n.º 24
0
 /// <summary>
 /// Creates a new ParseException
 /// </summary>
 /// <param name="info">The System.Runtime.Serialization.SerializationInfo that holds the serialized object data about the exception being thrown.</param>
 /// <param name="context"></param>
 protected ParseException(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     this.status = (ParseStatus)info.GetValue(StatusFieldName, typeof(ParseStatus));
     this.errorStatement = info.GetString(ErrorStatementFieldName);
 }
Exemplo n.º 25
0
        /// <summary>
        /// This will tokenise the HTML input string.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private StringCollection GetTokens(string input)
        {
            StringCollection tokens = new StringCollection();

            int         i      = 0;
            ParseStatus status = ParseStatus.ReadText;

            while (i < input.Length)
            {
                if (status == ParseStatus.ReadText)
                {
                    if (i + 2 < input.Length && input.Substring(i, 2).Equals("</"))
                    {
                        i += 2;
                        tokens.Add("</");
                        status = ParseStatus.ReadEndTag;
                    }
                    else if (input.Substring(i, 1).Equals("<"))
                    {
                        i++;
                        tokens.Add("<");
                        status = ParseStatus.ReadStartTag;
                    }
                    else
                    {
                        int next_index = input.IndexOf("<", i);
                        if (next_index == -1)
                        {
                            tokens.Add(input.Substring(i));
                            break;
                        }
                        else
                        {
                            tokens.Add(input.Substring(i, next_index - i));
                            i = next_index;
                        }
                    }
                }
                else if (status == ParseStatus.ReadStartTag)
                {
                    // Skip leading whitespace in tag
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    // Read tag name
                    int tag_name_start = i;
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(" \r\n\t/>".ToCharArray()) == -1)
                    {
                        i++;
                    }
                    tokens.Add(input.Substring(tag_name_start, i - tag_name_start));
                    // Skip trailing whitespace in tag
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    if (i + 1 < input.Length && input.Substring(i, 1).Equals("/>"))
                    {
                        tokens.Add("/>");
                        status = ParseStatus.ReadText;
                        i     += 2;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals(">"))
                    {
                        tokens.Add(">");
                        status = ParseStatus.ReadText;
                        i++;
                    }
                    else
                    {
                        status = ParseStatus.ReadAttributeName;
                    }
                }
                else if (status == ParseStatus.ReadEndTag)
                {
                    // Skip leading whitespace in tag
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    // Read tag name
                    int tag_name_start = i;
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(" \r\n\t>".ToCharArray()) == -1)
                    {
                        i++;
                    }
                    tokens.Add(input.Substring(tag_name_start, i - tag_name_start));
                    // Skip trailing whitespace in tag
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    if (i < input.Length && input.Substring(i, 1).Equals(">"))
                    {
                        tokens.Add(">");
                        status = ParseStatus.ReadText;
                        i++;
                    }
                }
                else if (status == ParseStatus.ReadAttributeName)
                {
                    // Read attribute name
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    int attribute_name_start = i;
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(" \r\n\t/>=".ToCharArray()) == -1)
                    {
                        i++;
                    }
                    tokens.Add(input.Substring(attribute_name_start, i - attribute_name_start));
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    if (i + 1 < input.Length && input.Substring(i, 2).Equals("/>"))
                    {
                        tokens.Add("/>");
                        status = ParseStatus.ReadText;
                        i     += 2;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals(">"))
                    {
                        tokens.Add(">");
                        status = ParseStatus.ReadText;
                        i++;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals("="))
                    {
                        tokens.Add("=");
                        i++;
                        status = ParseStatus.ReadAttributeValue;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals("/"))
                    {
                        i++;
                    }
                }
                else if (status == ParseStatus.ReadAttributeValue)
                {
                    // Read the attribute value
                    while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                    {
                        i++;
                    }
                    if (i < input.Length && input.Substring(i, 1).Equals("\""))
                    {
                        int value_start = i;
                        i++;
                        while (i < input.Length && !input.Substring(i, 1).Equals("\""))
                        {
                            i++;
                        }
                        if (i < input.Length && input.Substring(i, 1).Equals("\""))
                        {
                            i++;
                        }
                        tokens.Add(input.Substring(value_start + 1, i - value_start - 2));
                        status = ParseStatus.ReadAttributeName;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals("\'"))
                    {
                        int value_start = i;
                        i++;
                        while (i < input.Length && !input.Substring(i, 1).Equals("\'"))
                        {
                            i++;
                        }
                        if (i < input.Length && input.Substring(i, 1).Equals("\'"))
                        {
                            i++;
                        }
                        tokens.Add(input.Substring(value_start + 1, i - value_start - 2));
                        status = ParseStatus.ReadAttributeName;
                    }
                    else
                    {
                        int value_start = i;
                        while (i < input.Length && input.Substring(i, 1).IndexOfAny(" \r\n\t/>".ToCharArray()) == -1)
                        {
                            i++;
                        }
                        tokens.Add(input.Substring(value_start, i - value_start));
                        while (i < input.Length && input.Substring(i, 1).IndexOfAny(WHITESPACE_CHARS) != -1)
                        {
                            i++;
                        }
                        status = ParseStatus.ReadAttributeName;
                    }
                    if (i + 1 < input.Length && input.Substring(i, 2).Equals("/>"))
                    {
                        tokens.Add("/>");
                        status = ParseStatus.ReadText;
                        i     += 2;
                    }
                    else if (i < input.Length && input.Substring(i, 1).Equals(">"))
                    {
                        tokens.Add(">");
                        i++;
                        status = ParseStatus.ReadText;
                    }
                    // ANDY
                }
            }

            return(tokens);
        }
Exemplo n.º 26
0
		public static object Parse(ref ParseStatus status)
		{
			Parsing state = Parsing.NOTHING;
			Object o = null;
			Array a = null;
			String name = null;
			for (int i=status.pos;i<status.data.Length;i++)
			{
				byte b = status.data[i];
				char c = (char)b;
				switch (state)
				{
					case Parsing.NOTHING:
					{
						switch (c)
						{
							case '{': state = Parsing.OBJECT; o = new Object(); o.Data = new Dictionary<string, object>(); break;
							case '[': state = Parsing.ARRAY; a = new Array(); a.Data = new List<object>(); break;
							case ' ': case '\n': case '\t': break;
							case '"': state = Parsing.QUOTED_VALUE; status.pos = i+1; break;
							default: state = Parsing.VALUE; status.pos = i; break;
						}
						break;
					}
					case Parsing.QUOTED_VALUE:
					{
						if (c == '"')
						{
							String v = DecodeString(status.data, status.pos, i);
							status.pos = i + 1;
							return v;
						}
						break;
					}
					case Parsing.VALUE:
						{
							if (IsWhitespace(c) || c == ',' || c == ']' || c == '}' || c == ':')
							{
								String v = DecodeString(status.data, status.pos, i);
								status.pos = i;
								return v;
							}
							break;
						}
					case Parsing.OBJECT:
						{
							if (c == '}')
							{
								status.pos = i + 1;
								return o;
							}
							if (IsWhitespace(c) || c == ',')
							{
								continue;
							}
							if (name == null)
							{
								status.pos = i;
								name = Parse(ref status) as String;
								if (name == null)
								{
									status.error = true;
									return null;
								}
								i = status.pos - 1;
							}
							else 
							{
								if (c == ':')
								{
									continue;
								}
								status.pos = i;
								object val = Parse(ref status);
								if (val == null)
								{
									status.error = true;
									return null;
								}
								o.Data.Add(name, val);
								i = status.pos - 1;
								name = null;
							}
							break;
						}
					case Parsing.ARRAY:
						{
							if (c == ']')
							{
								status.pos = i + 1;
								return a;
							}
							if (IsWhitespace(c) || c == ',')
							{
								continue;
							}
							status.pos = i;
							object val = Parse(ref status);
							if (val == null)
							{
								status.error = true;
								return null;
							}
							a.Data.Add(val);
							i = status.pos - 1;
							break;
						}
					default:
						break;
				}
			}
			status.error = true;
			return null;
		}
Exemplo n.º 27
0
 public DetailedParseResult(ParseStatus status, string message)
     : this(status, ASTNode.Empty, message)
 {
     return;
 }
Exemplo n.º 28
0
 /// <summary>
 /// Default constructor
 /// </summary>        
 internal GXVerifyPacketEventArgs(byte[] data, GXPacket received)
 {
     State = ParseStatus.Complete;
     Data = data;
     Received = received;
 }
Exemplo n.º 29
0
 private static string MakeErrorMsg(ParseStatus status, string errorStatement, string errorMsg)
 {
     return(string.Format("Status {2} for {0} : {1}", errorStatement, errorMsg, status));
 }
Exemplo n.º 30
0
 /// <summary>
 /// Creates a new instance with the specified error.
 /// </summary>
 /// <param name="status">The error status</param>
 /// <param name="errorStatement">The statement that failed to be parsed</param>
 /// <param name="errorMsg">The error message given by the native R engine</param>
 public ParseException(ParseStatus status, string errorStatement, string errorMsg)
     : base(MakeErrorMsg(status, errorStatement, errorMsg))
 {
     this.status = status;
     this.errorStatement = errorStatement;
 }
Exemplo n.º 31
0
        public void DialogFlow(string input)
        {
            // begin
            session.parse_status = ParseStatus.All;
            string query_str = "";

            while (true)
            {
                Query query;
                // get query. if it is the very beginning, then taking the parameter as input
                if (session.parse_status == ParseStatus.All)
                {
                    if (string.IsNullOrWhiteSpace(input))
                    {
                        query_str = Utils.ReadLine();
                        Utils.WriteQuery(query_str);
                    }
                    else
                    {
                        query_str = input;
                        input     = null;
                    }
                    query = new Query(query_str);
                    parser.PosTagging(ref query);
                    // movie recommendation trigger
                    // don't need anymore due to Xiaoice API Connection
                    if (!parser.isAboutMovie(query))
                    {
                        Utils.WriteMachine(new string('=', 24));
                        Utils.WriteMachine("\n");
                        return;
                    }
                }
                else
                {
                    query_str = Utils.ReadLine();
                    Utils.WriteQuery(query_str);
                    query = new Query(query_str);

                    Query query_kbqa = new Query(query_str);
                    parser.PosTagging(ref query_kbqa);
                    if (KBQA.DoKBQA(query_kbqa, parser))
                    {
                        continue;
                    }
                    parser.PosTagging(ref query);
                }

                // query parse according to parse status
                switch (session.parse_status)
                {
                case ParseStatus.All:
                    parser.ParseAllTag(ref query);
                    break;

                case ParseStatus.Movie:
                    parser.ParseMovieName(ref query);
                    break;

                case ParseStatus.Artist:
                    parser.ParseArtistName(ref query);
                    break;

                case ParseStatus.Director:
                    parser.ParseDirectorName(ref query);
                    break;

                case ParseStatus.Country:
                    parser.ParseCountryName(ref query);
                    break;

                case ParseStatus.Genre:
                    parser.ParseGenreName(ref query);
                    break;

                case ParseStatus.PublishDate:
                    parser.ParsePublishDate(ref query);
                    break;

                //case ParseStatus.Rating:
                //    parser.ParseRating(ref query);
                //    break;
                //case ParseStatus.Duration:
                //    parser.ParseDuration(ref query);
                //    break;
                default:
                    Utils.WriteError("error parse status!");
                    break;
                }

                // refresh session status using user query
                session.RefreshSessionStatus(query);
                ClarifyArtistDirector();

                // refresh session movie candidate status
                GetAllResult(ref session);

                // is recommendation end or is user accept the kbqa answer
                if (isRecommendationEnd(session) || parser.isAcceptCandidate(query))
                {
                    if (parser.isAcceptCandidate(query))
                    {
                        Utils.WriteMachine("Have Fun~~~");
                        return;
                    }
                    if (session.is_considerd[ParseStatus.Movie] && session.candidate_movies.Count > 0)
                    {
                        Utils.WriteMachine("想看" + session.candidate_movies[0].name + "啊");
                        Utils.WriteMachine("眼光不错哦");
                    }
                    else
                    {
                        // if it is end, then show some movie candidate, let user confirm the result
                        ConfirmSession();
                        return;
                    }
                }
                else
                {
                    // in this trun we asked some information, but user did not provide
                    if (session.parse_status == ParseStatus.Artist ||
                        session.parse_status == ParseStatus.Director ||
                        session.parse_status == ParseStatus.Country ||
                        session.parse_status == ParseStatus.Genre ||
                        session.parse_status == ParseStatus.PublishDate)
                    {
                        if (session.is_considerd[session.parse_status] != true)
                        {
                            Utils.WriteUnknow("Pardon me", query.raw_query);
                            continue;
                        }
                    }

                    if (session.parse_status == ParseStatus.All)
                    {
                        session.parse_status = MakeClearParseStatus(session);
                    }
                    // using current turn status(session.parse_status) to compute the Transition(next turn) status, a transition matrix requeried.
                    ParseStatus   nextturn_status         = GetTransitionStatus(session);
                    List <string> answer_entity_candidate = new List <string>();
                    // response according to the nextturn_status we just chosen.
                    switch (nextturn_status)
                    {
                    //case ParseStatus.All:
                    //    answer_entity_candidate = AnalyseAll(session);
                    //    break;
                    case ParseStatus.Artist:
                        answer_entity_candidate = AnalyseArtistName(session);
                        break;

                    case ParseStatus.Director:
                        answer_entity_candidate = AnalyseDirectorName(session);
                        break;

                    case ParseStatus.Country:
                        answer_entity_candidate = AnalyseCountryName(session);
                        break;

                    case ParseStatus.Genre:
                        answer_entity_candidate = AnalyseGenreName(session);
                        break;

                    case ParseStatus.PublishDate:
                        answer_entity_candidate = AnalysePublishDate(session);
                        break;

                    default:
                        Utils.WriteError("error turn status!");
                        break;
                    }
                    // answer and go to the next turn
                    Console.WriteLine("from {0} transite to {1}", session.parse_status.ToString(), nextturn_status.ToString());
                    string answer = AnswerGenerator.AnswerIt(answer_entity_candidate, session, nextturn_status);
                    Utils.WriteMachine(answer);
                    session.parse_status = nextturn_status;
                }
            }
        }
Exemplo n.º 32
0
        public void ParseCompleted()
        {
            if (Error != null)
            {
                Status = ParseStatus.Failed;
                return;
            }

            foreach (var source in _positionals.Where(p => p.IsOptional).ToList())
            {
                var value = source.DefaultValue ?? String.Empty;
                if (!AcceptPositional(value, source))
                {
                    Status = ParseStatus.Failed;
                    return;
                }
            }

            if (_positionals.Any(UnusedPositional) && !_usedOptions.Any(o => o.IsShortCircuit))
            {
                Error = "Not enough parameters specified.";
                Status = ParseStatus.Failed;
            }
            else
                Status = ParseStatus.CompletedOk;
        }
Exemplo n.º 33
0
 /// <summary>
 /// Creates a new instance with the specified error.
 /// </summary>
 /// <param name="status">The error status</param>
 /// <param name="errorStatement">The statement that failed to be parsed</param>
 /// <param name="errorMsg">The error message given by the native R engine</param>
 public ParseException(ParseStatus status, string errorStatement, string errorMsg)
     : base(MakeErrorMsg(status, errorStatement, errorMsg))
 {
     this.status         = status;
     this.errorStatement = errorStatement;
 }
Exemplo n.º 34
0
        private void ParseData()
        {
            int byteCount = serialPort.BytesToRead;
            uint val1,val2,val3;
            uint payloadLength;
            Byte tempByte;

            //points.Clear();
            parseStep = ParseStatus.idle;       //reset
            while (byteCount > 0)
            {
                switch (parseStep)
                {
                    case ParseStatus.idle:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        if (tempByte == 0xFF)
                        {
                            parseStep = ParseStatus.header2;
                            //HRPage.debugText.Text += "\nnew packet : FF ";
                        }
                        break;

                    case ParseStatus.header2:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        if (tempByte == 0xFE)
                        {
                            parseStep = ParseStatus.length;
                            //HRPage.debugText.Text += "FE ";
                        }
                        else
                            parseStep = ParseStatus.idle;   //reset
                        break;

                    case ParseStatus.length:
                        try
                        {
                            payloadLength = (Byte)serialPort.ReadByte();
                            //HRPage.debugText.Text += payloadLength+" ";
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        parseStep = ParseStatus.type;
                        break;

                    case ParseStatus.type:
                        try
                        {
                            tempByte = (Byte)serialPort.ReadByte();
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        byteCount--;
                        switch (tempByte)
                        {
                            case 0x00:
                                //Control
                                parseStep = ParseStatus.control;
                                parseStep = ParseStatus.idle;
                                //HRPage.debugText.Text += "Control";
                                break;

                            case 0x01:
                                //Read
                                parseStep = ParseStatus.read;
                                parseStep = ParseStatus.idle;
                                //HRPage.debugText.Text += "read";
                                break;

                            case 0x02:
                                //Alerts
                                parseStep = ParseStatus.alert;
                                parseStep = ParseStatus.idle;
                                //HRPage.debugText.Text += "alerts";
                                break;
                            case 0x03:
                                //Continious Data
                                parseStep = ParseStatus.contDataPayload;
                                //parseStep = ParseStatus.idle;
                                //HRPage.debugText.Text += "payload";
                                break;
                            default:
                                parseStep = ParseStatus.idle;   //reset
                                break;
                        }
                        break;

                    //case ParseStatus.alert:
                    //    //debugText.Text += "Alert!\n";
                    //    //showFall();
                    //    parseStep = ParseStatus.idle;       //reset
                    //    break;

                    case ParseStatus.contDataPayload:
                        try
                        {
                            val1 = (uint)serialPort.ReadByte();
                            val1 = val1  + (uint)serialPort.ReadByte() * 256;
                            val3 = (uint)serialPort.ReadByte();
                            val3 = val3 + (uint)serialPort.ReadByte() * 256;
                            val2 = val1 + val3;
                        }
                        catch (Exception)
                        {
                            parseStep = ParseStatus.idle;
                            break;
                        }
                        HRPage.AddToChart(val1,val2,val3);    //add to chart
                        byteCount -= 2;

                        parseStep = ParseStatus.idle;       //reset
                        break;

                    default:
                        parseStep = ParseStatus.idle;
                        break;

                }
            }
        }
Exemplo n.º 35
0
 /// <summary>
 /// Creates a new ParseException
 /// </summary>
 /// <param name="info">The System.Runtime.Serialization.SerializationInfo that holds the serialised object data about the exception being thrown.</param>
 /// <param name="context"></param>
 protected ParseException(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     this.status         = (ParseStatus)info.GetValue(StatusFieldName, typeof(ParseStatus));
     this.errorStatement = info.GetString(ErrorStatementFieldName);
 }
Exemplo n.º 36
0
 private void ResetParser()
 {
     _status = ParseStatus.ParsingProtocol;
     _i0     = 0;
     _i      = 0;
 }
Exemplo n.º 37
0
 public DetailedParseResult(ParseStatus status, ASTNode node, string message)
 {
     Status  = status;
     Node    = node;
     Message = message;
 }
Exemplo n.º 38
0
        private void ParseUrl(string url)
        {
            while (_i < url.Length)
            {
                switch (_status)
                {
                case ParseStatus.ParsingProtocol:
                    if (url[_i] == ':')
                    {
                        Protocol = url.Substring(_i0, _i - _i0);

                        if (_i + 2 >= url.Length)
                        {
                            throw new Exception(string.Format("Unexpected end of URL, while parsing protocol. \"{0}\"", url));
                        }
                        if (url[_i + 1] != '/' || url[_i + 2] != '/')
                        {
                            throw new Exception(string.Format("Unexpected end of URL, while parsing protocol. \"{0}\"", url));
                        }

                        _status = ParseStatus.ParsingHost;
                        _i0     = _i + 3;
                        _i      = _i0;
                    }
                    break;

                case ParseStatus.ParsingHost:
                    if (char.IsLetterOrDigit(url[_i]) == false && url[_i] != '.')
                    {
                        Host = url.Substring(_i0, _i - _i0);
                        _i0  = _i;

                        if (url[_i] == ':')
                        {
                            _status = ParseStatus.ParsingPort;
                        }
                        else
                        {
                            _status = ParseStatus.ParsingPath;
                        }
                    }
                    break;

                case ParseStatus.ParsingPort:
                    if (char.IsDigit(url[_i]) == false)
                    {
                        Port    = url.Substring(_i0, _i - _i0);
                        _i0     = _i;
                        _status = ParseStatus.ParsingPath;
                    }
                    break;

                case ParseStatus.ParsingPath:
                    _i = url.Length - 1;
                    break;
                }
                _i++;
            }
            switch (_status)
            {
            case ParseStatus.ParsingProtocol:
                Protocol = url.Substring(_i0, _i - _i0);
                break;

            case ParseStatus.ParsingHost:
                Host = url.Substring(_i0, _i - _i0);
                break;

            case ParseStatus.ParsingPort:
                Port = url.Substring(_i0, _i - _i0);
                break;

            case ParseStatus.ParsingPath:
                Path = url.Substring(_i0, _i - _i0);
                break;
            }
        }
Exemplo n.º 39
0
 public ParseTree(ParseStatus status, Token tree)
 {
     Status = status;
     Tree   = tree;
 }
Exemplo n.º 40
0
		public static Object Parse(byte[] buffer)
		{
			ParseStatus status = new ParseStatus();
			status.data = buffer;
			status.pos = 0;
			object root = Parse(ref status);
			if (status.error)
			{
				return null;
			}
			else
			{
				return root as MicroJson.Object;
			}
		}