package module
Version: v0.0.0-...-f4b0c5d Latest Latest

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

Go to latest
Published: Jan 14, 2021 License: BSD-2-Clause Imports: 12 Imported by: 37



Coverage GoDoc

Postscript interpreter written in go



Package ps

Arithmetic and Math Operators

Miscellaneous Operators

Operand Stack Manipulation Operators

Copyright 2009 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. postscript scanner derived form the scanner package of go sources



View Source
const (
	ScanIdents     = 1 << -Ident
	ScanInts       = 1 << -Int
	ScanFloats     = 1 << -Float // includes Ints
	ScanChars      = 1 << -Char
	ScanStrings    = 1 << -String
	ScanRawStrings = 1 << -RawString
	ScanComments   = 1 << -Comment
	SkipComments   = 1 << -skipComment // if set with ScanComments, comments become white space
	GoTokens       = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments

Predefined mode bits to control recognition of tokens. For instance, to configure a Scanner such that it only recognizes (Go) identifiers, integers, and skips comments, set the Scanner's Mode field to:

ScanIdents | ScanInts | SkipComments
View Source
const (
	EOF = -(iota + 1)

The result of Scan is one of the following tokens or a Unicode character.

View Source
const GoWhitespace = 1<<'\t' | 1<<'\n' | 1<<'\r' | 1<<' '

GoWhitespace is the default value for the Scanner's Whitespace field. Its value selects Go's white space characters.


This section is empty.


func TokenString

func TokenString(tok int) string

TokenString returns a (visible) string for a token or Unicode character.


type Dictionary

type Dictionary map[string]Value

func NewDictionary

func NewDictionary(prealloc int) Dictionary

type DictionaryStack

type DictionaryStack []Dictionary

type Interpreter

type Interpreter struct {
	// contains filtered or unexported fields

func NewInterpreter

func NewInterpreter(gc draw2d.GraphicContext) *Interpreter

func (*Interpreter) ClearDictionaries

func (interpreter *Interpreter) ClearDictionaries()

func (*Interpreter) ClearOperands

func (interpreter *Interpreter) ClearOperands()

func (*Interpreter) Define

func (interpreter *Interpreter) Define(name string, value Value)

func (*Interpreter) DictionaryStackSize

func (interpreter *Interpreter) DictionaryStackSize() int

func (*Interpreter) Execute

func (interpreter *Interpreter) Execute(reader io.Reader)

func (*Interpreter) ExecuteFile

func (interpreter *Interpreter) ExecuteFile(filePath string) error

func (*Interpreter) FindValue

func (interpreter *Interpreter) FindValue(name string) Value

func (*Interpreter) FindValueInDictionaries

func (interpreter *Interpreter) FindValueInDictionaries(name string) (Value, Dictionary)

func (*Interpreter) Get

func (interpreter *Interpreter) Get(index int) Value

func (*Interpreter) GetGraphicContext

func (interpreter *Interpreter) GetGraphicContext() draw2d.GraphicContext

func (*Interpreter) GetValues

func (interpreter *Interpreter) GetValues(n int) []Value

func (*Interpreter) OperandSize

func (interpreter *Interpreter) OperandSize() int

func (*Interpreter) Peek

func (interpreter *Interpreter) Peek() Value

func (*Interpreter) PeekDictionary

func (interpreter *Interpreter) PeekDictionary() Dictionary

func (*Interpreter) Pop

func (interpreter *Interpreter) Pop() Value

func (*Interpreter) PopArray

func (interpreter *Interpreter) PopArray() []Value

func (*Interpreter) PopBoolean

func (interpreter *Interpreter) PopBoolean() bool

func (*Interpreter) PopDictionary

func (interpreter *Interpreter) PopDictionary() Dictionary

func (*Interpreter) PopFloat

func (interpreter *Interpreter) PopFloat() float64

func (*Interpreter) PopInt

func (interpreter *Interpreter) PopInt() int

func (*Interpreter) PopName

func (interpreter *Interpreter) PopName() string

func (*Interpreter) PopOperator

func (interpreter *Interpreter) PopOperator() Operator

func (*Interpreter) PopProcedureDefinition

func (interpreter *Interpreter) PopProcedureDefinition() *ProcedureDefinition

func (*Interpreter) PopString

func (interpreter *Interpreter) PopString() string

func (*Interpreter) PopValues

func (interpreter *Interpreter) PopValues(n int) []Value

func (*Interpreter) Push

func (interpreter *Interpreter) Push(operand Value)

func (*Interpreter) PushDictionary

func (interpreter *Interpreter) PushDictionary(dictionary Dictionary)

func (*Interpreter) SetGraphicContext

func (interpreter *Interpreter) SetGraphicContext(gc draw2d.GraphicContext)

func (*Interpreter) SystemDefine

func (interpreter *Interpreter) SystemDefine(name string, value Value)

func (*Interpreter) SystemDictionary

func (interpreter *Interpreter) SystemDictionary() Dictionary

func (*Interpreter) UserDictionary

func (interpreter *Interpreter) UserDictionary() Dictionary

type Mark

type Mark struct{}


type Operator

type Operator interface {
	Execute(interpreter *Interpreter)

type OperatorFunc

type OperatorFunc func(interpreter *Interpreter)

type Position

type Position struct {
	Filename string // filename, if any
	Offset   int    // byte offset, starting at 0
	Line     int    // line number, starting at 1
	Column   int    // column number, starting at 0 (character count per line)

A source position is represented by a Position value. A position is valid if Line > 0.

func (*Position) IsValid

func (pos *Position) IsValid() bool

IsValid returns true if the position is valid.

func (Position) String

func (pos Position) String() string

type PrimitiveOperator

type PrimitiveOperator struct {
	// contains filtered or unexported fields

func NewOperator

func NewOperator(f OperatorFunc) *PrimitiveOperator

func (*PrimitiveOperator) Execute

func (o *PrimitiveOperator) Execute(interpreter *Interpreter)

type Procedure

type Procedure struct {
	// contains filtered or unexported fields

func NewProcedure

func NewProcedure(def *ProcedureDefinition) *Procedure

func (*Procedure) Execute

func (p *Procedure) Execute(interpreter *Interpreter)

type ProcedureDefinition

type ProcedureDefinition struct {
	Values []Value

func NewProcedureDefinition

func NewProcedureDefinition() *ProcedureDefinition

func (*ProcedureDefinition) Add

func (p *ProcedureDefinition) Add(value Value)

type Scanner

type Scanner struct {

	// Error is called for each error encountered. If no Error
	// function is set, the error is reported to os.Stderr.
	Error func(s *Scanner, msg string)

	// ErrorCount is incremented by one for each error encountered.
	ErrorCount int

	// The Mode field controls which tokens are recognized. For instance,
	// to recognize Ints, set the ScanInts bit in Mode. The field may be
	// changed at any time.
	Mode uint

	// The Whitespace field controls which characters are recognized
	// as white space. To recognize a character ch <= ' ' as white space,
	// set the ch'th bit in Whitespace (the Scanner's behavior is undefined
	// for values ch > ' '). The field may be changed at any time.
	Whitespace uint64

	// Current token position. The Offset, Line, and Column fields
	// are set by Scan(); the Filename field is left untouched by the
	// Scanner.
	// contains filtered or unexported fields

A Scanner implements reading of Unicode characters and tokens from an io.Reader.

func (*Scanner) Init

func (s *Scanner) Init(src io.Reader) *Scanner

Init initializes a Scanner with a new source and returns itself. Error is set to nil, ErrorCount is set to 0, Mode is set to GoTokens, and Whitespace is set to GoWhitespace.

func (*Scanner) Next

func (s *Scanner) Next() rune

Next reads and returns the next Unicode character. It returns EOF at the end of the source. It reports a read error by calling s.Error, if set, or else prints an error message to os.Stderr. Next does not update the Scanner's Position field; use Pos() to get the current position.

func (*Scanner) Peek

func (s *Scanner) Peek() rune

Peek returns the next Unicode character in the source without advancing the scanner. It returns EOF if the scanner's position is at the last character of the source.

func (*Scanner) Pos

func (s *Scanner) Pos() Position

Position returns the current source position. If called before Next() or Scan(), it returns the position of the next Unicode character or token returned by these functions. If called afterwards, it returns the position immediately after the last character of the most recent token or character scanned.

func (*Scanner) Scan

func (s *Scanner) Scan() int

Scan reads the next token or Unicode character from source and returns it. It only recognizes tokens t for which the respective Mode bit (1<<-t) is set. It returns EOF at the end of the source. It reports scanner errors (read and token errors) by calling s.Error, if set; otherwise it prints an error message to os.Stderr.

func (*Scanner) TokenText

func (s *Scanner) TokenText() string

TokenText returns the string corresponding to the most recently scanned token. Valid after calling Scan().

type Value

type Value interface{}

type ValueStack

type ValueStack []Value

Jump to

Keyboard shortcuts

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