示例#1
0
        internal ElaExpression(Token tok, ElaNodeType type)
        {
            Type = type;

            if (tok != null)
            {
                Line = tok.line;
                Column = tok.col;
            }
        }
示例#2
0
        internal static ElaMessage CreateMessage(int error, string message, int line, int col, Token tok)
        {
            var err = String.IsNullOrEmpty(tok.val) ? ElaParserError.InvalidSyntax :
                ElaParserError.InvalidSyntaxUnexpectedSymbol;
            var msg = tok.val;

            if (error == -1)
                err = ElaParserError.TabNotAllowed;
            else if (error == Parser._EBLOCK)
                err = ElaParserError.IncorrectIndentation;
            else
            {
                var arr = message.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (arr.Length == 2)
                {
                    var head = arr[0].Trim('\"');
                    var tail = arr[1].Trim('\"');
                    var exp = tail == "expected";
                    var e = exp ? ExpectToken(error, head) : InvalidToken(error, tail);

                    if (e != ElaParserError.InvalidRoot || err != ElaParserError.InvalidSyntaxUnexpectedSymbol)
                    {
                        err = e;
                        msg = exp ? head : tail;
                    }
                }
            }

            if (err == ElaParserError.ExpectedEof && !String.IsNullOrEmpty(tok.val))
            {
                err = ElaParserError.InvalidIndentationUnexpectedSymbol;
                msg = tok.val;
            }

            return new ElaMessage(Strings.GetMessage(err, msg), MessageType.Error, (Int32)err, line, col);
        }
示例#3
0
 internal ElaTypeClass(Token tok)
     : base(tok, ElaNodeType.TypeClass)
 {
     Members = new List<ElaClassMember>();
 }
示例#4
0
 internal ElaTupleLiteral(Token tok, ElaNodeType type)
     : base(tok, type)
 {
 }
示例#5
0
 internal ElaBuiltin(Token tok)
     : base(tok, ElaNodeType.Builtin)
 {
 }
示例#6
0
 internal ElaLazyLiteral(Token tok)
     : base(tok, ElaNodeType.LazyLiteral)
 {
 }
示例#7
0
 internal ElaCondition(Token tok)
     : base(tok, ElaNodeType.Condition)
 {
 }
示例#8
0
 internal ElaMatch(Token tok)
     : this(tok, ElaNodeType.Match)
 {
 }
示例#9
0
 internal ElaRecordLiteral(Token tok)
     : this(tok, ElaNodeType.RecordLiteral)
 {
 }
示例#10
0
        public void Parse()
        {
            la = new Token();
            la.val = "";
            Get();
            Ela();

            Expect(0);
        }
示例#11
0
        void Get()
        {
            for (;;) {
            t = la;
            la = scanner.Scan();
            if (la.kind <= maxT) { ++errDist; break; }

            la = t;
            }
        }
示例#12
0
 internal ElaGenerator(Token tok)
     : base(tok, ElaNodeType.Generator)
 {
 }
示例#13
0
 internal ElaHeader(Token t)
     : base(t, ElaNodeType.Header)
 {
 }
示例#14
0
 internal ElaFieldDeclaration(Token tok)
     : base(tok, ElaNodeType.FieldDeclaration)
 {
 }
示例#15
0
文件: ElaAs.cs 项目: rizwan3d/elalang
 internal ElaAs(Token t)
     : base(t, ElaNodeType.As)
 {
 }
示例#16
0
 internal ElaRecordLiteral(Token tok, ElaNodeType type)
     : base(tok, type)
 {
     Fields = new List<ElaFieldDeclaration>();
 }
示例#17
0
 internal ElaLambda(Token tok)
     : base(tok, ElaNodeType.Lambda)
 {
 }
示例#18
0
 internal ElaPrimitive(Token tok)
     : base(tok, ElaNodeType.Primitive)
 {
 }
示例#19
0
 internal ElaMatch(Token tok, ElaNodeType type)
     : base(tok, type)
 {
 }
示例#20
0
 internal ElaRange(Token tok)
     : base(tok, ElaNodeType.Range)
 {
 }
示例#21
0
 internal ElaComprehension(Token tok)
     : base(tok, ElaNodeType.Comprehension)
 {
 }
示例#22
0
 internal ElaTupleLiteral(Token tok)
     : base(tok, ElaNodeType.TupleLiteral)
 {
 }
示例#23
0
 internal ElaJuxtaposition(Token tok)
     : base(tok, ElaNodeType.Juxtaposition)
 {
     Parameters = new List<ElaExpression>();
 }
示例#24
0
 internal ElaFieldReference(Token tok)
     : base(tok, ElaNodeType.FieldReference)
 {
 }
示例#25
0
 internal ElaNewtype(Token tok)
     : base(tok, ElaNodeType.Newtype)
 {
     Constructors = new List<ElaExpression>();
     ConstructorFlags = new List<ElaVariableFlags>();
 }
示例#26
0
 internal ElaTry(Token tok)
     : base(tok, ElaNodeType.Try)
 {
 }
示例#27
0
 internal ElaImportedVariable(Token tok)
     : base(tok, ElaNodeType.ImportedVariable)
 {
 }
示例#28
0
 internal ElaUnitLiteral(Token tok)
     : base(tok, ElaNodeType.UnitLiteral)
 {
 }
示例#29
0
 internal ElaNameReference(Token tok)
     : base(tok, ElaNodeType.NameReference)
 {
 }
示例#30
0
 internal ElaTypeCheck(Token tok)
     : base(tok, ElaNodeType.TypeCheck)
 {
 }