加入自动类型转换
This commit is contained in:
@@ -206,7 +206,7 @@ namespace Convention.RScript
|
||||
}
|
||||
if (CurrentLocalSpaceVariableNames.Peek().Contains(varName) == false)
|
||||
{
|
||||
Variables.Add(varName, new() { type = varType, data = varDefaultValue });
|
||||
Variables.Add(varName, new(varType, varDefaultValue));
|
||||
parser.context.Variables[varName] = varDefaultValue;
|
||||
CurrentLocalSpaceVariableNames.Peek().Add(varName);
|
||||
}
|
||||
@@ -350,48 +350,59 @@ namespace Convention.RScript
|
||||
private object RunNextStep(ExpressionParser parser)
|
||||
{
|
||||
var sentence = CurrentSentence;
|
||||
switch (sentence.mode)
|
||||
try
|
||||
{
|
||||
case RScriptSentence.Mode.Expression:
|
||||
return parser.Evaluate(sentence.content);
|
||||
case RScriptSentence.Mode.DefineVariable:
|
||||
{
|
||||
DoDefineVariable(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.EnterNamespace:
|
||||
{
|
||||
DoEnterNamespace(parser);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.ExitNamespace:
|
||||
{
|
||||
DoExitNamespace(parser);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Goto:
|
||||
{
|
||||
DoGoto(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Breakpoint:
|
||||
{
|
||||
DoBreakpoint(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Backpoint:
|
||||
{
|
||||
DoBackpoint(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.NamedSpace:
|
||||
{
|
||||
DoEnterNamedSpace(sentence);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Do nothing
|
||||
break;
|
||||
switch (sentence.mode)
|
||||
{
|
||||
case RScriptSentence.Mode.Expression:
|
||||
return parser.Evaluate(sentence.content);
|
||||
case RScriptSentence.Mode.DefineVariable:
|
||||
{
|
||||
DoDefineVariable(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.EnterNamespace:
|
||||
{
|
||||
DoEnterNamespace(parser);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.ExitNamespace:
|
||||
{
|
||||
DoExitNamespace(parser);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Goto:
|
||||
{
|
||||
DoGoto(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Breakpoint:
|
||||
{
|
||||
DoBreakpoint(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.Backpoint:
|
||||
{
|
||||
DoBackpoint(parser, sentence);
|
||||
}
|
||||
break;
|
||||
case RScriptSentence.Mode.NamedSpace:
|
||||
{
|
||||
DoEnterNamedSpace(sentence);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (RScriptRuntimeException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new RScriptRuntimeException($"Runtime error: {ex.Message}", CurrentRuntimePointer, ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
Reference in New Issue
Block a user