private static TerminalExpr StringTerminal() { // ["][^"]*["] var quotation = (Nfa)'"'; var notQuotation = (Nfa)((Atom)'"').Not(); var @string = quotation + notQuotation.Star + quotation; return(TerminalExpr.From(DfaProvision.From("string", @string))); }
private static TerminalExpr StringTerminal() { // ["][^"]*["] var quotation = (FA)'"'; var notQuotation = (FA)((Codepoints)'"').Not(); var @string = quotation + notQuotation.Star() + quotation; return(TerminalExpr.From(DfaProvision.From("string", @string))); }
private static TerminalExpr NumberTerminal() { // [-+]?[0-9]+ var digit = (FA)('0', '9'); var sign = (FA)'+' | '-'; var number = sign.Opt() + digit.Plus(); return(TerminalExpr.From(DfaProvision.From("number", number))); }
private static TerminalExpr NumberTerminal() { // [-+]?[0-9]*[.]?[0-9]+ var digit = (Nfa)('0', '9'); var sign = (Nfa)'+' | '-'; var dot = (Nfa)'.'; var number = sign.Opt + digit.Star + dot.Opt + digit.Plus; return(TerminalExpr.From(DfaProvision.From("number", number))); }
private void Check1() { RuleExpr argument = "argument"; RuleExpr argumentList = "argument-list"; RuleExpr atom = "atom"; var name = TerminalExpr.From(DfaProvision.From("name", 'n')); var number = TerminalExpr.From(DfaProvision.From("number", '1')); argument.Body = atom; argumentList.Body = argument | (argumentList + ',' + argument); atom.Body = name | number; var grammar = new GrammarBuilder().From(argumentList); var engine = new EarleyEngine(grammar); engine.Pulse(XToken.Name); engine.Pulse(XToken.Comma); engine.Pulse(XToken.Number); }
public static ChainExpr operator +(char @char, ChainExpr chain) { return(new ChainExpr(Enumerable.Repeat(TerminalExpr.From(DfaProvision.From(@char.ToString(), @char)), 1).Concat(chain))); }
public static ChainExpr operator +(SymbolExpr terminal, string chars) { return(new ChainExpr { terminal, TerminalExpr.From(DfaProvision.From(chars, chars)) }); }
public static ChainExpr operator +(SymbolExpr terminal, char @char) { return(new ChainExpr { terminal, TerminalExpr.From(DfaProvision.From(@char.ToString(), @char)) }); }