semi合集-English.pdf - 第5925页

SEMI P39-0304 E2 © SEMI 2004 28 CELL -> ‘14’ <cellname-string> XYABSOLUTE -> ‘15’ XYRELATIVE -> ‘16’ PLACEMENT -> ‘1 7’ <placem ent-info-b yte> [ <referen ce-number> | < cellname-string&g…

100%1 / 7923
SEMI P39-0304
E2
© SEMI 2004 27
36 Detailed BNF Syntax
36.1 This specification uses a modified Backus-Naur Form (BNF) notation to describe OASIS file syntax. The
following table summarizes the conventions used in the modified BNF:
Table 16 Modified BNF Notation
Symbol Term Meaning
ABCD
Bold Uppercase Denotes an OASIS record name
abcd
Bold Lowercase Denotes a fundamental data type defined in Section 7
< > Angle Brackets Enclose an element name which is further defined elsewhere in the BNF
-> Arrow Means “is composed of”
[ ] Square Brackets Enclose element(s) which are optional, and if present, occur only once
{ } Braces Enclose element(s) which are required
| Vertical Bar Indicates a choice between mutually exclusive elements within { } braces
* Asterisk An asterisk following an element means the element may occur zero or more times
... Ellipsis Appears between elements to indicate a variable-length list of like type
‘ ’ Single Quotes Enclose a decimal number denoting an OASIS unsigned-integer
“ ” Double Quotes Enclose a literal character string
<CR> Control Character Angle brackets enclose the name of an ASCII Control Character within a string
// Double Virgule Indicates all characters to its right are comments—not part of the syntax
36.2 The OASIS syntax is detailed as follows:
<oasis-file> -> <magic-bytes> START { CBLOCK | PAD | PROPERTY | <cell> | <name> }* END
<name> -> { CELLNAME | TEXTSTRING | LAYERNAME | PROPNAME | PROPSTRING | XNAME }
<cell> -> { CELL { CBLOCK | PAD | PROPERTY | XYRELATIVE | XYABSOLUTE | <element> }* }
<element> -> { <geometry> | PLACEMENT | TEXT | XELEMENT }
<geometry> -> { RECTANGLE | POLYGON | PATH | TRAPEZOID | CTRAPEZOID | CIRCLE | XGEOMETRY }
<magic-bytes> -> “%SEMI-OASIS<CR><NL>
PAD -> ‘0’
START -> ‘1’ <version-string> <unit> <offset-flag> [ <table-offsets> ]
END -> ‘2’ [ <table-offsets> ] <padding-string> <validation-scheme> [ <validation-signature> ]
CELLNAME -> ‘3’ <cellname-string>
CELLNAME -> ‘4’ <cellname-string> <reference-number>
TEXTSTRING -> ‘5’ <text-string>
TEXTSTRING -> ‘6’ <text-string> <reference-number>
PROPNAME ->
‘7’ <propname-string>
PROPNAME -> ‘8’ <propname-string> <reference-number>
PROPSTRING -> ‘9’ <prop-string>
PROPSTRING -> ‘10’ <prop-string> <reference-number>
LAYERNAME -> ‘11’ <layername-string> <layer-interval> <datatype-interval>
LAYERNAME -> ‘12’ <layername-string> <textlayer-interval> <texttype-interval>
CELL -> ‘13’ <reference-number>
SEMI P39-0304
E2
© SEMI 2004 28
CELL -> ‘14’ <cellname-string>
XYABSOLUTE -> ‘15’
XYRELATIVE -> ‘16’
PLACEMENT -> ‘17’ <placement-info-byte> [ <reference-number> | <cellname-string> ]
[<x> ] [ <y> ] [ <repetition> ]
PLACEMENT -> ‘18’ <placement-info-byte> [ <reference-number> | cellname-string> ]
[ <magnification> ] [ <angle> ] [ <x> ] [ <y> ] [ <repetition> ]
TEXT -> ‘19’ <text-info-byte> [ <reference-number> | <text-string> ] <l-t> [ <x> ] [ <y> ] [ <repetition> ]
RECTANGLE -> ‘20’ <rectangle-info-byte> <l-d> [ <width> ] [ <height> ] [ <x> ] [ <y> ] [ <repetition> ]
POLYGON -> ‘21’ <polygon-info-byte> <l-d> [ <point-list> ] [ <x> ] [ <y> ] [ <repetition> ]
PATH -> ‘22’ <path-info-byte> <l-d> [ <half-width> ]
[ <extension-scheme> [ <start-extension> ] [ <end-extension> ] ]
[ <point-list> ] [ <x> ] [ <y> ] [ <repetition> ]
TRAPEZOID -> ‘23’ <trap-info-byte> <l-d> [ <width> ] [ <height> ] <delta-a> <delta-b>
[ <x> ] [<y> ] [ <repetition> ]
TRAPEZOID -> ‘24’ <trap-info-byte> <l-d> [ <width> ] [ <height> ] <delta-a>
[ <x> ] [<y> ] [ <repetition> ]
TRAPEZOID -> ‘25’ <trap-info-byte> <l-d> [ <width> ] [ <height> ] <delta-b>
[ <x> ] [<y> ] [ <repetition> ]
CTRAPEZOID -> ‘26’ <ctrapezoid-info-byte> <l-d> [ <ctrapezoid-type> ] [ <width> ] [ <height> ] [ <x> ] [ <y> ]
[ <repetition> ]
CIRCLE -> ‘27’ <circle-info-byte> <l-d> [ <radius> ] [ <x> ] [ <y> ] [ <repetition> ]
PROPERTY -> ‘28’ <prop-info-byte> [ <reference-number> | <propname-string> ]
[ <prop-value-count> ] [ <property-value>* ]
PROPERTY -> ‘29’
XNAME -> ‘30’ <xname-attribute> <xname-string>
XNAME -> ‘31’ <xname-attribute> <xname-string> <reference-number>
XELEMENT -> ‘32’ <xelement-attribute> <xelement-string>
XGEOMETRY -> ‘33’ <xgeometry-info-byte> <xgeometry-attribute> <l-d> <xgeometry-string> [ <x> ] [ <y> ]
[ <repetition> ]
CBLOCK -> ‘34’ <comp-type> <uncomp-byte-count> <comp-byte-count> <comp-bytes>
<table-offsets> -> <cellname-flag> <cellname-offset>
<textstring-flag> <textstring-offset>
<propname-flag> <propname-offset>
<propstring-flag> <propstring-offset>
<layername-flag> <layername-offset>
<xname-flag> <xname-offset>
SEMI P39-0304
E2
© SEMI 2004 29
<offset-flag>, <cellname-flag>, <cellname-offset>, <textstring-flag>, <textstring-offset>,
<propname-flag>, <propname-offset>, <propstring-flag>, <propstring-offset>,
<layername-flag>, <layername-offset>, <xname-flag>, <xname-offset> -> unsigned-integer
<padding-string> -> b-string
<validation-scheme> -> unsigned-integer
<validation-signature> -> byte*
<placement-info-byte>, <text-info-byte>, <rectangle-info-byte>,
<polygon-info-byte>, <path-info-byte>, <trap-info-byte>, <ctrapezoid-info-byte>,
<circle-info-byte>, <prop-info-byte>, <xgeometry-info-byte> -> byte
<layer-interval>, <datatype-interval>, <textlayer-interval>, <texttype-interval> -> <layer-interval>
<layer-interval> -> { <li0> | <li1> | <li2> | <li3> | <li4> }
<li0> -> ‘0’
<li1> -> ‘1’ <bound-a>
<li2> -> ‘2’ <bound-a>
<li3> -> ‘3’ <bound-a>
<li4> -> ‘4’ <bound-a> <bound-b>
<bound-a>, <bound-b> -> unsigned-integer
<l-d> -> [ <layer-number> ] [ <datatype-number> ]
<l-t> -> [ <textlayer-number> ] [ <texttype-number> ]
<layer-number>, <datatype-number>, <textlayer-number>, <texttype-number> -> unsigned-integer
<reference-number> -> unsigned-integer
<cellname-string>, <propname-string>, <layername-string> -> <n-string>
<version-string>, <text-string> -> <a-string>
<prop-string>, <xname-string> -> { <a-string> | <b-string> | <n-string> }
<xelement-string>, <xgeometry-string> -> <b-string>
<a-string>, <b-string>, <n-string> -> <string-length> byte*
<string-length> -> unsigned-integer
<xname-attribute>, <xelement-attribute>, <xgeometry-attribute> -> unsigned-integer
<property-value> -> { <pvreal> | <pv8> | <pv9> | <pv10> | <pv11> | <pv12> | <pv13> | <pv14> | <pv15> }
<pvreal> -> <real>
<pv8> -> ‘8’ unsigned-integer
<pv9> -> ‘9’ signed-integer
<pv10> -> ‘10’ <a-string>
<pv11> -> ‘11’ <b-string>
<pv12> -> ‘12’ <n-string>
<pv13> -> ‘13’ <reference-number> // a-string
<pv14> -> ‘14’ <reference-number> // b-string
<pv15> ->
‘15’ <reference-number> // n-string