mirror of https://gitlab.freedesktop.org/mesa/mesa
102 lines
3.1 KiB
Plaintext
102 lines
3.1 KiB
Plaintext
1. Introduction to rules-ng-ng text format
|
|
|
|
This-specification defines a text format that can be converted to and from rules-ng-ng XML.
|
|
It is intended to allow to create rules-ng-ng files with much less typing and with a more readable text.
|
|
xml2text can convert rules-ng-ng XML to this text format
|
|
text2xml can convert this text format to rules-ng-ng XML
|
|
|
|
This specification is an addendum to the rules-ng-ng specification and assumes familiarity with it.
|
|
|
|
2. Format
|
|
|
|
2.1. Line format
|
|
|
|
The initial indentation of a line is divided by 8 and the result determines the position in the document structure (similar to the Python language).
|
|
A "//" anywhere in the line causes the rest to be converted to an XML comment (like C++)
|
|
A line starting with ":" creates a <doc> tag with the rest of the line (excluding anything starting with //).
|
|
The content of multiple lines starting with ":" is merged in a single <doc> tag.
|
|
|
|
2.2. Tokenization
|
|
|
|
The line is then tokenized.
|
|
Token are generally continuous strings on non-whitespace characters, with some exceptions
|
|
Some characters (such as ":", "=" and "-") form a single-character token.
|
|
Text within double quotes generates a <brief> tag.
|
|
Any token formatted as ATTR(VALUE) generates an ATTR="VALUE" attribute. No whitespace allowed between ATTR and the '(' character.
|
|
Any token formatted as (VALUE) generates a variants="VALUE" attribute.
|
|
Any token formatted as (VARSET=VALUE) generates a varset="VARSET" variants="VALUE" attribute.
|
|
|
|
2.3. Special token sequences
|
|
|
|
These sequences are recognized and extracted before matching the line format:
|
|
|
|
: NUM
|
|
set REGLIKE to regNUM
|
|
you must specify a type if the reg is anonymous
|
|
the : is recognized only if it is the third or successive token (and not the last) to avoid ambiguity with bitfields and generic tags
|
|
|
|
{ STRIDE }
|
|
stride="STRIDE" attribute
|
|
|
|
[ LENGTH ]
|
|
length="LENGTH" attribute
|
|
|
|
!FLAGS
|
|
access="FLAGS"
|
|
no whitespace allowed after '!'
|
|
|
|
:=
|
|
at the end of the line
|
|
set REGLIKE to "stripe"
|
|
|
|
=
|
|
at the end of the line
|
|
set REGLIKE to "array"
|
|
|
|
inline
|
|
at the beginning of the line
|
|
inline="yes" attribute
|
|
|
|
2.4. Line patterns
|
|
|
|
The following line patterns are understood.
|
|
Only word tokens are used to match lines.
|
|
All tokens with special meaning are treated separately as described above.
|
|
[FOO] means that FOO is optional
|
|
|
|
#import "FILE"
|
|
<import file="FILE"/>
|
|
|
|
#pragma regNUM
|
|
REGLIKE is now set by default to regNUM instead of reg32
|
|
|
|
@TAG [NAME]
|
|
<TAG name="NAME"/>
|
|
use this if there are no children
|
|
|
|
TAG [NAME] :
|
|
<TAG name="NAME">
|
|
use this if there are children
|
|
|
|
TOKEN
|
|
<value value="TOKEN" /> if inside a reg or enum and TOKEN starts with a digit
|
|
<value name="TOKEN" /> if inside a reg or enum and TOKEN does not start with a digit
|
|
<REGLIKE offset="TOKEN" /> otherwise
|
|
|
|
POS NAME
|
|
<bitfield low="POS" high="POS" name="NAME"/> if inside a reg or bitset
|
|
<REGLIKE offset="POS" name="NAME"> otherwise
|
|
|
|
LOW - HIGH NAME [TYPE]
|
|
<bitfield low="LOW" high="HIGH" name="NAME" type="TYPE"/>
|
|
|
|
VALUE = NAME
|
|
<value value="VALUE" name="NAME"/>
|
|
|
|
use WHAT NAME
|
|
<use-WHAT name="NAME" />
|
|
|
|
OFFSET NAME [TYPE]
|
|
<REGLIKE offset="OFFSET" name="NAME" type="TYPE">
|
|
|