/**
 *  Scala language specification.
 *  
 *  Author  : Pascal Perez (plperez@stanford.edu)
 *  Revision: $Id: Scala.pblangspec 12156 2007-06-28 12:33:22Z michelou $
 *  Changes : 2005-07-23 - initial version (Pascal Perez)
 *            2006-02-15 - adapted to Scala 2.0 (Stephane Micheloud)
 *            2007-06-28 - adapted to Scala 2.6 (Stephane Micheloud)
 */

(
    {
        Identifier = scala;
        Name = "Scala";
        Description = "Scala";
        BasedOn = "pbx_root_language";
        SourceScannerClassName = PBXJavaSourceScanner;
        SupportsIndentation = YES;
        Indentation = {
        };
        SyntaxColoring = {
            CaseSensitive = YES;
            UnicodeSymbols = YES;
            UnicodeEscapes = YES;	// accept \uXXXX anywhere in a file, and return a single character (not yet supported!)
            IndexedSymbols = YES;
            CommentsCanBeNested = NO;
            IdentifierStartChars = "_";
            IdentifierChars = "_$";
            EscapeCharacter = "\\";
            String = (
                ( "\"", "\"" )
            );
            Character = (
                ( "'", "'" )
            );
            MultiLineComment = (
                ( "/*", "*/" )
            );
            SingleLineComment = ( "//" );
            DocComment = "*";
            DocCommentKeywords = (
                "@author",
                "@beaninfo",
                "@deprecated",
                "@docRoot",
                "@exception",
                "@inheritDoc",
                "@link",
                "@linkplain",
                "@param",
                "@return",
                "@see",
                "@serial",
                "@serialData",
                "@serialField",
                "@since",
                "@throws",
                "@value",
                "@version"
            );
            Keywords = (
                "abstract",
                "case",
                "catch",
                "class",
                "def",
                "do",
                "else",
                "extends",
                "false",
                "final",
                "finally",
                "for",
                "forSome",
                "if",
                "implicit",
                "import",
                "lazy",
                "match",
                "new",
                "null",
                "object",
                "override",
                "package",
                "private",
                "protected",
                "requires",
                "return",
                "sealed",
                "super",
                "this",
                "throw",
                "trait",
                "try",
                "true",
                "type",
                "val",
                "var",
                "while",
                "with",
                "yield",
                "-",
                ":",
                "=",
                "=>",
                "<-",
                "<:",
                ">:",
                "#",
                "@"
            );
        }; 
    },
)

