package parser
import "github.com/irfansharif/solver/internal/testutils/parser"
Package parser contains the parsing primitives needed to process the datadriven tests.
Index ¶
- type Parser
- func New(tb testing.TB, input string) *Parser
- func (p *Parser) Argument() ast.Argument
- func (p *Parser) AssignmentsArgument() ast.Argument
- func (p *Parser) BinaryOpArgument() ast.Argument
- func (p *Parser) Boolean() bool
- func (p *Parser) Booleans() []bool
- func (p *Parser) BooleansList() [][]bool
- func (p *Parser) ConstantsArgument() ast.Argument
- func (p *Parser) CumulativeArgument() ast.Argument
- func (p *Parser) Digits() int
- func (p *Parser) Domain() *ast.Domain
- func (p *Parser) DomainArgument() ast.Argument
- func (p *Parser) Domains() []*ast.Domain
- func (p *Parser) EOF() bool
- func (p *Parser) ElementArgument() ast.Argument
- func (p *Parser) Enforcement() *ast.Enforcement
- func (p *Parser) Errorf(format string, args ...interface{})
- func (p *Parser) Fail()
- func (p *Parser) FailNow()
- func (p *Parser) Fatal(args ...interface{})
- func (p *Parser) Fatalf(format string, args ...interface{})
- func (p *Parser) Identifier() string
- func (p *Parser) ImplicationArgument() ast.Argument
- func (p *Parser) Interval() *ast.Interval
- func (p *Parser) IntervalDemand() *ast.IntervalDemand
- func (p *Parser) IntervalDemands() []*ast.IntervalDemand
- func (p *Parser) Intervals() []*ast.Interval
- func (p *Parser) IntervalsArgument() ast.Argument
- func (p *Parser) KArgument() ast.Argument
- func (p *Parser) LinearEqualityArgument() ast.Argument
- func (p *Parser) LinearExpr() *ast.LinearExpr
- func (p *Parser) LinearExprs() []*ast.LinearExpr
- func (p *Parser) LinearExprsArgument() ast.Argument
- func (p *Parser) LinearTerm() *ast.LinearTerm
- func (p *Parser) Method() ast.Method
- func (p *Parser) NonOverlapping2DArgument() ast.Argument
- func (p *Parser) Number() int
- func (p *Parser) Numbers() []int
- func (p *Parser) NumbersList() [][]int
- func (p *Parser) Receiver() string
- func (p *Parser) Statement() *ast.Statement
- func (p *Parser) Variable() string
- func (p *Parser) VariableEqualityArgument() ast.Argument
- func (p *Parser) Variables() []string
- func (p *Parser) VariablesArgument() ast.Argument
- func (p *Parser) Word() string
Types ¶
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser exposes a set of parsing primitives to process the datadriven tests.
func New ¶
New initializes a new parser for the given input.
func (*Parser) Argument ¶
Argument = AssignmentsArgument
| BinaryOpArgument | ConstantsArgument | CumulativeArgument | DomainArgument | ElementArgument | IntervalsArgument | ImplicationArgument | KArgument | LinearEqualityArgument | LinearExprsArgument | NonOverlapping2DArgument | VariableEqualityArgument | VariablesArgument .
func (*Parser) AssignmentsArgument ¶
AssignmentsArgument = "[" Variables "]" ("∈" | "∉") (NumbersList | BooleanList) .
func (*Parser) BinaryOpArgument ¶
BinaryOpArgument = Identifier ( "/" | "%" | "*" ) Identifier "==" Identifier .
func (*Parser) Boolean ¶
Boolean = "true" | "false" .
func (*Parser) Booleans ¶
Booleans = Boolean { "," Boolean } .
func (*Parser) BooleansList ¶
BooleansList = "[" Booleans "]" { "∪" "[" Booleans "]" } .
func (*Parser) ConstantsArgument ¶
ConstantsArgument = Variables "==" Number .
func (*Parser) CumulativeArgument ¶
CumulativeArgument = IntervalDemands "|" Identifier .
func (*Parser) Digits ¶
Digits = Digit { Digit } .
func (*Parser) Domain ¶
Domain = "[" Number "," Number "]" .
func (*Parser) DomainArgument ¶
DomainArgument = ( Variables | LinearExprs ) "in" Domains .
func (*Parser) Domains ¶
Domains = Domain { "∪" Domain } .
func (*Parser) EOF ¶
EOF returns true if we're at the end of the input.
func (*Parser) ElementArgument ¶
ElementArgument = Identifier "==" "[" Variables "]" "[" Identifier "]" .
func (*Parser) Enforcement ¶
func (p *Parser) Enforcement() *ast.Enforcement
Enforcement = "if" Variables .
func (*Parser) Errorf ¶
Errorf is parting of the testingT interface.
func (*Parser) Fail ¶
func (p *Parser) Fail()
Fail is parting of the testingT interface.
func (*Parser) FailNow ¶
func (p *Parser) FailNow()
FailNow is parting of the testingT interface.
func (*Parser) Fatal ¶
func (p *Parser) Fatal(args ...interface{})
Fatal is parting of the testingT interface.
func (*Parser) Fatalf ¶
Fatalf is parting of the testingT interface.
func (*Parser) Identifier ¶
Identifier = Word .
func (*Parser) ImplicationArgument ¶
ImplicationArgument = Identifier "→" Identifier .
func (*Parser) Interval ¶
Interval = Identifier "as" "[" Identifier "," Identifier "|" Identifier "]" .
func (*Parser) IntervalDemand ¶
func (p *Parser) IntervalDemand() *ast.IntervalDemand
IntervalDemand = Identifier ":" Identifier .
func (*Parser) IntervalDemands ¶
func (p *Parser) IntervalDemands() []*ast.IntervalDemand
IntervalDemands = IntervalDemand {"," IntervalDemand } .
func (*Parser) Intervals ¶
Intervals = Interval { "," Interval } .
func (*Parser) IntervalsArgument ¶
IntervalsArgument = Intervals .
func (*Parser) KArgument ¶
KArgument = Variables "|" Digits .
func (*Parser) LinearEqualityArgument ¶
LinearEqualityArgument = LinearExpr "==" ("max" | "min") "(" LinearExprs ")" .
func (*Parser) LinearExpr ¶
func (p *Parser) LinearExpr() *ast.LinearExpr
LinearExpr = [ "-" ] LinearTerm { ("+" | "-") LinearTerm } | "Σ" "(" Variables ")" .
func (*Parser) LinearExprs ¶
func (p *Parser) LinearExprs() []*ast.LinearExpr
LinearExprs = LinearExpr { "," LinearExpr } .
func (*Parser) LinearExprsArgument ¶
LinearExprsArgument = LinearExprs .
func (*Parser) LinearTerm ¶
func (p *Parser) LinearTerm() *ast.LinearTerm
LinearTerm = { Digits } Identifier | Digits .
func (*Parser) Method ¶
Method = Identifier { "-" | Identifier | Digits } .
func (*Parser) NonOverlapping2DArgument ¶
NonOverlapping2DArgument = "[" Variables "]" "," "[" Variables "]" "," Boolean .
func (*Parser) Number ¶
Number = [ "-" ] Digits .
func (*Parser) Numbers ¶
Numbers = Number { "," Number } .
func (*Parser) NumbersList ¶
NumbersList = "[" Numbers "]" { "∪" "[" Numbers "]" } .
func (*Parser) Receiver ¶
Receiver = Identifier .
func (*Parser) Statement ¶
Statement = Receiver "." Method "(" [ Argument ] ")" [ Enforcement ] .
func (*Parser) Variable ¶
Variable = Identifier | Letter "to" Letter .
func (*Parser) VariableEqualityArgument ¶
VariableEqualityArgument = Identifier "==" ("max" | "min" ) "(" Variables ")" .
func (*Parser) Variables ¶
Variables = Variable { "," Variable } .
func (*Parser) VariablesArgument ¶
VariablesArgument = Variables .
func (*Parser) Word ¶
Word = Letter { Letter } .
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
internal/testutils/parser/ast | |
internal/testutils/parser/lexer | |
internal/testutils/parser/token |
- Version
- v0.0.0-20220713194315-9c33ad307075 (latest)
- Published
- Jul 13, 2022
- Platform
- linux/amd64
- Imports
- 8 packages
- Last checked
- 3 weeks ago –
Tools for package owners.