---
name: "pmksyntax"
section: "5"
platform: "linux"
package: "pmk"
version: "0.10.4-1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/pmksyntax"
---

# pmksyntax(5)

PMK files syntax manual

## NAME

**PMK** **Syntax** – PMK files syntax manual

## DESCRIPTION

This manual page describe the basic syntax used in PMK files such as **pmkfile** and **scanfile**

## DATA TYPES

**PMK** uses pseudo types like the following:

- **bool**

  The classical boolean type with TRUE and FALSE values.

  For example:

  ```
  TRUE
  FALSE
  ```

- **identifier**

  An identifier is a string of alphanumerical and underscores characters.

  For example:

  ```
  REQUIRED
  a_label
  underscores_are_nice
  ```

- **quoted**

  This means quoted string which can contain a set of characters delimited by quotation marks.

  For examples:

  ```
  "simple quoted string"
  "string that contain \"quotes\" backslashed"
  "can also contain filenames like pmkfile.scan"
  ```

- **list**

  It is one or more of the previous types between brackets. Multiple objects are separated with a comma. Blanks are currently not allowed beside commas, this means that you can find them only in a quoted string of the list.

  For example:

  ```
  ("only_one_string")
  ("added a boolean",TRUE)
  (mixed_list_of,"words","and",TRUE,"quoted strings")
  ```

## BASIC SYNTAX

**PMK** can contain comments, blank lines and commands.

A command has the following format (? character means optional field):

```
<command><?(label)> {
	<body>
}
```

The command and label names can be assimilated to the 'word' type. See DATA TYPES above.

The body can contain comment(s) and definition line(s). A commented line start with a '#' character like the following:

```
# this is a comment line
```

A definition line has the following format:

```
<?blank><key name><?blank>=<?blank><key value>
```

The key name is of identifier type.

The key value type can be 'bool', 'quoted' or 'list'. The right type will depend on the key name (see further).

For example:

```
CHECK_INCLUDE(header_sys_param) {
	# following options use different uses of blank characters
	# key value is word type
	REQUIRED = TRUE
	# key value is list type
	DEPEND=	("dep_one",dep_two,"dep_three")
	# key value is quoted type
	INCLUDE = "sys/param.h"
}
```

## SEE ALSO

[pmkfile(5)](/pmkfile/5.md), [scanfile(5)](/scanfile/5.md)
