diff --git a/ast/internal/pgen/table.go b/ast/internal/pgen/table.go index 0666e14..bb3a09a 100644 --- a/ast/internal/pgen/table.go +++ b/ast/internal/pgen/table.go @@ -3,146 +3,139 @@ package pgen var Table = map[Lookup]Rule{ - {Term: newTerm("("), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("(@"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("(|"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm(";"), NTerm: newNTerm("aexprs")}: newRule(newTerm(";")), - {Term: newTerm("["), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("id"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("import"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("number"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("string"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), - {Term: newTerm("]"), NTerm: newNTerm("aexprs")}: newRule(newEpsilon()), - {Term: newTerm("["), NTerm: newNTerm("argdecl")}: newRule(newTerm("["), newNTerm("argdecls"), newTerm(";"), newTerm("]")), - {Term: newTerm("id"), NTerm: newNTerm("argdecl")}: newRule(newTerm("id")), - {Term: newTerm("["), NTerm: newNTerm("argdecls")}: newRule(newNTerm("argdecl"), newNTerm("argdecls")), - {Term: newTerm("id"), NTerm: newNTerm("argdecls")}: newRule(newNTerm("argdecl"), newNTerm("argdecls")), - {Term: newTerm(";"), NTerm: newNTerm("argdecls")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("argdecls")}: newRule(newEpsilon()), - {Term: newTerm("("), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("(@"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("(|"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("["), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("id"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("import"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("number"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("string"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), - {Term: newTerm("--"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm("->"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm("-|"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm(":"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm(";"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm("{"), NTerm: newNTerm("args")}: newRule(newEpsilon()), - {Term: newTerm("["), NTerm: newNTerm("array")}: newRule(newTerm("["), newNTerm("aexprs"), newTerm("]")), - {Term: newTerm("("), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("(@"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("(|"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("["), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("id"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("import"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("let"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("letexpr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("number"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm("string"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), - {Term: newTerm(")"), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), - {Term: newTerm("|)"), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), - {Term: newEOF(), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), - {Term: newTerm("--"), NTerm: newNTerm("chain")}: newRule(newTerm("--"), newNTerm("expr")), - {Term: newTerm("->"), NTerm: newNTerm("chain")}: newRule(newTerm("->"), newNTerm("expr")), - {Term: newTerm("-|"), NTerm: newNTerm("chain")}: newRule(newTerm("-|"), newNTerm("expr")), - {Term: newTerm(";"), NTerm: newNTerm("chain")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("chain")}: newRule(newEpsilon()), - {Term: newTerm("("), NTerm: newNTerm("compound")}: newRule(newTerm("("), newNTerm("cexprs"), newTerm(")")), - {Term: newTerm("(|"), NTerm: newNTerm("compound")}: newRule(newTerm("(|"), newNTerm("cexprs"), newTerm("|)")), - {Term: newTerm("("), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("(@"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("(|"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("["), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("id"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("import"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("number"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("string"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), - {Term: newTerm("("), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("(@"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("(|"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("["), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("id"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("import"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("number"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("string"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), - {Term: newTerm("]"), NTerm: newNTerm("exprs")}: newRule(newEpsilon()), - {Term: newTerm("memo"), NTerm: newNTerm("funcmod")}: newRule(newTerm("memo")), - {Term: newTerm("method"), NTerm: newNTerm("funcmod")}: newRule(newTerm("method")), - {Term: newTerm("rev"), NTerm: newNTerm("funcmod")}: newRule(newTerm("rev")), - {Term: newTerm("memo"), NTerm: newNTerm("funcmods")}: newRule(newNTerm("funcmod"), newNTerm("funcmods")), - {Term: newTerm("method"), NTerm: newNTerm("funcmods")}: newRule(newNTerm("funcmod"), newNTerm("funcmods")), - {Term: newTerm("rev"), NTerm: newNTerm("funcmods")}: newRule(newNTerm("funcmod"), newNTerm("funcmods")), - {Term: newTerm("id"), NTerm: newNTerm("funcmods")}: newRule(newEpsilon()), - {Term: newTerm("import"), NTerm: newNTerm("import")}: newRule(newTerm("import"), newTerm("string")), - {Term: newTerm("(@"), NTerm: newNTerm("lambda")}: newRule(newTerm("(@"), newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("cexprs"), newTerm(")")), - {Term: newTerm("["), NTerm: newNTerm("letassign")}: newRule(newNTerm("argdecl"), newTerm("=>"), newNTerm("expr")), - {Term: newTerm("id"), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), - {Term: newTerm("memo"), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), - {Term: newTerm("method"), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), - {Term: newTerm("rev"), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), - {Term: newTerm("let"), NTerm: newNTerm("letexpr")}: newRule(newTerm("let"), newNTerm("letassign")), - {Term: newTerm("("), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("(@"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("(|"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("["), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("id"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("import"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("let"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("number"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("string"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newEOF(), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), - {Term: newTerm("("), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), - {Term: newTerm("(@"), NTerm: newNTerm("single")}: newRule(newNTerm("lambda")), - {Term: newTerm("(|"), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), - {Term: newTerm("["), NTerm: newNTerm("single")}: newRule(newNTerm("array")), - {Term: newTerm("id"), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), - {Term: newTerm("import"), NTerm: newNTerm("single")}: newRule(newNTerm("import")), - {Term: newTerm("number"), NTerm: newNTerm("single")}: newRule(newTerm("number")), - {Term: newTerm("string"), NTerm: newNTerm("single")}: newRule(newTerm("string")), - {Term: newTerm(":"), NTerm: newNTerm("slot")}: newRule(newTerm(":"), newNTerm("argdecl")), - {Term: newTerm("--"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), - {Term: newTerm("->"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), - {Term: newTerm("-|"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), - {Term: newTerm(";"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), - {Term: newTerm("."), NTerm: newNTerm("sub")}: newRule(newTerm("."), newNTerm("subbable")), - {Term: newTerm("("), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("(@"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("(|"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("--"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("->"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("-|"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm(":"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm(";"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("["), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("id"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("import"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("number"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("string"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("{"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), - {Term: newTerm("("), NTerm: newNTerm("subbable")}: newRule(newNTerm("compound"), newNTerm("sub")), - {Term: newTerm("(|"), NTerm: newNTerm("subbable")}: newRule(newNTerm("compound"), newNTerm("sub")), - {Term: newTerm("id"), NTerm: newNTerm("subbable")}: newRule(newTerm("id"), newNTerm("sub")), - {Term: newTerm("{"), NTerm: newNTerm("switch")}: newRule(newTerm("{"), newNTerm("switches"), newTerm("}")), - {Term: newTerm("--"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm("->"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm("-|"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm(":"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm(";"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm("=>"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), - {Term: newTerm("("), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("(@"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("(|"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("["), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("id"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("import"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("number"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("string"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), - {Term: newTerm("}"), NTerm: newNTerm("switches")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("(@"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("(|"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm(";"), NTerm: newNTerm("aexprs")}: newRule(newTerm(";")), + {Term: newTerm("["), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("id"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("import"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("number"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("string"), NTerm: newNTerm("aexprs")}: newRule(newNTerm("exprs")), + {Term: newTerm("]"), NTerm: newNTerm("aexprs")}: newRule(newEpsilon()), + {Term: newTerm("["), NTerm: newNTerm("argdecl")}: newRule(newTerm("["), newNTerm("argdecls"), newTerm(";"), newTerm("]")), + {Term: newTerm("id"), NTerm: newNTerm("argdecl")}: newRule(newTerm("id")), + {Term: newTerm("["), NTerm: newNTerm("argdecls")}: newRule(newNTerm("argdecl"), newNTerm("argdecls")), + {Term: newTerm("id"), NTerm: newNTerm("argdecls")}: newRule(newNTerm("argdecl"), newNTerm("argdecls")), + {Term: newTerm(";"), NTerm: newNTerm("argdecls")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("argdecls")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("(@"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("(|"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("["), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("id"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("import"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("number"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("string"), NTerm: newNTerm("args")}: newRule(newNTerm("single"), newNTerm("args")), + {Term: newTerm("--"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm("->"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm("-|"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm(":"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm(";"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm("{"), NTerm: newNTerm("args")}: newRule(newEpsilon()), + {Term: newTerm("["), NTerm: newNTerm("array")}: newRule(newTerm("["), newNTerm("aexprs"), newTerm("]")), + {Term: newTerm("("), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("(@"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("(|"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("["), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("id"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("import"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("let"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("letexpr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("number"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm("string"), NTerm: newNTerm("cexprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("cexprs")), + {Term: newTerm(")"), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), + {Term: newTerm("|)"), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), + {Term: newEOF(), NTerm: newNTerm("cexprs")}: newRule(newEpsilon()), + {Term: newTerm("--"), NTerm: newNTerm("chain")}: newRule(newTerm("--"), newNTerm("expr")), + {Term: newTerm("->"), NTerm: newNTerm("chain")}: newRule(newTerm("->"), newNTerm("expr")), + {Term: newTerm("-|"), NTerm: newNTerm("chain")}: newRule(newTerm("-|"), newNTerm("expr")), + {Term: newTerm(";"), NTerm: newNTerm("chain")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("chain")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("compound")}: newRule(newTerm("("), newNTerm("cexprs"), newTerm(")")), + {Term: newTerm("(|"), NTerm: newNTerm("compound")}: newRule(newTerm("(|"), newNTerm("cexprs"), newTerm("|)")), + {Term: newTerm("("), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("(@"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("(|"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("["), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("id"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("import"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("number"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("string"), NTerm: newNTerm("expr")}: newRule(newNTerm("single"), newNTerm("args"), newNTerm("switch"), newNTerm("slot"), newNTerm("chain")), + {Term: newTerm("("), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("(@"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("(|"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("["), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("id"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("import"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("number"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("string"), NTerm: newNTerm("exprs")}: newRule(newNTerm("expr"), newTerm(";"), newNTerm("exprs")), + {Term: newTerm("]"), NTerm: newNTerm("exprs")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("funcmods")}: newRule(newTerm("("), newNTerm("expr"), newTerm(";"), newTerm(")"), newNTerm("funcmods")), + {Term: newTerm("id"), NTerm: newNTerm("funcmods")}: newRule(newEpsilon()), + {Term: newTerm("import"), NTerm: newNTerm("import")}: newRule(newTerm("import"), newTerm("string")), + {Term: newTerm("(@"), NTerm: newNTerm("lambda")}: newRule(newTerm("(@"), newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("cexprs"), newTerm(")")), + {Term: newTerm("("), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), + {Term: newTerm("["), NTerm: newNTerm("letassign")}: newRule(newNTerm("argdecl"), newTerm("=>"), newNTerm("expr")), + {Term: newTerm("id"), NTerm: newNTerm("letassign")}: newRule(newNTerm("funcmods"), newTerm("id"), newNTerm("argdecls"), newTerm("=>"), newNTerm("expr")), + {Term: newTerm("let"), NTerm: newNTerm("letexpr")}: newRule(newTerm("let"), newNTerm("letassign")), + {Term: newTerm("("), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("(@"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("(|"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("["), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("id"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("import"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("let"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("number"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("string"), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newEOF(), NTerm: newNTerm("script")}: newRule(newNTerm("cexprs"), newEOF()), + {Term: newTerm("("), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), + {Term: newTerm("(@"), NTerm: newNTerm("single")}: newRule(newNTerm("lambda")), + {Term: newTerm("(|"), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), + {Term: newTerm("["), NTerm: newNTerm("single")}: newRule(newNTerm("array")), + {Term: newTerm("id"), NTerm: newNTerm("single")}: newRule(newNTerm("subbable")), + {Term: newTerm("import"), NTerm: newNTerm("single")}: newRule(newNTerm("import")), + {Term: newTerm("number"), NTerm: newNTerm("single")}: newRule(newTerm("number")), + {Term: newTerm("string"), NTerm: newNTerm("single")}: newRule(newTerm("string")), + {Term: newTerm(":"), NTerm: newNTerm("slot")}: newRule(newTerm(":"), newNTerm("argdecl")), + {Term: newTerm("--"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), + {Term: newTerm("->"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), + {Term: newTerm("-|"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), + {Term: newTerm(";"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("slot")}: newRule(newEpsilon()), + {Term: newTerm("."), NTerm: newNTerm("sub")}: newRule(newTerm("."), newNTerm("subbable")), + {Term: newTerm("("), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("(@"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("(|"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("--"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("->"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("-|"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm(":"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm(";"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("["), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("id"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("import"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("number"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("string"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("{"), NTerm: newNTerm("sub")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("subbable")}: newRule(newNTerm("compound"), newNTerm("sub")), + {Term: newTerm("(|"), NTerm: newNTerm("subbable")}: newRule(newNTerm("compound"), newNTerm("sub")), + {Term: newTerm("id"), NTerm: newNTerm("subbable")}: newRule(newTerm("id"), newNTerm("sub")), + {Term: newTerm("{"), NTerm: newNTerm("switch")}: newRule(newTerm("{"), newNTerm("switches"), newTerm("}")), + {Term: newTerm("--"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm("->"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm("-|"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm(":"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm(";"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm("=>"), NTerm: newNTerm("switch")}: newRule(newEpsilon()), + {Term: newTerm("("), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("(@"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("(|"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("["), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("id"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("import"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("number"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("string"), NTerm: newNTerm("switches")}: newRule(newNTerm("expr"), newTerm("=>"), newNTerm("expr"), newTerm(";"), newNTerm("switches")), + {Term: newTerm("}"), NTerm: newNTerm("switches")}: newRule(newEpsilon()), } diff --git a/ast/node.go b/ast/node.go index ad05b39..38984c5 100644 --- a/ast/node.go +++ b/ast/node.go @@ -23,7 +23,7 @@ type Term struct { p Node } -func (t Term) Parent() Node { // nolint +func (t Term) Parent() Node { return t.p } @@ -32,7 +32,7 @@ func (t Term) Tok() scanner.Token { return t.tok } -func (t Term) Children() []Node { // nolint +func (t Term) Children() []Node { return nil } @@ -49,7 +49,7 @@ func (nt NTerm) Name() string { return string(nt.nt) } -func (nt NTerm) Parent() Node { // nolint +func (nt NTerm) Parent() Node { return nt.p } @@ -63,7 +63,7 @@ func (nt *NTerm) AddChild(n Node) { nt.c = append(nt.c, n) } -func (nt NTerm) Children() []Node { // nolint +func (nt NTerm) Children() []Node { return nt.c } @@ -72,10 +72,10 @@ type Epsilon struct { p Node } -func (e Epsilon) Parent() Node { // nolint +func (e Epsilon) Parent() Node { return e.p } -func (e Epsilon) Children() []Node { // nolint +func (e Epsilon) Children() []Node { return nil } diff --git a/cmd/pgen/grammar.go b/cmd/pgen/grammar.go index 2e6fbc3..53489d4 100644 --- a/cmd/pgen/grammar.go +++ b/cmd/pgen/grammar.go @@ -175,7 +175,7 @@ func (g Grammar) followWithout(nt NTerm, ignore []NTerm) TokenSet { continue } - for i := i + 1; i < len(rule); i++ { // nolint + for i := i + 1; i < len(rule); i++ { ts.AddAll(g.First(rule[i]), rule) if !g.Nullable(rule[i]) { break diff --git a/cmd/pgen/pgen.go b/cmd/pgen/pgen.go index a5bd3c2..a80172f 100644 --- a/cmd/pgen/pgen.go +++ b/cmd/pgen/pgen.go @@ -37,7 +37,7 @@ func main() { out := &formatter{w: os.Stdout} if *output != "" { - file, err := os.Create(*output) // nolint + file, err := os.Create(*output) if err != nil { fmt.Fprintf(os.Stderr, "Error creating %q: %v", *output, err) os.Exit(1) diff --git a/cmd/wdte/stdin.go b/cmd/wdte/stdin.go index f3a43d2..430a26b 100644 --- a/cmd/wdte/stdin.go +++ b/cmd/wdte/stdin.go @@ -18,10 +18,6 @@ func printRet(ret wdte.Func) { case error, fmt.Stringer: fmt.Printf(": %v\n", ret) return - - case wdte.GoFunc: - fmt.Println(": complex value (GoFunc)") - return } switch k := reflect.Indirect(reflect.ValueOf(ret)).Kind(); k { diff --git a/readme_test.go b/readme_test.go index 4d3a30c..809142d 100644 --- a/readme_test.go +++ b/readme_test.go @@ -40,7 +40,7 @@ func Sum(frame wdte.Frame, args ...wdte.Func) wdte.Func { return sum } -func ExampleREADME() { +func Example() { m, err := wdte.Parse(strings.NewReader(src), wdte.ImportFunc(im), nil) if err != nil { fmt.Fprintf(os.Stderr, "Error parsing script: %v\n", err) diff --git a/repl/examples_test.go b/repl/examples_test.go index 409cad6..31301c3 100644 --- a/repl/examples_test.go +++ b/repl/examples_test.go @@ -14,7 +14,7 @@ func ExamplePartial() { stack, partial = repl.Partial(strings.NewReader("import 'io'"), stack, nil) fmt.Println(partial) - stack, partial = repl.Partial(strings.NewReader(";"), stack, nil) + _, partial = repl.Partial(strings.NewReader(";"), stack, nil) fmt.Println(partial) // Output: true // true diff --git a/res/grammar.ebnf b/res/grammar.ebnf index 6802ce3..2edbbe9 100644 --- a/res/grammar.ebnf +++ b/res/grammar.ebnf @@ -1,9 +1,6 @@