view basic/Messages.d @ 106:89db676fbacb

Now able of understanding strings.
author Anders Johnsen <skabet@gmail.com>
date Thu, 22 May 2008 12:09:11 +0200
parents 5f258eaf9517
children d1f68bfb58ae
line wrap: on
line source

module basic.Messages;

enum : uint
{
    // Lex
    InvalidSymbol,
    InvalidIlligaleType,
    UnexpectedEOFBlock,
    OnlyOneDotFloating,
    OnlyOneEFloating,

    // Parse
    UnexpectedTokMulti,
    UnexpectedTokSingle,
    UnexpectedTok,
    CaseValueMustBeInt,
    UnexpectedBeginStmt,
    UnexpectedTokType,
    ExpectedIdAfterDot,
    ExpectedExp,
    ExpectedCastType,
    InvalidDeclType,
    InvalidType,
    //   - imports/module
    ExpectedIdAfterPackage,
    RenameMustBeSingleIdent,


    // Imports
    CannotFindModule,

    // Strings
    InvalidStrPrefix,
    InvalidStrEscape,
    InvalidUtf8Hex,
    InvalidHexStrChar,
    StringShortEscape,
    StringHexInvalid,
}

enum MessageType
{
    Warning,
    Error,
}

MessageEntry[uint] Messages;

struct MessageEntry
{
    MessageType type;
    char[] message;
}
    
private alias MessageType.Error Err;
private alias MessageType.Warning War;
private alias MessageEntry E;
static this()
{
    Messages = [
        UnexpectedEOFBlock  : E(Err, "Unexpected end of file. Unclosed comment block"),
        InvalidSymbol       : E(Err, "Read invalid symbol: '%0'"),
        OnlyOneDotFloating  : E(Err, "Only one '.' is allowed in an floating number"),
        OnlyOneEFloating    : E(Err, "Only one E is allowed in an floating number"),

        UnexpectedTokMulti  : E(Err, "Unexpected token, got %0 expected one of %1"),
        UnexpectedTokSingle : E(Err, "Unexpected token, got %0 expected %1"),
        UnexpectedTok       : E(Err, "Unexpected token %0"),
        CaseValueMustBeInt  : E(Err, "Cases can only be integer literals"),
        UnexpectedBeginStmt : E(Err, "Unexpected begining of statement."),
        UnexpectedTokType   : E(Err, "Unexpected token in Type parsing. Got %0"),
        ExpectedIdAfterDot  : E(Err, "Expected identifier after '.'"),
        ExpectedExp         : E(Err, "Expected expression"),
        ExpectedCastType    : E(Err, "Expected cast type"),
        InvalidDeclType     : E(Err, "Invalid declaration type"),
        InvalidType         : E(Err, "Invalid type"),
        ExpectedIdAfterPackage : E(Err, "Identifier expected following package"),
        CannotFindModule    : E(Err, "Cannot find module '%0'"),
        InvalidStrPrefix    : E(Err, "Invalid string literal prefix"),
        InvalidStrEscape    : E(Err, "Invalid escape sequence"),
        InvalidUtf8Hex      : E(Err, "Invalid Utf8 hex char"),
        InvalidHexStrChar   : E(Err, "Invalid character in hex string"),
        StringShortEscape   : E(Err, "String literal is to short for escape sequence"),
        StringHexInvalid    : E(Err, "Hex escape sequence have invalid digit at position %0 of %1")
    ];
}