Parsing Source-code
Prev | Chapter 2. Using the synopsis tool | Next

## Parsing Source-code

Let's assume a simple header file, containing some declarations:

    #ifndef Path_h_
    #define Path_h_

    //. A Vertex is a 2D point.
    struct Vertex
    {
      Vertex(double xx, double yy): x(xx), y(yy) {}
      double x; //.< the x coordinate
      double y; //.< the y coordinate
    };

    //. Path is the basic abstraction
    //. used for drawing (curved) paths.
    class Path
    {
    public:
      virtual ~Path() {}
      //. Draw this path.
      virtual void draw() = 0;
      // temporarily commented out...
      // bool intersects(const Path &);
    private:
    };

    #endif

Process this with

    synopsis -p Cxx -f HTML -o Paths Path.h

to generate an html document in the directory specified using the `-o` option, i.e. `Paths`.

The above represents the simplest way to use synopsis. A simple command is used to parse a source-file and to generate a document from it. The parser to be used is selected using the `-p` option, and the formatter with the `-f` option.

If no formatter is specified, synopsis dumps its internal representation to the specified output file. Similarly, if no parser is specified, the input is interpreted as an IR dump. Thus, the processing can be split into multiple synopsis invocations.

Each processor (including parsers and formatters) provides a number of parameters that can be set from the command line. For example the Cxx parser has a parameter `base_path` to specify a prefix to be stripped off of file names as they are stored in synopsis' internal representation. Parser-specific options can be given that are passed through to the parser processor. To pass such an option, use the `-Wp,` prefix. For example, to set the parser's `base_path` option, use

    synopsis -p Cxx -Wp,--base-path=<prefix> -f HTML -o Paths Path.h

Prev | Up | Next
Option Handling | Home | Emulating A Compiler