package parser

import "github.com/irfansharif/solver/internal/testutils/parser"

Package parser contains the parsing primitives needed to process the datadriven tests.

Index

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

func New(tb testing.TB, input string) *Parser

New initializes a new parser for the given input.

func (*Parser) Argument

func (p *Parser) Argument() ast.Argument

Argument = AssignmentsArgument

| BinaryOpArgument
| ConstantsArgument
| CumulativeArgument
| DomainArgument
| ElementArgument
| IntervalsArgument
| ImplicationArgument
| KArgument
| LinearEqualityArgument
| LinearExprsArgument
| NonOverlapping2DArgument
| VariableEqualityArgument
| VariablesArgument .

func (*Parser) AssignmentsArgument

func (p *Parser) AssignmentsArgument() ast.Argument

AssignmentsArgument = "[" Variables "]" ("∈" | "∉") (NumbersList | BooleanList) .

func (*Parser) BinaryOpArgument

func (p *Parser) BinaryOpArgument() ast.Argument

BinaryOpArgument = Identifier ( "/" | "%" | "*" ) Identifier "==" Identifier .

func (*Parser) Boolean

func (p *Parser) Boolean() bool

Boolean = "true" | "false" .

func (*Parser) Booleans

func (p *Parser) Booleans() []bool

Booleans = Boolean { "," Boolean } .

func (*Parser) BooleansList

func (p *Parser) BooleansList() [][]bool

BooleansList = "[" Booleans "]" { "∪" "[" Booleans "]" } .

func (*Parser) ConstantsArgument

func (p *Parser) ConstantsArgument() ast.Argument

ConstantsArgument = Variables "==" Number .

func (*Parser) CumulativeArgument

func (p *Parser) CumulativeArgument() ast.Argument

CumulativeArgument = IntervalDemands "|" Identifier .

func (*Parser) Digits

func (p *Parser) Digits() int

Digits = Digit { Digit } .

func (*Parser) Domain

func (p *Parser) Domain() *ast.Domain

Domain = "[" Number "," Number "]" .

func (*Parser) DomainArgument

func (p *Parser) DomainArgument() ast.Argument

DomainArgument = ( Variables | LinearExprs ) "in" Domains .

func (*Parser) Domains

func (p *Parser) Domains() []*ast.Domain

Domains = Domain { "∪" Domain } .

func (*Parser) EOF

func (p *Parser) EOF() bool

EOF returns true if we're at the end of the input.

func (*Parser) ElementArgument

func (p *Parser) ElementArgument() ast.Argument

ElementArgument = Identifier "==" "[" Variables "]" "[" Identifier "]" .

func (*Parser) Enforcement

func (p *Parser) Enforcement() *ast.Enforcement

Enforcement = "if" Variables .

func (*Parser) Errorf

func (p *Parser) Errorf(format string, args ...interface{})

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

func (p *Parser) Fatalf(format string, args ...interface{})

Fatalf is parting of the testingT interface.

func (*Parser) Identifier

func (p *Parser) Identifier() string

Identifier = Word .

func (*Parser) ImplicationArgument

func (p *Parser) ImplicationArgument() ast.Argument

ImplicationArgument = Identifier "→" Identifier .

func (*Parser) Interval

func (p *Parser) Interval() *ast.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

func (p *Parser) Intervals() []*ast.Interval

Intervals = Interval { "," Interval } .

func (*Parser) IntervalsArgument

func (p *Parser) IntervalsArgument() ast.Argument

IntervalsArgument = Intervals .

func (*Parser) KArgument

func (p *Parser) KArgument() ast.Argument

KArgument = Variables "|" Digits .

func (*Parser) LinearEqualityArgument

func (p *Parser) LinearEqualityArgument() ast.Argument

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

func (p *Parser) LinearExprsArgument() ast.Argument

LinearExprsArgument = LinearExprs .

func (*Parser) LinearTerm

func (p *Parser) LinearTerm() *ast.LinearTerm

LinearTerm = { Digits } Identifier | Digits .

func (*Parser) Method

func (p *Parser) Method() ast.Method

Method = Identifier { "-" | Identifier | Digits } .

func (*Parser) NonOverlapping2DArgument

func (p *Parser) NonOverlapping2DArgument() ast.Argument

NonOverlapping2DArgument = "[" Variables "]" "," "[" Variables "]" "," Boolean .

func (*Parser) Number

func (p *Parser) Number() int

Number = [ "-" ] Digits .

func (*Parser) Numbers

func (p *Parser) Numbers() []int

Numbers = Number { "," Number } .

func (*Parser) NumbersList

func (p *Parser) NumbersList() [][]int

NumbersList = "[" Numbers "]" { "∪" "[" Numbers "]" } .

func (*Parser) Receiver

func (p *Parser) Receiver() string

Receiver = Identifier .

func (*Parser) Statement

func (p *Parser) Statement() *ast.Statement

Statement = Receiver "." Method "(" [ Argument ] ")" [ Enforcement ] .

func (*Parser) Variable

func (p *Parser) Variable() string

Variable = Identifier | Letter "to" Letter .

func (*Parser) VariableEqualityArgument

func (p *Parser) VariableEqualityArgument() ast.Argument

VariableEqualityArgument = Identifier "==" ("max" | "min" ) "(" Variables ")" .

func (*Parser) Variables

func (p *Parser) Variables() []string

Variables = Variable { "," Variable } .

func (*Parser) VariablesArgument

func (p *Parser) VariablesArgument() ast.Argument

VariablesArgument = Variables .

func (*Parser) Word

func (p *Parser) Word() string

Word = Letter { Letter } .

Source Files

parser.go

Directories

PathSynopsis
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.