コード例 #1
0
        internal override int ParseMethod(ParsingSession session, out object result)
        {
            int succescode = 0;
            object unparsedIdentifier, dummy;
            CharacterParser leadingDot = new CharacterParser ('.');
            List<string> contextString = null;

            result = null;

            int bookmark = session.Offset;

            while (leadingDot.ParseMethod(session, out dummy) > 0) {
                if (contextString == null) {
                    contextString = new List<string>(session.Context.ToArray());
                    contextString.Reverse();
                }

                contextString.RemoveAt(contextString.Count - 1);
                succescode--;
            }

            string identifier = (contextString == null ? "" : string.Join(".", contextString.ToArray()) + ".");

            if (base.ParseMethod (session, out unparsedIdentifier) > 0) {
                identifier += unparsedIdentifier as String;

                if (session.References.Has (identifier)) {
                    result = session.References [identifier];
                    succescode = 1;
                } else {
                    session.Offset = bookmark;
                    if (succescode < 0)
                        throw new InvalidReferenceException (identifier);
                    else
                        succescode = -1;
                }
            }

            return succescode;
        }
コード例 #2
0
 public DiamondFile(SettingsSyntax syntax)
 {
     this.opener  = new CharacterParser(syntax.AnonymousHeadOpener);
     this.closer = new CharacterParser(syntax.AnonymousHeadCloser);
     this.innerParser = new AnyStringParser ();
 }
コード例 #3
0
 public void SetUp()
 {
     this.SUT = new CharacterParser ('a');
 }
コード例 #4
0
 public AssignmentParser(char couplerChar = '=')
 {
     coupler = new CharacterParser(couplerChar);
 }
コード例 #5
0
 public ConcatenationParser(char openerChar, char closerChar, char couplerChar)
 {
     this.opener = new CharacterParser (openerChar);
     this.closer = new CharacterParser (closerChar);
     this.coupler = new CharacterParser (couplerChar);
 }