Hetu constructor
Hetu({
- HetuConfig? config,
- HTLogger? logger,
- HTResourceContext<
HTSource> ? sourceContext, - HTLocale? locale,
- HTLexicon? lexicon,
- HTLexer? lexer,
- HTParser? parser,
Create a Hetu environment.
Implementation
Hetu({
HetuConfig? config,
HTLogger? logger,
HTResourceContext<HTSource>? sourceContext,
HTLocale? locale,
HTLexicon? lexicon,
HTLexer? lexer,
// String parserName = 'default',
HTParser? parser,
}) : config = config ?? HetuConfig(),
sourceContext = sourceContext ?? HTOverlayContext() {
lexicon ??= lexer?.lexicon ?? HTLexiconHetu();
console = Console(
lexicon: lexicon,
logger: logger ?? HTConsoleLogger(),
);
if (locale != null) {
HTLocale.current = locale;
}
if (parser != null) {
this.parser = parser;
if (lexer != null) {
this.parser.lexer = lexer;
} else {
this.parser.lexer.lexicon = lexicon;
}
} else {
if (lexer != null) {
this.parser = HTParserHetu(
config: this.config,
lexer: lexer,
);
} else {
this.parser = HTParserHetu(
config: this.config,
lexicon: lexicon,
);
}
}
// if (parser != null) {
// _currentParser = parser;
// } else {
// _currentParser = HTParserHetu(
// config: this.config,
// );
// }
// if (lexer != null) {
// _currentParser.lexer = lexer;
// }
// _currentParser.lexer.lexicon = lexicon;
// _parsers[parserName] = _currentParser;
bundler = HTBundler(
config: this.config,
sourceContext: this.sourceContext,
parser: this.parser,
);
analyzer = HTAnalyzer(
config: this.config,
sourceContext: this.sourceContext,
lexicon: lexicon,
);
compiler = HTCompiler(
config: this.config,
lexicon: lexicon,
);
interpreter = HTInterpreter(
config: this.config,
sourceContext: this.sourceContext,
lexicon: lexicon,
);
}