#region MigraDoc - Creating Documents on the Fly
//
// Authors:
//   Stefan Lange
//   Klaus Potzesny
//   David Stephensen
//
// Copyright (c) 2001-2017 empira Software GmbH, Cologne Area (Germany)
//
// http://www.pdfsharp.com
// http://www.migradoc.com
// http://sourceforge.net/projects/pdfsharp
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
#endregion

namespace MigraDoc.DocumentObjectModel.IO
{
    /// <summary>
    /// The symbols used by DdlScanner/DdlParser.
    /// </summary>
    public enum Symbol
    {
        // TokenType.None
        None,
        Eof,
        Eol,                    // End of line
        // TokenType.Keyword
        True,
        False,
        Null,

        // TokenType.Identifier
        Identifier,
        Comment,

        // TokenType.IntegerLiteral
        IntegerLiteral,
        HexIntegerLiteral,
        OctIntegerLiteral,

        // TokenType.StringLiteral
        StringLiteral,

        // TokenType.RealLiteral
        RealLiteral,

        // TokenType.OperatorOrPunctuator
        Slash,             // /
        BackSlash,         // \
        ParenLeft,         // (
        ParenRight,        // )
        BraceLeft,         // {
        BraceRight,        // }
        BracketLeft,       // [
        BracketRight,      // ]
        EmptyLine,         //CR LF CR LF
        Colon,             // :
        Semicolon,         // ;
        Assign,            // =
        Plus,              // +
        Minus,             // -
        Dot,               // .
        Comma,             // ,
        Percent,           // %
        Dollar,            // $
        Hash,              // #
        Currency,          // ¤
        //Questionmark,    // ?
        Quotationmark,     // "
        At,                // @
        //Bar,             // |
        PlusAssign,        // +=
        MinusAssign,       // -=
        CR,                // 0x0D
        LF,                // 0x0A

        // TokenType.Keyword
        Styles,
        Document,
        Section,
        TableTemplates,
        TableTemplate,
        Paragraph,
        HeaderOrFooter,   // Only used as context in ParseDocumentElements
        Header,
        PrimaryHeader,
        FirstPageHeader,
        EvenPageHeader,
        Footer,
        PrimaryFooter,
        FirstPageFooter,
        EvenPageFooter,
        Table,
        Columns,
        Column,
        Rows,
        Row,
        Cell,
        Image,
        TextFrame,
        Chart,
        Footnote,
        PageBreak,
        Barcode,

        // Diagramms
        HeaderArea,
        FooterArea,
        TopArea,
        BottomArea,
        LeftArea,
        RightArea,
        PlotArea,
        Legend,
        XAxis,
        YAxis,
        ZAxis,
        Series,
        XValues,
        Point,

        // paragraph formats
        Bold,
        Italic,
        Underline,
        FontSize,
        FontColor,
        Font,

        // Hyperlink used by ParagraphParser
        Hyperlink,

        // Token used by ParagraphParser
        Text,  // Plain text in a paragraph.
        Blank,
        Tab,
        NonBreakeableBlank,
        SoftHyphen,
        LineBreak,
        Space,
        NoSpace,

        // Field used by ParagraphParser
        Field,

        // Field types used by ParagraphParser
        DateField,
        PageField,
        NumPagesField,
        InfoField,
        SectionField,
        SectionPagesField,
        BookmarkField,
        PageRefField,

        Character, //???
        Symbol,
        Chr
    }
}
