рд░реЗрдб рд╣реЕрдЯ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдиреЗ рдЧреЛрд▓ рдЕрд╕реЗрдВрдмреНрд▓реА рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рджрд░ рдХреЗрд▓реА. GNU рдореЗрдХ 4.2 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рд░рд┐рдЪрд░реНрдб рдбрдмреНрд▓реНрдпреВрдПрдо рдЬреЛрдиреНрд╕, рд▓реЗрдЦрдХ libguestfs, Red Hat рдпреЗрдереЗ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ, рдУрд│рдЦ рдХрд░реВрди рджрд┐рд▓реА рдирд╡реАрди рдЕрд╕реЗрдВрдмреНрд▓реА рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЧреЛрд▓, рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪреА рдПрдХреВрдг рд╕рд╛рдзреЗрдкрдгрд╛ рдЖрдгрд┐ рд╕рдордЬрдгреНрдпрд╛рдпреЛрдЧреНрдпрддрд╛ рд░рд╛рдЦреВрди рдореЗрдХрдЪреНрдпрд╛ рдЙрдкрдпреБрдХреНрддрддреЗрддреАрд▓ рдХрдорддрд░рддрд╛ рдЖрдгрд┐ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рдЖрд╣реЗ. рдореЗрдХ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреА рд░рдЪрдирд╛ 1976 рдордзреНрдпреЗ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА рд╣реЛрддреА рдЖрдгрд┐ рддреНрдпрд╛рдд рдЕрдиреЗрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдЙрдгреАрд╡рд╛ рдЖрд╣реЗрдд; рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓реНрдкрдирд╛ рди рдмрджрд▓рддрд╛ рдпрд╛ рдЙрдгреАрд╡рд╛ рджреВрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдзреНрдпреЗрдпреЗ рдпреЛрдЬрдирд╛ рдЖрдЦрддрд╛рдд.
рдзреНрдпреЗрдп рд╕реНрддреНрд░реЛрдд рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд GPLv2+ рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд.

рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЬрд╛рддреАрд▓:

  • рдХреЗрд╡рд│ рдПрдХрд╛ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдирд┐рд░рд╛рдХрд░рдг рдпреБрдХреНрддреАрд╕рд╛рдареА рд╕рдорд░реНрдерди - "рд▓рдХреНрд╖реНрдп рдлрд╛рдЗрд▓ рдЧрд╣рд╛рд│ рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдкреИрдХреА рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬреБрдиреА рдЕрд╕рд▓реНрдпрд╛рд╕ рдЕрд╕реЗрдВрдмрд▓реА рд╕реВрдЪрдирд╛ рдЪрд╛рд▓рд╡рд┐рд▓реА рдЬрд╛рддреЗ." URL рдЪреА рдЙрдкрд╕реНрдерд┐рддреА рддрдкрд╛рд╕рдгреЗ, рдХреЛрдгрддреНрдпрд╛рд╣реА рдлрд╛рдИрд▓рд╢реА рдмрджрд▓рд╛рдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ, рдкреЕрдХреЗрдЬ рдмрд┐рд▓реНрдб рдЗрдирдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреЗ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЗрддрд░ рдпреБрдХреНрддреНрдпрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рдЪреА рдзреНрдпреЗрдпреЗ рдпреЛрдЬрдирд╛ рдЖрд╣реЗрдд. рдХреЛрдЬреА, рдЪреЗрдХрд╕рдордЪреА рддреБрд▓рдирд╛, рдЪрд╛рдЪрдгреНрдпрд╛ рдирд┐рд╡рдбрдХ рд╡рдЧрд│реВрди рдЪрд╛рдЪрдгреА рдкреНрд░рдХрд░рдгреЗ рдЪрд╛рд▓рд╡рдгреЗ.
  • рдмрд┐рд▓реНрдб рдЯрд╛рд░реНрдЧреЗрдЯреНрд╕рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛, рдореЗрдХ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдирд┐рдпрдорд╛рдВрдЪреА рдирд╛рд╡реЗ рд╡реЗрдЧрд│реЗ рдХрд░рдд рдирд╛рд╣реА рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдореА, рдирд┐рдпрдо рдЪрд╛рд▓рд╡рддрд╛рдирд╛, рддреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдЪрд╛ рджрд╛рд╡рд╛ рдХрд░рдд рдЕрд╕рд▓реЗрд▓реА рдлрд╛рдЗрд▓ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рдИрд▓ рдпрд╛рдЪреА рдХреЛрдгрддреАрд╣реА рддрдкрд╛рд╕рдгреА рдХреЗрд▓реА рдЬрд╛рдд рдирд╛рд╣реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ "рдЪрд╛рдЪрдгреА" рдирд╛рд╡рд╛рдЪрд╛ рдирд┐рдпрдо рдЕрд╕реЗрд▓ рдЬреЛ рдЪрд╛рдЪрдгреНрдпрд╛рдВрд╕рд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рддреЛ, "рдЪрд╛рдЪрдгреА" рдирд╛рд╡рд╛рдЪреА рдлрд╛рдИрд▓ рдЪреБрдХреВрди рддрдпрд╛рд░ рдЭрд╛рд▓реА рдЕрд╕реЗрд▓, рддрд░ рдЪрд╛рдЪрдгреНрдпрд╛ рдпрд╛рдкреБрдвреЗ рдХреЙрд▓ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реАрдд, рдХрд╛рд░рдг рдореЗрдХ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдИрд▓ рдХреА рд▓рдХреНрд╖реНрдп рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рдХреЛрдгрддреАрд╣реА рдХреНрд░рд┐рдпрд╛ (рдореЗрдХрдордзреАрд▓ рд╕рдорд╕реНрдпреЗрд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА тАЬ.PHONY: рдЪрд╛рдЪрдгреАтАЭ рдирд┐рд░реНрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛). рдЙрджреНрджрд┐рд╖реНрдЯреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдирд┐рдпрдорд╛рдВрдЪреА рдирд╛рд╡реЗ рд╡реЗрдЧрд│реЗ рдХрд░рддрд╛рдд.

    рд░реЗрдб рд╣реЕрдЯ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдиреЗ рдЧреЛрд▓ рдЕрд╕реЗрдВрдмреНрд▓реА рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рджрд░ рдХреЗрд▓реА. GNU рдореЗрдХ 4.2 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

  • рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рдлрдХреНрдд рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдд рд╕рдорд╕реНрдпрд╛.

    рд░реЗрдб рд╣реЕрдЯ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдиреЗ рдЧреЛрд▓ рдЕрд╕реЗрдВрдмреНрд▓реА рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рджрд░ рдХреЗрд▓реА. GNU рдореЗрдХ 4.2 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

    рдзреНрдпреЗрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдирд╛рд╡рд╛рд╡рд░реВрди рдбреАрдмрдЧ рдлрд╛рдЗрд▓рдЪреЗ рдЪрд┐рдиреНрд╣ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдХрд╛рдвреВ рд╢рдХрддрд╛:

    рд░реЗрдб рд╣реЕрдЯ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдиреЗ рдЧреЛрд▓ рдЕрд╕реЗрдВрдмреНрд▓реА рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рджрд░ рдХреЗрд▓реА. GNU рдореЗрдХ 4.2 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

  • рд╢реЗрд▓ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдд рд╕рдорд╕реНрдпрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрд╛рдИрд▓ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрдордзреАрд▓ рд╕реНрдкреЗрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдкрдбрдгреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ, рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛рдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╢реЗрд▓ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╕реБрд░реВ рдХрд░рддрд╛рдирд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рдЕрдкрд╡реНрдпрдп, тАЬ$тАЭ рдЕрдХреНрд╖рд░рд╛рдЪреЗ рджреБрд╣реЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ (рд╢реЗрд▓ рдЖрдгрд┐ рдореЗрдХ рджреЛрдиреНрд╣реАрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ), рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди.

    рдкрд╛рд░реНрд╕рд░ рд╡рд╛рдкрд░реВрди рдЕрд╕реЗрдВрдмрд▓реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА (тАЬ$тАЭ рдлрдХреНрдд рд╢реЗрд▓рд╕рд╛рдареА рд░рд╛рд╣рддреЗ) рд╕рд╛рдареА тАЬ$тАЭ рдРрд╡рдЬреА тАЬ%тАЭ рдЪрд┐рдиреНрд╣ рд╡рд╛рдкрд░реВрди рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЧреЛрд▓реНрд╕рдордзреНрдпреЗ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. LALR(1), рдЬреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд░реНрдЧ рдЖрдгрд┐ рдлрд╛рдИрд▓рдЪреА рдирд╛рд╡реЗ рдХреЛрдЯреНрд╕рд╕рд╣ рд╡реЗрдврдгреЗ рдЖрдгрд┐ рдХреБрд░рд│реЗ рдмреНрд░реЗрд╕реЗрд╕рд╕рд╣ рдХреЛрдб рдмреНрд▓реЙрдХреНрд╕ рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рдВрдкреВрд░реНрдг рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХрдорд╛рдВрдб рд╢реЗрд▓рдЪреНрдпрд╛ рдПрдХрд╛ рдкреНрд░рд╕рдВрдЧрд╛рдд рд▓реЙрдиреНрдЪ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдмреНрд▓реЙрдХрдордзреНрдпреЗ, рд╡рд┐рд╢реЗрд╖ рд╕реНрдкреЗрд╕рдЪрд╛ рд╕рдВрджрд░реНрдн рди рдШреЗрддрд╛, рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЛрдб рдлреЙрд░рдореЕрдЯрд┐рдВрдЧрд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.

    рд╣реЛрддреЗ:
    рд▓рдХреНрд╖реНрдп: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    рдЭрд╛рд▓реЗ:
    "target": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

рдзреНрдпреЗрдпрд╛рдВрдЪреА рдЗрддрд░ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

  • рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╛рд╡реЗ рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпреА рд╕рдорд░реНрдерди:

    рдзреНрдпреЗрдп рд╕рд░реНрд╡ = : "рд▓рдХреНрд╖реНрдп"

    рдзреНрдпреЗрдп рд▓рд┐рдВрдХ =
    "рд▓рдХреНрд╖реНрдп" : "foo.o", "bar.o" { ... }

    рдзреНрдпреЗрдп рд╕рдВрдХрд▓рд┐рдд (рдирд╛рд╡) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • рджреЛрди рд▓реЙрдиреНрдЪ рдореЛрдб: рдлрд╛рдЗрд▓рдирд╛рд╡рд╛рдВрд╕рд╣ рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдпрд╛рдВрд╢реА рдЬреБрд│рдгреНрдпрд╛рд╕рд╛рдареА рдореЛрдб рдмрдирд╡рд╛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрд╛рдЗрд▓ "foo.o" рд▓рдХреНрд╖реНрдп "%name.o" рд╢реА рдЬреБрд│рддреЗ), рдЖрдгрд┐ рдереЗрдЯ рд╕рдВрдХрд▓рди рдореЛрдб:

    рдзреНрдпреЗрдп рд╕рд░реНрд╡ = : рджреБрд╡рд╛

    рдзреНрдпреЗрдп рд▓рд┐рдВрдХ =
    "рд▓рдХреНрд╖реНрдп" : "foo.o", рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛ ("рдмрд╛рд░") { ... }

    рдзреНрдпреЗрдп рд╕рдВрдХрд▓рд┐рдд (рдирд╛рд╡) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • рдЕрд╕реЗрдВрдмреНрд▓реА рд░рдгрдиреАрддреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдорд╛рдВрджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рд▓рдХреНрд╖реНрдп рдкреБрдиреНрд╣рд╛ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЬрд░ рдлрд╛рдИрд▓рдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрд╕рд╛рдареА рд▓рд┐рдВрдХ рдмрдирд╡рд▓реА рдЕрд╕реЗрд▓, рддрд░ рд╣реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рдиреНрд╣рд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рдирд┐рдпрдо рдирд╛рд╡рд╛рд╕рд╛рдареА "рд▓рдХреНрд╖реНрдп" рдЖрдгрд┐ рдлрд╛рдЗрд▓ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА *рдлрд╛рдЗрд▓ ("рд▓рдХреНрд╖реНрдп")).

    "рд▓рдХреНрд╖реНрдп" : "foo.o", "bar.o" { ... }

    *рдлрд╛рдЗрд▓("рд▓рдХреНрд╖реНрдп"): *рдлрд╛рдЗрд▓("foo.o"), *рдлрд╛рдЗрд▓("bar.o") { ... }

  • рд╡рд┐рдХрд╕рдХ рдЕрд╕реЗрдВрдмреНрд▓реА рд░рдгрдиреАрддреАрдВрдЪреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЧреБрдгрдзрд░реНрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд. "*рдлрд╛рдЗрд▓" рдзреНрд╡рдЬ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (@{...} рдЖрдЙрдЯрдкреБрдЯрдЪреЗ рджрдбрдкрд╢рд╛рд╣реА рджрд░реНрд╢рд╡рддреЗ рдЖрдгрд┐ "рдПрдХреНрдЭрд┐рдЯ 99" рдкреБрдирд░реНрдмрд╛рдВрдзрдгреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рджрд░реНрд╢рд╡рддреЗ):

    рдпреБрдХреНрддреА *рдлрд╛рдЗрд▓ (рдлрд╛рдЗрд▓рдирд╛рд╡) = @{
    рдЪрд╛рдЪрдгреА -f % рдлрд╛рдЗрд▓рдирд╛рд╡ || рдмрд╛рд╣реЗрд░ рдкрдбрд╛ 99
    % рдордзреНрдпреЗ f рд╕рд╛рдареА

    рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛