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 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 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 Grammar Create() { TerminalExpr dot = "."; RuleExpr Start = "start"; RuleExpr Dot = "dot"; RuleExpr DotDot = "dotdot"; RuleExpr Dot_DotDot = "dot-dotdot"; RuleExpr DotDot_Dot = "dotdot-dot"; Start.Body = (Dot_DotDot + DotDot_Dot) | (DotDot_Dot + Dot_DotDot); Dot.Body = dot; DotDot.Body = Dot + Dot; Dot_DotDot.Body = Dot + DotDot; DotDot_Dot.Body = DotDot + Dot; return(new GrammarBuilder().From(Start)); }
public static ChainExpr operator +(SymbolExpr terminal, string chars) { return(new ChainExpr { terminal, TerminalExpr.From((DfaProvision)chars) }); }
public static ChainExpr operator +(SymbolExpr terminal, char @char) { return(new ChainExpr { terminal, TerminalExpr.From((DfaProvision)@char) }); }
public static ChainExpr operator +(SymbolExpr terminal, char @char) { return(new ChainExpr { terminal, TerminalExpr.From(DfaProvision.From(@char.ToString(), @char)) }); }