override public IRTSLinker createInstance(string src) { RTSLogicL lin = new RTSLogicL(mId); lin.mSrc = src; return(lin); }
private void init() { mDefaultLinker = new RTSVariableL(); IRTSLinker lin = null; mLinkers = new System.Collections.Generic.Dictionary <string, IRTSLinker>(); lin = new RTSEndingL(IRTSDefine.Linker.SEMICOLON); mLinkers.Add(";", lin); // lin = new RTSExecL(IRTSDefine.Linker.BRACKET_FLOWER, IRTSDefine.Linker.BRACKET_FLOWER2); mLinkers.Add("{", lin); lin = new RTSEndingL(IRTSDefine.Linker.BRACKET_FLOWER2); mLinkers.Add("}", lin); // lin = new RTSIfL(); mLinkers.Add("if", lin); lin = new RTSEndingL(IRTSDefine.Linker.THEN); mLinkers.Add("then", lin); lin = new RTSElseL(); mLinkers.Add("else", lin); lin = new RTSForL(); mLinkers.Add("for", lin); lin = new RTSDeleteL(); mLinkers.Add("delete", lin); // lin = new RTSBracketL(IRTSDefine.Linker.BRACKET, IRTSDefine.Linker.BRACKET2); mLinkers.Add("(", lin); lin = new RTSEndingL(IRTSDefine.Linker.BRACKET2); mLinkers.Add(")", lin); lin = new RTSSquareL(); mLinkers.Add("[", lin); lin = new RTSEndingL(IRTSDefine.Linker.BRACKET_SQUARE2); mLinkers.Add("]", lin); // lin = new RTSCommaL(); mLinkers.Add(",", lin); lin = new RTSPropertyL(IRTSDefine.Property.GLOBAL); mLinkers.Add("global", lin); lin = new RTSEndingL(IRTSDefine.Linker.COLON); mLinkers.Add(":", lin); lin = new RTSQuestionL(); mLinkers.Add("?", lin); lin = new RTSNotL(); mLinkers.Add("!", lin); mLinkers.Add("not", lin); lin = new RTSSelfRaiseL(IRTSDefine.Linker.SELFADD); mLinkers.Add("++", lin); lin = new RTSSelfRaiseL(IRTSDefine.Linker.SELFSUB); mLinkers.Add("--", lin); // lin = new RTSArithmeticL(IRTSDefine.Linker.ADD); mLinkers.Add("+", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("+=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.SUB); mLinkers.Add("-", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("-=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.MUL); mLinkers.Add("*", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("*=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.DIV); mLinkers.Add("/", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("/=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.MOD); mLinkers.Add("%", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("%=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.BITAND); mLinkers.Add("&", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("&=", lin); lin = new RTSArithmeticL(IRTSDefine.Linker.BITOR); mLinkers.Add("|", lin); lin = new RTSEvaluateL((RTSBinaryL)lin); mLinkers.Add("|=", lin); lin = new RTSEvaluateL(null); mLinkers.Add("=", lin); lin = new RTSCompareL(IRTSDefine.Linker.MORE); mLinkers.Add(">", lin); lin = new RTSCompareL(IRTSDefine.Linker.MOREQU); mLinkers.Add(">=", lin); lin = new RTSCompareL(IRTSDefine.Linker.LESS); mLinkers.Add("<", lin); lin = new RTSCompareL(IRTSDefine.Linker.LESSEQU); mLinkers.Add("<=", lin); lin = new RTSCompareL(IRTSDefine.Linker.EQUAL); mLinkers.Add("==", lin); lin = new RTSCompareL(IRTSDefine.Linker.NOTEQU); mLinkers.Add("!=", lin); lin = new RTSLogicL(IRTSDefine.Linker.AND); mLinkers.Add("&&", lin); mLinkers.Add("and", lin); lin = new RTSLogicL(IRTSDefine.Linker.OR); mLinkers.Add("||", lin); mLinkers.Add("or", lin); lin = new RTSLogicL(IRTSDefine.Linker.XOR); mLinkers.Add("^", lin); mLinkers.Add("xor", lin); // lin = new RTSStackActL(IRTSDefine.Stack.ACTION_RETURN); mLinkers.Add("return", lin); lin = new RTSStackActL(IRTSDefine.Stack.ACTION_BREAK); mLinkers.Add("break", lin); lin = new RTSStackActL(IRTSDefine.Stack.ACTION_CONTINUE); mLinkers.Add("continue", lin); lin = new RTSVariableL(null); mLinkers.Add("null", lin); lin = new RTSVariableL(true); mLinkers.Add("true", lin); lin = new RTSVariableL(false); mLinkers.Add("false", lin); // lin = new RTSTypeL(RTSGeneral.TYPE); mLinkers.Add("var", lin); lin = new RTSTypeL(RTSString.TYPE); mLinkers.Add("string", lin); lin = new RTSTypeL(RTSInteger.TYPE); mLinkers.Add("int", lin); lin = new RTSTypeL(RTSLong.TYPE); mLinkers.Add("long", lin); lin = new RTSTypeL(RTSFloat.TYPE); mLinkers.Add("float", lin); lin = new RTSTypeL(RTSDouble.TYPE); mLinkers.Add("double", lin); lin = new RTSTypeL(RTSBool.TYPE); mLinkers.Add("bool", lin); lin = new RTSTypeL(RTSVoid.TYPE); mLinkers.Add("void", lin); lin = new RTSTypeL(RTSRegisterType.TYPE); mLinkers.Add("register", lin); mTypes = new RTSSortedMap <System.Type, IRTSType>(8); mTypes.add(typeof(bool), RTSBool.TYPE); mTypes.add(typeof(int), RTSInteger.TYPE); mTypes.add(typeof(long), RTSLong.TYPE); mTypes.add(typeof(float), RTSFloat.TYPE); mTypes.add(typeof(double), RTSDouble.TYPE); mTypes.add(typeof(string), RTSString.TYPE); mTypes.add(typeof(RTSRegister), RTSRegisterType.TYPE); }