Beispiel #1
0
        public Lexem[] ProcessExpression(string expression)
        {
            List<Lexem> lexems = new List<Lexem>();
            List<string> commands = new List<string>();
            List<string> variables = new List<string>();
            string expr, temp, func = ""; LexemType ltype = LexemType.Unknown;
            int start = 0, length = 0, end = 0; char chr = char.MinValue, pchr = char.MinValue;
            string[] splt, isplt; Lexem lastlexem = new Lexem("", LexemType.Unknown, LexemDataType.Unknown, "");
            char b = char.MinValue; bool ib = false;
            char sb = "'"[0]; string btmp = "";

            expr = expression; int l = expr.Length;
            for (int i = 0; i < l; i++)
            {
                if ("{}!=-+*/()&|,.:?".IndexOf(expr[i]) > -1 || (i == l - 1))
                {
                    pchr = chr; chr = expr[i];
                    end = i; length = end - start;
                    temp = expr.Substring(start, length);
                    if (i == l - 1) { chr = ';'; lexems.Add(new Lexem(chr.ToString(), LexemType.Divider, LexemDataType.Unknown, (i + 1).ToString())); }
                    else { lexems.Add(new Lexem(chr.ToString(), LexemType.Divider, LexemDataType.Unknown, i.ToString())); };

                    if (expr.StartsWith("proc ") && chr == '(')
                    {
                        isplt = strh.nbSplit(expr, ' ');
                        lexems.Add(new Lexem(isplt[2], LexemType.DeclareFunction, strh.StrToLDT(isplt[1]), ""));
                    };

                    start = i + 1;
                };
            };
            return lexems.ToArray();
        }
Beispiel #2
0
        public Opcode[] CompileExpression(Lexem[] lexems)
        {
            List<Opcode> opcodes = new List<Opcode>();

            return opcodes.ToArray();
        }