parsertest

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2025 License: ISC Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Grammars = []*grammar.CFG{

	grammar.NewCFG(
		[]grammar.Terminal{"+", "*", "(", ")", "id"},
		[]grammar.NonTerminal{"E", "E′", "T", "T′", "F"},
		Prods[0],
		"E",
	),

	grammar.NewCFG(
		[]grammar.Terminal{"c", "d"},
		[]grammar.NonTerminal{"S", "C"},
		Prods[1][1:],
		"S",
	),

	grammar.NewCFG(
		[]grammar.Terminal{"=", "*", "id"},
		[]grammar.NonTerminal{"S", "L", "R"},
		Prods[2][1:],
		"S",
	),

	grammar.NewCFG(
		[]grammar.Terminal{"+", "*", "(", ")", "id"},
		[]grammar.NonTerminal{"E", "T", "F"},
		Prods[3][1:],
		"E",
	),

	grammar.NewCFG(
		[]grammar.Terminal{"+", "*", "(", ")", "id"},
		[]grammar.NonTerminal{"E"},
		Prods[4][1:],
		"E",
	),
}
View Source
var Prods = [][]*grammar.Production{
	{
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("T"), grammar.NonTerminal("E′")}},
		{Head: "E′", Body: grammar.String[grammar.Symbol]{grammar.Terminal("+"), grammar.NonTerminal("T"), grammar.NonTerminal("E′")}},
		{Head: "E′", Body: grammar.E},
		{Head: "T", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("F"), grammar.NonTerminal("T′")}},
		{Head: "T′", Body: grammar.String[grammar.Symbol]{grammar.Terminal("*"), grammar.NonTerminal("F"), grammar.NonTerminal("T′")}},
		{Head: "T′", Body: grammar.E},
		{Head: "F", Body: grammar.String[grammar.Symbol]{grammar.Terminal("("), grammar.NonTerminal("E"), grammar.Terminal(")")}},
		{Head: "F", Body: grammar.String[grammar.Symbol]{grammar.Terminal("id")}},
	},
	{
		{Head: "S′", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("S")}},
		{Head: "S", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("C"), grammar.NonTerminal("C")}},
		{Head: "C", Body: grammar.String[grammar.Symbol]{grammar.Terminal("c"), grammar.NonTerminal("C")}},
		{Head: "C", Body: grammar.String[grammar.Symbol]{grammar.Terminal("d")}},
	},
	{
		{Head: "S′", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("S")}},
		{Head: "S", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("L"), grammar.Terminal("="), grammar.NonTerminal("R")}},
		{Head: "S", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("R")}},
		{Head: "L", Body: grammar.String[grammar.Symbol]{grammar.Terminal("*"), grammar.NonTerminal("R")}},
		{Head: "L", Body: grammar.String[grammar.Symbol]{grammar.Terminal("id")}},
		{Head: "R", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("L")}},
	},
	{
		{Head: "E′", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("E")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("E"), grammar.Terminal("+"), grammar.NonTerminal("T")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("T")}},
		{Head: "T", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("T"), grammar.Terminal("*"), grammar.NonTerminal("F")}},
		{Head: "T", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("F")}},
		{Head: "F", Body: grammar.String[grammar.Symbol]{grammar.Terminal("("), grammar.NonTerminal("E"), grammar.Terminal(")")}},
		{Head: "F", Body: grammar.String[grammar.Symbol]{grammar.Terminal("id")}},
	},
	{
		{Head: "E′", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("E")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("E"), grammar.Terminal("+"), grammar.NonTerminal("E")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.NonTerminal("E"), grammar.Terminal("*"), grammar.NonTerminal("E")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.Terminal("("), grammar.NonTerminal("E"), grammar.Terminal(")")}},
		{Head: "E", Body: grammar.String[grammar.Symbol]{grammar.Terminal("id")}},
	},
}

Functions

This section is empty.

Types

type MockLexer

type MockLexer struct {
	NextTokenIndex int
	NextTokenMocks []NextTokenMock
}

MockLexer is an implementation of lexer.Lexer for testing purposes.

func (*MockLexer) NextToken

func (m *MockLexer) NextToken() (lexer.Token, error)

type NextTokenMock

type NextTokenMock struct {
	OutToken lexer.Token
	OutError error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL