/* Scheme 2.3 syntax contributed by Michael Fong */
dp.sh.Brushes.Scheme = function()
{
    var keywords =  'define-datatype define lambda if else cond let cons car cdr or and cases quote ' +
					'letrec begin do loop quote list not length append memq memv member \#t \#f';
					 
	var predicates = 'equal\? eqv? null\? boolean? eq? number\? complex? real? rational? integer? procedure? ' +
					 'pair? char? symbol? string? vector? pair?';

    this.regexList = [
        { regex: dp.sh.RegexLib.SingeLineSchemeComments, 		 css: 'comment' },			// comment
		{ regex: new RegExp(this.GetKeywords(predicates), 'gm'), css: 'predicate' },		// predicate 
		{ regex: new RegExp(this.GetKeywords(keywords), 'gm'),	 css: 'keyword' }			// keyword
        ];

	this.CssClass = 'dp-scm';
	this.Style =	'.dp-scm .predicate{ color: #9E8F23; font-weight: bold; }';
}

dp.sh.Brushes.Scheme.prototype  = new dp.sh.Highlighter();
dp.sh.Brushes.Scheme.Aliases    = ['scm', 'scheme'];

