Операционная система UNIX. Руководство программиста

     

СИНТАКСИС УПРАВЛЯЮЩЕГО ЯЗЫКА РЕДАКТОРА СВЯЗЕЙ


Примечание

В данном разделе символы квадратных и фигурных скобок несут двойную нагрузку:

  • Обычные символы [ ] и { } являются частью синтаксических конструкций и должны присутствовать во входных предложениях.
  • Cимволы [ и ], выделенные жирным шрифтом, указывают, что заключенная в них часть синтаксической конструкции является необязательной.
  • Символы { и }, выделенные жирным шрифтом, указывают, что заключенная в них часть синтаксической конструкции может быть повторена несколько раз.

Символ перевода строки в середине правила эквивалентен символу альтернативы |.

ifile ::= {cmd}

cmd ::= memory | sections | assignment | filename | flags

memory ::= MEMORY {[memory_spec]} memory_spec ::= name [attributes]:origin_spec,length_spec

attributes ::= ({ R | W | X | I }) origin_spec ::= origin=long

length_spec ::= length=long

origin ::= origin | o | org | ORIGIN length ::= length | l | len | LENGTH

sections ::= SECTIONS{{sec_or_group}} sec_or_group ::= section | group | library



group ::= GROUPgroup_options:{section_list} section_list ::= section{[,]section} section::=section_name[sec_options]:{[{statement}]} [fill][mem_spec]

group_options ::= [addr_2] | [align_option][block_option]

sec_options ::= [addr_2]

[align_option][type_option][block_option]

addr_2 ::= long | bind(expr) align_option ::= align(expr) align ::= align | ALIGN block_option ::= block(long) block ::= block | BLOCK type_option ::= (DSECT) | (NOLOAD) | (COPY) | (INFO) | (OVERLAY) fill ::= =long

mem_spec ::= name | attributes

statement ::= filename[[COMMON]][fill]

filename(name_list)[[COMMON]][fill]

*(name_list)[[COMMON]][fill]

assignment | library | пусто name_list ::= section_name[{delimiter section_name}]

library ::= -lname

bind ::= bind | BIND

assignment ::= lside assign_op expr end

lside ::= name | . assign_op ::= = | += | -= | *= | /= end ::= ; | , expr ::= expr binary_op expr | term

binary_op ::= * | / | % | + | - | << | >> | == | != > | < | >= | <= | & | &&


term ::= long | name | align(term) | (expr) unary_op term | phy(lside) | sizeof(section_name) next(long) | addr_4(section_name) unary_op ::= ! | - | ~ phy ::= phy | PHY sizeof ::= sizeof | SIZEOF next ::= next | NEXT addr_4 ::= addr | ADDR
flags ::= flag{wht_space flag} flag ::= -ewht_space name | -fwht_space long | -hwht_space long
-lname | -m | -owht_space filename | -r | -s | -t -uwht_space name | -z | -H | -Lpath_name | -М | -N | -S | -V -VSwht_space long | -a | -x delimiter ::= wht_space | , name ::= произвольное допустимое имя переменной
long ::= произвольная допустимая длинная целая константа
wht_space ::= пробел, символ табуляции, перевод строки
filename ::= любое допустимое в ОС UNIX имя файла
path_name ::= любое допустимое в ОС UNIX маршрутное имя
section_name ::= любое допустимое имя секции

Содержание раздела