Exemplo n.º 1
0
        public Ast.Entry GetEntry(FtlParserStream ps)
        {
            if (ps.CurrentIs('#'))
            {
                return(GetComment(ps));
            }

            if (ps.CurrentIs('-'))
            {
                return(GetTerm(ps));
            }

            if (ps.IsIdentifierStart())
            {
                return(GetMessage(ps));
            }

            throw new ParseException("E0002");
        }
Exemplo n.º 2
0
        Ast.Expression _GetLiteral(FtlParserStream ps)
        {
            var ch = ps.Current;

            if (ch == Eof)
            {
                throw new ParseException("E0014");
            }

            if (ch == '$')
            {
                ps.Next();
                var id = GetIdentifier(ps);
                return(new Ast.VariableReference(id));
            }

            if (ps.IsIdentifierStart())
            {
                var name = GetIdentifier(ps);
                return(new Ast.MessageReference(name));
            }

            if (ps.IsNumberStart())
            {
                return(GetNumber(ps));
            }

            if (ch == '-')
            {
                var id = GetTermIdentifier(ps);
                return(new Ast.TermReference(id));
            }

            if (ch == '"')
            {
                return(GetString(ps));
            }

            throw new ParseException("E0014");
        }