Reading and writing

Module tock.tables

class tock.tables.Table(rows, num_header_cols=1, num_header_rows=1)

A simple class that just stores a list of lists of strings.

Parameters:
  • rows – list of lists of strings

  • num_header_rows (int) – number of header rows

  • num_header_cols (int) – number of header columns

num_header_cols

Number of header rows

num_header_rows

Number of header columns

rows

The table contents

tock.tables.from_table(table)

Convert a Table to a Machine.

Example

0

1

&

0

&

1

&

$

&

>@q1

q2,$

q2

q2,0

q2,1

q3,&

q3

q3,&

q3,&

q4,&

@q4

The first two rows, because they have empty first cells, are assumed to be header rows.

In a header row, cells “fill” to the right. In the above example, the first row effectively has cells 0, 0, 1, 1, &, &.

tock.tables.read_csv(filename)

Reads a CSV file containing a tabular description of a transition function (see from_table).

tock.tables.read_excel(filename, sheet=None)

Reads an Excel file containing a tabular description of a transition function (see from_table).

tock.tables.to_table(m)

Converts a Machine to a Table.

tock.tables.write_csv(m, filename)

Writes Machine m to file named by filename.

Module tock.graphs

class tock.graphs.Graph(attrs=None)

A directed graph. Both nodes and edges can have a dict of attributes.

Nodes can be any object that implements __hash__ and __eq__.

If g is a Graph and v is a node, v’s attributes can be accessed as g.nodes[v]. If u and v are nodes, edge (u, v)’s attributes can be accessed as g.edges[u][v].

add_edge(u, v, attrs=None)

Add edge from u to v to graph with attributes attrs.

add_node(v, attrs=None)

Add node v to graph with attributes attrs.

has_edge(u, v)

Remove edge from u to v.

has_path()

Returns True iff there is a path from the start node to an accept node.

only_path()

Finds the only path from the start node. If there is more than one, raises ValueError.

remove_node(v)

Remove node v, as well as any edges incident to v.

shortest_path()

Finds the shortest path from the start node to an accept node. If there is more than one, chooses one arbitrarily.

tock.graphs.from_graph(g)

Converts a Graph to a Machine.

tock.graphs.read_tgf(filename)

Reads a file in Trivial Graph Format. Edge labels are read into the label attribute.

tock.graphs.to_graph(m)

Converts a Machine to a Graph.

tock.graphs.write_dot(x, filename)

Writes a Machine or Graph to file named filename in GraphViz (DOT) format.