---
name: "Graph::Easy::Parser::VCG"
section: "3pm"
platform: "linux"
package: "libgraph-easy-perl"
version: "0.76-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Graph::Easy::Parser::VCG"
---

# Graph::Easy::Parser::VCG(3pm)

Parse VCG or GDL text into Graph::Easy

## NAME

Graph::Easy::Parser::VCG - Parse VCG or GDL text into Graph::Easy

## SYNOPSIS

```
        # creating a graph from a textual description
        use Graph::Easy::Parser::VCG;
        my $parser = Graph::Easy::Parser::VCG->new();
        my $graph = $parser->from_text(
                "graph: { \n" .
                "       node: { title: "Bonn" }\n" .
                "       node: { title: "Berlin" }\n" .
                "       edge: { sourcename: "Bonn" targetname: "Berlin" }\n" .
                "}\n"
        );
        print $graph->as_ascii();
        print $parser->from_file('mygraph.vcg')->as_ascii();
```

## DESCRIPTION

`"Graph::Easy::Parser::VCG"` parses the text format from the VCG or GDL (Graph Description Language) use by tools like GCC and AiSee, and constructs a `"Graph::Easy"` object from it.

The resulting object can then be used to layout and output the graph in various formats.

### Output

The output will be a Graph::Easy object (unless overridden with `"use_class()"`), see the documentation for Graph::Easy what you can do with it.

### Attributes

Attributes will be remapped to the proper Graph::Easy attribute names and values, as much as possible.

Anything else will be converted to custom attributes starting with "x-vcg-". So "dirty\_edge\_labels: yes" will become "x-vcg-dirty\_edge\_labels: yes".

## METHODS

`"Graph::Easy::Parser::VCG"` supports the same methods as its parent class `"Graph::Easy::Parser"`:

### new()

```
        use Graph::Easy::Parser::VCG;
        my $parser = Graph::Easy::Parser::VCG->new();
```

Creates a new parser object. There are two valid parameters:

```
        debug
        fatal_errors
```

Both take either a false or a true value.

```
        my $parser = Graph::Easy::Parser::VCG->new( debug => 1 );
        $parser->from_text('graph: { }');
```

### reset()

```
        $parser->reset();
```

Reset the status of the parser, clear errors etc. Automatically called when you call any of the `"from_XXX()"` methods below.

### use\_class()

```
        $parser->use_class('node', 'Graph::Easy::MyNode');
```

Override the class to be used to constructs objects while parsing.

See Graph::Easy::Parser for further information.

### from\_text()

```
        my $graph = $parser->from_text( $text );
```

Create a Graph::Easy object from the textual description in `$text`.

Returns undef for error, you can find out what the error was with **error()**.

This method will reset any previous error, and thus the `$parser` object can be re-used to parse different texts by just calling `"from_text()"` multiple times.

### from\_file()

```
        my $graph = $parser->from_file( $filename );
        my $graph = Graph::Easy::Parser::VCG->from_file( $filename );
```

Creates a Graph::Easy object from the textual description in the file `$filename`.

The second calling style will create a temporary parser object, parse the file and return the resulting `"Graph::Easy"` object.

Returns undef for error, you can find out what the error was with **error()** when using the first calling style.

### error()

```
        my $error = $parser->error();
```

Returns the last error, or the empty string if no error occurred.

### parse\_error()

```
        $parser->parse_error( $msg_nr, @params);
```

Sets an error message from a message number and replaces embedded templates like `"##param1##"` with the passed parameters.

## CAVEATS

The parser has problems with the following things:

- attributes

  Some attributes are **not** remapped properly to what Graph::Easy expects, thus losing information, either because Graph::Easy doesn't support this feature yet, or because the mapping is incomplete.

- comments

  Comments written in the source code itself are discarded. If you want to have comments on the graph, clusters, nodes or edges, use the attribute `"comment"`. These are correctly read in and stored, and then output into the different formats, too.

## EXPORT

Exports nothing.

## SEE ALSO

Graph::Easy, Graph::Write::VCG.

## AUTHOR

Copyright (C) 2005 - 2008 by Tels \<http://bloodgate.com\>

See the LICENSE file for information.
