public ForEachBlockTranslator( CSharpName supportRefName, CSharpName envClassName, CSharpName envRefName, CSharpName outerClassName, CSharpName outerRefName, VBScriptNameRewriter nameRewriter, TempValueNameGenerator tempNameGenerator, ITranslateIndividualStatements statementTranslator, ITranslateValueSettingsStatements valueSettingStatementTranslator, ILogInformation logger) : base(supportRefName, envClassName, envRefName, outerClassName, outerRefName, nameRewriter, tempNameGenerator, statementTranslator, valueSettingStatementTranslator, logger) { if (statementTranslator == null) { throw new ArgumentNullException("statementTranslator"); } if (logger == null) { throw new ArgumentNullException("logger"); } _statementTranslator = statementTranslator; _logger = logger; }
public OuterScopeBlockTranslator( CSharpName startNamespace, CSharpName startClassName, CSharpName startMethodName, CSharpName runtimeDateLiteralValidatorClassName, CSharpName supportRefName, CSharpName envClassName, CSharpName envRefName, CSharpName outerClassName, CSharpName outerRefName, VBScriptNameRewriter nameRewriter, TempValueNameGenerator tempNameGenerator, ITranslateIndividualStatements statementTranslator, ITranslateValueSettingsStatements valueSettingStatementTranslator, NonNullImmutableList <NameToken> externalDependencies, OutputTypeOptions outputType, ILogInformation logger) : base(supportRefName, envClassName, envRefName, outerClassName, outerRefName, nameRewriter, tempNameGenerator, statementTranslator, valueSettingStatementTranslator, logger) { if (startNamespace == null) { throw new ArgumentNullException("startNamespace"); } if (startClassName == null) { throw new ArgumentNullException("startClassName"); } if (startMethodName == null) { throw new ArgumentNullException("startMethodName"); } if (runtimeDateLiteralValidatorClassName == null) { throw new ArgumentNullException("runtimeDateLiteralValidatorClassName"); } if (externalDependencies == null) { throw new ArgumentNullException("externalDependencies"); } if (!Enum.IsDefined(typeof(OutputTypeOptions), outputType)) { throw new ArgumentOutOfRangeException("outputType"); } if (logger == null) { throw new ArgumentNullException("logger"); } _startNamespace = startNamespace; _startClassName = startClassName; _startMethodName = startMethodName; _runtimeDateLiteralValidatorClassName = runtimeDateLiteralValidatorClassName; _externalDependencies = externalDependencies; _outputType = outputType; _logger = logger; }
public ClassBlockTranslator( CSharpName supportRefName, CSharpName envClassName, CSharpName envRefName, CSharpName outerClassName, CSharpName outerRefName, VBScriptNameRewriter nameRewriter, TempValueNameGenerator tempNameGenerator, ITranslateIndividualStatements statementTranslator, ITranslateValueSettingsStatements valueSettingStatementTranslator, ILogInformation logger) : base(supportRefName, envClassName, envRefName, outerClassName, outerRefName, nameRewriter, tempNameGenerator, statementTranslator, valueSettingStatementTranslator, logger) { }
public FuncByRefArgumentMapper(VBScriptNameRewriter nameRewriter, TempValueNameGenerator tempNameGenerator, ILogInformation logger) { if (tempNameGenerator == null) { throw new ArgumentNullException("tempNameGenerator"); } if (logger == null) { throw new ArgumentNullException("logger"); } _nameRewriter = nameRewriter; _tempNameGenerator = tempNameGenerator; _logger = logger; }
/// <summary> /// This Translate signature is what the others call into - it doesn't try to hide the fact that externalDependencies should be a NonNullImmutableList /// of strings and it requires an ILogInformation implementation to deal with logging warnings /// </summary> public static NonNullImmutableList <TranslatedStatement> Translate( string scriptContent, NonNullImmutableList <string> externalDependencies, OuterScopeBlockTranslator.OutputTypeOptions outputType, ILogInformation logger) { if (scriptContent == null) { throw new ArgumentNullException("scriptContent"); } if (externalDependencies == null) { throw new ArgumentNullException("externalDependencies"); } if ((outputType != OuterScopeBlockTranslator.OutputTypeOptions.Executable) && (outputType != OuterScopeBlockTranslator.OutputTypeOptions.WithoutScaffolding)) { throw new ArgumentOutOfRangeException("outputType"); } if (logger == null) { throw new ArgumentNullException("logger"); } var startNamespace = new CSharpName("TranslatedProgram"); var startClassName = new CSharpName("Runner"); var startMethodName = new CSharpName("Go"); var runtimeDateLiteralValidatorClassName = new CSharpName("RuntimeDateLiteralValidator"); var supportRefName = new CSharpName("_"); var envClassName = new CSharpName("EnvironmentReferences"); var envRefName = new CSharpName("_env"); var outerClassName = new CSharpName("GlobalReferences"); var outerRefName = new CSharpName("_outer"); VBScriptNameRewriter nameRewriter = name => new CSharpName(DefaultRuntimeSupportClassFactory.DefaultNameRewriter(name.Content)); var tempNameGeneratorNextNumber = 0; TempValueNameGenerator tempNameGenerator = (optionalPrefix, scopeAccessInformation) => { // To get unique names for any given translation, a running counter is maintained and appended to the end of the generated // name. This is only run during translation (this code is not used during execution) so there will be a finite number of // times that this is called (so there should be no need to worry about the int value overflowing!) return(new CSharpName(((optionalPrefix == null) ? "temp" : optionalPrefix.Name) + (++tempNameGeneratorNextNumber).ToString())); }; var statementTranslator = new StatementTranslator(supportRefName, envRefName, outerRefName, nameRewriter, tempNameGenerator, logger); var codeBlockTranslator = new OuterScopeBlockTranslator( startNamespace, startClassName, startMethodName, runtimeDateLiteralValidatorClassName, supportRefName, envClassName, envRefName, outerClassName, outerRefName, nameRewriter, tempNameGenerator, statementTranslator, new ValueSettingStatementsTranslator(supportRefName, envRefName, outerRefName, nameRewriter, statementTranslator, logger), externalDependencies.Select(name => new NameToken(name, 0)).ToNonNullImmutableList(), outputType, logger ); return(codeBlockTranslator.Translate( Parse(scriptContent).ToNonNullImmutableList() )); }