예제 #1
0
파일: InkParser.cs 프로젝트: inkle/ink
        protected override void RuleDidSucceed(object result, StringParserState.Element stateAtStart, StringParserState.Element stateAtEnd)
        {
            // Apply DebugMetadata based on the state at the start of the rule
            // (i.e. use line number as it was at the start of the rule)
            var parsedObj = result as Parsed.Object;
            if ( parsedObj) {
                var md = new Runtime.DebugMetadata ();
                md.startLineNumber = stateAtStart.lineIndex + 1;
                md.endLineNumber = stateAtEnd.lineIndex + 1;
                md.fileName = _filename;
                parsedObj.debugMetadata = md;
                return;
            }

            // A list of objects that doesn't already have metadata?
            var parsedListObjs = result as List<Parsed.Object>;
            if (parsedListObjs != null) {
                foreach (var parsedListObj in parsedListObjs) {
                    if (!parsedListObj.hasOwnDebugMetadata) {
                        var md = new Runtime.DebugMetadata ();
                        md.startLineNumber = stateAtStart.lineIndex + 1;
                        md.endLineNumber = stateAtEnd.lineIndex + 1;
                        md.fileName = _filename;
                        parsedListObj.debugMetadata = md;
                    }
                }
            }
        }
예제 #2
0
        public StringParser(string str)
        {
            str = PreProcessInputString(str);

            state = new StringParserState();

            if (str != null)
            {
                _chars = str.ToCharArray();
            }
            else
            {
                _chars = new char[0];
            }

            inputString = str;
        }
예제 #3
0
파일: InkParser.cs 프로젝트: tomkail/ink
 protected override void RuleDidSucceed(object result, StringParserState.Element stateAtStart, StringParserState.Element stateAtEnd)
 {
     // Apply DebugMetadata based on the state at the start of the rule
     // (i.e. use line number as it was at the start of the rule)
     var parsedObj = result as Parsed.Object;
     if ( parsedObj) {
         var md = new Runtime.DebugMetadata ();
         md.startLineNumber = stateAtStart.lineIndex + 1;
         md.endLineNumber = stateAtEnd.lineIndex + 1;
         md.fileName = _filename;
         parsedObj.debugMetadata = md;
     }
 }