public DfaTableWriter(Dfa dfa, ITableWriterFactory tableWriterFactory, ISyntaxErrorHandler syntaxErrorHandler) { this.dfa = dfa ?? throw new ArgumentNullException(nameof(dfa)); classWriter = tableWriterFactory.CreateClassWriter(); var tableFactory = syntaxErrorHandler.CreateStateTable(dfa); stateTableWriter = tableWriterFactory.CreateStateWriter(dfa, tableFactory); }
public ScannerBuilder(Options options) { nfaWriter = options.TryGet("nfa", out var nfaPath) ? new Nfa.NfaWriter(nfaPath) : new Nfa.NullNfaWriter(); scannerWriterFactory = !options.Equals("scanner", "switch") ? new StateScannerWriterFactory() : new SwitchScannerWriterFactory(); tableWriterFactory = options.HasOption("scanner.compress", true) ? new CompressedTableWriterFactory() : new UncompressedTableWriterFactory(); syntaxErrorHandler = options.HasOption("syntax.error.tokens", true) ? new GreedySyntaxErrorHandler() : new SingleCharSyntaxErrorHandler(); tokenStateWriter = scannerWriterFactory.CreateStateWriter( options.HasOption("scanner.write.states", true)); }
public IDfaWriter Create(Dfa dfa, ITableWriterFactory tableWriterFactory, ISyntaxErrorHandler syntaxErrorHandler) => new DfaSwitchWriter(dfa, syntaxErrorHandler);