public StringConcatenationParser(SettingsSyntax syntax)
            : base(syntax.StringConcatenationOpen, 
			syntax.StringConcatenationClose,
			syntax.StringConcatenationDelimiter)
        {
            InnerParser = new AnyStringParser ();
        }
 public ConstructorParser(SettingsSyntax syntax)
     : base(syntax.HeadOpen, syntax.HeadClose, syntax.HeadDelimiter)
 {
     this.valueParser = new AnyParser (
         new NumericParser(),
         new FilenameParser(),
         new StringParser(),
         new StringConcatenationParser(syntax)
     );
 }
 public BodyParser(Parser innerParser, SettingsSyntax syntax)
 {
     this.BlockParser = new ConcatenationParser (syntax.BodyOpen, syntax.BodyClose, syntax.BodyDelimiter) {
         InnerParser = new SubstitutionAssignmentParser (
             syntax.BodyShorthand,
             syntax.BodySubstitution,
             syntax.BodyAssign
         ) {
             InnerParser = innerParser
         }
     };
 }
        public SettingsParser(SettingsSyntax proposedSyntax = null)
        {
            this.Syntax = proposedSyntax ?? new SettingsSyntax();

            ConcatenationParser listParser = new ConcatenationParser (
                this.Syntax.ArrayOpen, this.Syntax.ArrayClose, this.Syntax.ArrayDelimiter
            );
            AnyParser ExpressionParser = new AnyParser (
                new AnyValueParser(),
                new AnyStringParser(),
                new StringConcatenationParser(this.Syntax),
                listParser,
                this
            );
            listParser.InnerParser = ExpressionParser;

            this.HeadParser = new HeadParser (ExpressionParser, this.Syntax);
            this.PredefParser = new PredefinitionParser();
            this.ChainParser = new ExtensionParser (this.Syntax.Chainer, this.Syntax.ChainSubstitution, this);
            this.BodyParser = new BodyParser (ExpressionParser, this.Syntax);
            this.SuccessorParser = new ExtensionParser (this.Syntax.Successor, this.Syntax.SuccessorSubstitution, this);
        }
 public DiamondFile(SettingsSyntax syntax)
 {
     this.opener  = new CharacterParser(syntax.AnonymousHeadOpener);
     this.closer = new CharacterParser(syntax.AnonymousHeadCloser);
     this.innerParser = new AnyStringParser ();
 }