//private void analyzeSharpDim(StringStream st, ScriptPosition position, bool dims) //{ // //WordCollection wc = LexicalAnalyzer.Analyse(st, LexEndWith.EoL, LexAnalyzeFlag.AllowAssignment); // //UserDefinedVariableData data = UserDefinedVariableData.Create(wc, dims, false, position); // //if (data.Reference) // // throw new NotImplCodeEE(); // //VariableToken var = null; // //if (data.CharaData) // // var = parentProcess.VEvaluator.VariableData.CreateUserDefCharaVariable(data); // //else // // var = parentProcess.VEvaluator.VariableData.CreateUserDefVariable(data); // //idDic.AddUseDefinedVariable(var); //} //1822 #DIMだけまとめておいて後で処理 private bool analyzeSharpDimLines() { bool noError = true; bool tryAgain = true; while (dimlines.Count > 0) { int count = dimlines.Count; for (int i = 0; i < count; i++) { DimLineWC dimline = dimlines.Dequeue(); try { UserDefinedVariableData data = UserDefinedVariableData.Create(dimline); if (data.Reference) { throw new NotImplCodeEE(); } VariableToken var = null; if (data.CharaData) { var = parentProcess.VEvaluator.VariableData.CreateUserDefCharaVariable(data); } else { var = parentProcess.VEvaluator.VariableData.CreateUserDefVariable(data); } idDic.AddUseDefinedVariable(var); } catch (IdentifierNotFoundCodeEE e) { //繰り返すことで解決する見込みがあるならキューの最後に追加 if (tryAgain) { dimline.WC.Pointer = 0; dimlines.Enqueue(dimline); } else { ParserMediator.Warn(e.Message, dimline.SC, 2); noError = true; } } catch (CodeEE e) { ParserMediator.Warn(e.Message, dimline.SC, 2); noError = false; } } if (dimlines.Count == count) { tryAgain = false; } } return(noError); }
private void analyzeSharpDim(StringStream st, ScriptPosition position, bool dims) { var wc = LexicalAnalyzer.Analyse(st, LexEndWith.EoL, LexAnalyzeFlag.AllowAssignment); var data = UserDefinedVariableData.Create(wc, dims, false, position); if (data.Reference) { throw new NotImplCodeEE(); } VariableToken var = null; if (data.CharaData) { var = parentProcess.VEvaluator.VariableData.CreateUserDefCharaVariable(data); } else { var = parentProcess.VEvaluator.VariableData.CreateUserDefVariable(data); } idDic.AddUseDefinedVariable(var); }