рдкрд╛рд░реНрд╕ рдФрд░ рдПрдордПрд╕ рдПрдХреНрд╕реЗрд▓ рд╕реВрддреНрд░ рдХреА рдЧрдгрдирд╛

рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рдШрдЯрдХ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬреЛ рд╕реВрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдерд╛ред рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдордПрд╕ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддрдВрддреНрд░ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рд╣реБрдП рд╣реИрдВред



рдФрд░ рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдХрд╛рдо, рдЪрд╛рд▓ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ "рдЬреАрд╡рди рд╕реЗ" рдкреВрд░рдХ рдХреЗ рд╕рд╛рде рдкрддрд▓рд╛ рдкреНрд░рд▓реЗрдЦрди рдХреА рд╕реВрдЦреА рдЫрд▓рдиреА рдХреЛ рдЙрдмрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рдЙрд╕реА рд╕рдордп рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред



рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╕реВрддреНрд░реЛрдВ рдХреЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рддреАрди рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ - рднрд╛рд╡реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛, рднрдВрдбрд╛рд░рдг рдХрд░рдирд╛ рдФрд░ рдЧрдгрдирд╛ рдХрд░рдирд╛ред





рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡



рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди , рдЖрд░рдкреАрдПрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЖрд░рдкреАрдПрди рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рд╕рд░рд▓ рд╕рд░рдгреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕рдбрд╣рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдкреВрд░реНрдг ParsedThing рд╕реВрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ:



рд╕рдВрдЪрд╛рд▓рди - рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╕рд░рдгрд┐рдпрд╛рдБ, рд▓рд┐рдВрдХ;
рд╕реНрдерд┐рд░рд╛рдВрдХ:

  • ParsedThingNumeric
  • ParsedThingInt
  • ParsedThingString
  • ParsedThingBool
  • ParsedThingMissingArg
  • ParsedThingError
рд╕рд░рдгрд┐рдпреЛрдВ:

  • ParsedThingArray
рд╕рдВрджрд░реНрдн:

  • ParsedThingName, ParsedThingNameX
  • ParsedThingArea, ParsedThingAreaErr, ParsedThingArea3d, ParsedThingAreaErr3d, ParsedThingAreaN, рдкрд╛рд░реНрд╕рдбрд┐рдВрдЧрд╣рд┐рдВрдЧрд░реЗрд░реА 3 рдбреА ,el
  • ParsedThingRef, ParsedThingRefErr, ParsedThingRef3d, ParsedThingErr3d, ParsedThingRefRel, ParsedThingRef3dRel
  • ParsedThingTable, ParsedThingTableExt


рдСрдкрд░реЗрдЯрд░реНрд╕ - рдЧрдгрд┐рддреАрдп, рддрд╛рд░реНрдХрд┐рдХ, рд╕рдВрджрд░реНрдн, рд╕рд╛рде рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓;
рд╕рдорд╛рд░реЛрд╣ рдХреЙрд▓:

  • ParsedThingFunc
  • ParsedThingFuncVar
рдмрд╛рдЗрдирд░реА рдСрдкрд░реЗрдЯрд░:

  • ParsedThingAdd
  • ParsedThingSubtract
  • ParsedThingMultiply
  • ParsedThingDivide
  • ParsedThingPower
  • ParsedThingConcat
  • ParsedThingLess
  • ParsedThingLessEqual
  • ParsedThingEqual
  • ParsedThingGreaterEqual
  • ParsedThingGreater
  • ParsedThingNotEqual
  • ParsedThingIntersect
  • ParsedThingUnion
  • ParsedThingRange
рдЕрдкрд░ рд╕рдВрдЪрд╛рд▓рдХ:

  • ParsedThingUnaryPlus
  • ParsedThingUnaryMinus
  • ParsedThingPercent


рд╕рд╣рд╛рдпрдХ рддрддреНрд╡ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ (рдЧрдгрдирд╛ рдХреА рдЧрддрд┐ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рд░реЗрдЦрд╛ рд╡рд┐рд░рд╛рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред
рд╕рд╣рд╛рдпрдХ:

  • ParsedThingMemArea
  • ParsedThingMemNoMem
  • ParsedThingMemErr
  • ParsedThingMemFunc
  • ParsedThingParentheses
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • ParsedThingAttrSemi
  • ParsedThingAttrIf
  • ParsedThingAttrChoose
  • ParsedThingAttrGoto
  • ParsedThingAttrSum
  • ParsedThingAttrSpace


рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред

  1. "= рдП 1 * (1 + рд╕рдЪ)"ред рдЖрдВрддрд░рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: {ParsedThingRef (A1), ParsedThingInt (1), ParsedThingBool (true), ParsedThingAdd, ParsedThingMultiply}
  2. "" SUM (A1,1, "2",) "ред рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: {ParsedThingRef (A1), ParsedThingInt (1), ParsedThingString ("2"), ParsedThingMissing, PededThingFuncVar ("SUM", 4 рддрд░реНрдХ)}}


рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ



рд╕реНрдЯреИрдХ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд▓ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдореЗрдВ, рдХреБрдЫ рдЪрд╛рд▓реЗрдВ рдереАрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╕рдВрдкрддреНрддрд┐ "рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░" рдХреЗ рд╕рд╛рде рд╕рднреА рдСрдкрд░реЗрдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред рдпрд╣ рдЧреБрдг рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдзрд╛рд░рдг рдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг рдореВрд▓реНрдпреЛрдВ (рд╕рдВрдЦреНрдпрд╛рддреНрдордХ, рддрд╛рд░реНрдХрд┐рдХ, рдЖрджрд┐) рдкрд░ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХреНрд╕рдкреНрд░реЗрд╢рди A1 рдФрд░ B1: C1 рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдП 1 рдФрд░ рдмреА 1: рд╕реА 1 рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд▓ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдкрд░реЗрдВрдб рд╣реИрдВ:



рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдВрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ:

рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рд╕рдВрджрд░реНрдн
рдирд┐рд░рдВрддрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдореВрд▓реНрдп
рд╕рд░рдгрд┐рдпреЛрдВ рд╕рд░рдгреА
рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдорд╛рди, рд╕рдВрджрд░реНрдн, рд╕рд░рдгреА
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдХреБрдЫ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, INDIRECT) -Reference, рд╢реЗрд╖ - Array (MMULT)ред



рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдПрдХреНрд╕реЗрд▓ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдВрдЫрд┐рдд рдСрдкрд░реЗрдВрдб рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЧрдгрдирд╛ рдХреЗ рдЪрд░рдг рдореЗрдВ, рдХреЛрдИ рднреА "рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг" рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:



рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЛ Array рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдорд╛рди рдХрд╛ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ ( рд╕рд░рдгреА-> рдорд╛рди ) рдореЗрдВ, рд░реВрдкрд╛рдВрддрд░рдг рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕рд░рдгреА рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рди рдпрд╛ рдПрд░реЗ рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрджрд┐ рд╕реЗ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред



рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╕рдордп , рд╢реНрд░реЗрдгреА рдХреЗ рдХрдХреНрд╖реЛрдВ рд╕реЗ рд╕рднреА рдорд╛рди рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рд╕реАрдорд╛ рдЬрдЯрд┐рд▓ рд╣реЛрддреА рд╣реИ (рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░), рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреНрд░реБрдЯрд┐ #VALUE рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ!



рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рд╕рдВрджрд░реНрдн рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИред рд╣рдордиреЗ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рдЖрдкрд╕ рдореЗрдВ "рдХреНрд░реЙрд╕рд┐рдВрдЧ" рдХрд╣рд╛ред рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ:





рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо A4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ A1 рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдорд╛рди рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рд╕реВрддреНрд░ "= B2: B3" рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИред рд░реЗрдВрдЬ рдмреА 2: рдмреА 3 рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдерд╛ рдФрд░ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рд╣реЛрдВрдЧреЗ, рддреЛ A1 рд╕реЗ A4 рддрдХ рдХреЗ рд╕рднреА рд╕реЗрд▓ рдХреЗ рдорд╛рди рдХрд╛ рд╕рдВрджрд░реНрдн #VALUE! рдФрд░ рд╡рд╣ рдЕрдВрдд рд╣реЛрдЧрд╛ред рдХрдХреНрд╖ A2 рдФрд░ A3, B2: B3 рдХреА рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╣реИрдВред рд╕рдВрджрд░реНрдн-> рдЗрди рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдмреА 2: рдмреА 3, рдЕрд░реНрдерд╛рддреН рд╕реЗ рд╕реАрдорд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ред A2 рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг 1 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдФрд░ A3 рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред 2 рдЕрдиреНрдп рдХреЛрд╢рд┐рдХрд╛рдУрдВ, рдЬреИрд╕реЗ A1 рдФрд░ A4 рдХреЗ рд▓рд┐рдП, рд░реВрдкрд╛рдВрддрд░рдг # 1% рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛!



рдареАрдХ рдпрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ B7: C7 рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд░реЗрдЦрд╛ рд╣реЛрддреА рд╣реИред B6 рдФрд░ C6 рдХреЗ рд▓рд┐рдП, рд░реВрдкрд╛рдВрддрд░рдг рдХреНрд░рдорд╢рдГ 3 рдФрд░ 4 рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛, рдФрд░ A6 рдФрд░ - D6 #VALUE рдХреЗ рд▓рд┐рдП! рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рд╕реАрдорд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдереАрдВ, рддреЛ рд░реВрдкрд╛рдВрддрд░рдг #VALUE! A6 рд╕реЗ D6 рддрдХ рдХреА рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП



рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдирд┐рдпрдо рд╣реИрдВред



рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдлреЙрд░реНрдореВрд▓реЛрдВ рдХрд╛ рдорд╛рди рд╣рдореЗрд╢рд╛ рд╡реИрд▓реНрдпреВ рдЯрд╛рдЗрдк рдкрд░ рд╣реЛрддрд╛ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



рдЧрдгрд┐рддреАрдп, рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рдкрд╛рда рд╕рдВрдЪрд╛рд▓рдХ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ред рдЗрд╕рд▓рд┐рдП, рдЙрдирдХреЗ рд▓рд┐рдП рддрд░реНрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╛ рддреЛ рдореВрд▓реНрдп рдпрд╛ рдЕрд░реНрд░реЗ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдРрд░реЗ рдлреЙрд░реНрдореВрд▓реЗ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХрдХреНрд╖ A1 рдореЗрдВ рджрд░реНрдЬ "= B1: B2 + A3: B3" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧрдгрд┐рддреАрдп рдЬреЛрдбрд╝ рдСрдкрд░реЗрдЯрд░ рдХреЗ рджреЛрдиреЛрдВ рддрд░реНрдХ рдкрд╣рд▓реЗ рдХреНрд░реЙрд╕рд┐рдВрдЧ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдпрд╛рдиреА рдорд╛рди B1 рдФрд░ A3 рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред



рд▓рд┐рдВрдХ рдСрдкрд░реЗрдЯрд░ рд╕рдВрджрд░реНрдн рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрддреНрд░ "= A1:" рдкрд░реАрдХреНрд╖рдг "" рдЧрд▓рдд рд╣реЛрдЧрд╛, рдРрд╕реЗ рд╕реВрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА - Excel рдмрд╕ рдРрд╕реЗ рд╕реВрддреНрд░ рдХреЛ рд╕реЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред



"рдирд╛рдо" рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░ рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИрдВ ред рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рд╕реВрддреНрд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рднрд╛рд╡ рдЬрд┐рд╕рдореЗрдВ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреБрдЫ "рдирд╛рдо" рдирд╛рдо "= A1: B1" рдХреЗ рдЕрдВрджрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд░реЗрдВрдЬ A1: B1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред рд╕реЗрд▓ рдореЗрдВ рд╕рдорд╛рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдПрдХрд▓ рдорд╛рди рдпрд╛ #VALUE рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА! рд▓реЗрдХрд┐рди рд╕реЗрд▓ "= рдирд╛рдо" рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд╛рдЗрдк рд╡реИрд▓реНрдпреВ рдХреА рд╣реЛрдЧреА рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред



рдкрд╛рд░реНрд╕рд░



рд╣рдорд╛рд░реЗ рдШреБрдЯрдиреЛрдВ рдкрд░ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд░рд╛рдХреНрд╖рд╕ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдФрд░ рдЦрд░рд╛рдм рдЖрдзреБрдирд┐рдХ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирддреЗ рдереЗ рдЬрдм рдкрд╛рд░реНрд╕рд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЦреБрдж рдХреЛ рдХреЛрдХреЛ / рдЖрд░ рдЕрдиреБрд╡рд╛рджрдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░ рдХрд┐рдпрд╛ред рдкрд╕рдВрдж рдЙрд╕ рдкрд▓ рдореЗрдВ рдЙрд╕ рдкрд░ рдЧрд┐рд░ рдЧрдИ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕рд╕реЗ рдХрд╛рдлреА рдкрд░рд┐рдЪрд┐рдд рдерд╛ред рдХреЛрдХреЛ / рдЖрд░ рдореЗрд░реА рдЙрдореНрдореАрджреЛрдВ рдкрд░ рдЦрд░рд╛ рдЙрддрд░рд╛ред рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕рд░ рдиреЗ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдП, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдмрдиреЗ рд░рд╣рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред



рдмреЗрд╢рдХ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдХреЛрдХреЛ / рдЖрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рд▓реЗрдЦрди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╣реИрдмрд░ рдкрд░ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ ред



рд╣рдо рд╕реНрд░реЛрдд рд╕реЗ рдХреЛрдХреЛ / рдЖрд░ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ


рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдХреЛрдХреЛ / рдЖрд░ рдЧреИрд░-рд╕реАрдПрд▓рдПрд╕-рдЕрдиреБрд░реВрдк рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред



рд╕рдорд╕реНрдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ - рд╕рд╣реА рдХреЛрдХреЛ / рдЖрд░, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред



рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЕрдлрд╡рд╛рд╣ рдлреИрд▓рдиреЗ рдХреЗ рдмрд╛рдж рддреАрди рдЬрдЧрд╣ рдорд┐рд▓реАрдВ рдЬрд╣рд╛рдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рд╡реЗ рд╕рднреА ParserGen.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

void GenTokens() { foreach (Symbol sym in tab.terminals) { if (Char.IsLetter(sym.name[0])) gen.WriteLine("\tpublic const int _{0} = {1};", sym.name, sym.n); } }
      
      







рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдЕрдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдм FxCop рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЪреВрдВрдХрд┐ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдирд╛рдирд╛ рдФрд░ рдЙрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ Microsoft.Design рдирд┐рдпрдо рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ : CA1051 ред рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ Parser.frame рдФрд░ Scanner.frame рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ, рдЬреЛ рд╡реНрдпрд╛рдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдпрд╣реА рд╣реИ, рдХреЛрдХреЛ / рдЖрд░ рдЦреБрдж рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:



 public Scanner scanner; public Errors errors; public Token t; // last recognized token public Token la; // lookahead token
      
      





рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд╣рд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдирд┐рдЬреА рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред



рдХреЛрдХреЛ / рдЖрд░ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдПрдХ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдЙрд╕рдХреЗ рдЪреВрддрдбрд╝
  • рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ;
  • рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдЬрдирд░реЗрдЯрд░ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╢реБрд░реБрдЖрдд;
  • рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП Intellisense
  • рд╡реНрдпрд╛рдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдкрд░ рдкрд╛рд░реНрд╕рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ




рдЕрдВрддрд┐рдо рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ - рдЗрд╕рдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред





рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реАрдПрд▓рдПрд╕ рдЕрдиреБрд░реВрдк рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рдХреЛрдХреЛ / рдЖрд░ рдХреЗ рд╕рд╛рде рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред



рд╣рдо рд╕реНрдХреИрдирд░ рдФрд░ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ


рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдХреЛ / рдЖрд░ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ - рдкрд╛рд░реНрд╕рд░ рдФрд░ рд╕реНрдХреИрдирд░ред рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рднрд╛рд╡ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрд▓ рдкрд░ рд╕реНрдХреИрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд╛рд░реНрд╕рд░ рд╕реНрдХреИрдирд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдкрд╣рд▓рд╛ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдареАрдХ рдЗрд╕реА рдкрд░ рдЫреБрдЖред



рджреВрд╕рд░реЗ рдЕрдкрдЧреНрд░реЗрдб рдореЗрдВ рдмрдлрд╝рд░ рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рд╢рд╛рдорд┐рд▓ рдереА, рдЬрд┐рд╕реЗ рд╕реНрдХреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреИрд░реЗрдХреНрдЯрд░ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕ рдХреЛрдХреЛ / рдЖрд░ рдореЗрдВ рдмрдлрд╝рд░ рдФрд░ UTF8Buffer рдХреЗ рдПрдХ рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рджреЛрдиреЛрдВ рдПрдХ рдзрд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдмрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, StringBuffer рдХрд╛ рддреАрд╕рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде IBuffer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВ:



 public interface IBuffer { string GetString(int beg, int end); int Peek(); int Pos { get; set; } int Read(); }
      
      





StringBuffer рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд░рд▓ рд╣реИ:



 public class StringBuffer : IBuffer { int stringLen; int bufPos; string str; public StringBuffer(string str) { stringLen = str.Length; this.str = str; if (stringLen > 0) Pos = 0; else bufPos = 0; } public int Read() { if (bufPos < stringLen) return str[bufPos++]; else return StreamBuffer.EOF; } public int Peek() { int curPos = Pos; int ch = Read(); Pos = curPos; return ch; } public string GetString(int beg, int end) { return str.Substring(beg, end - beg); } public int Pos { get { return bufPos; } set { if (value < 0 || value > stringLen) throw new FatalError("buffer out of bounds access, position: " + value); bufPos = value; } } }
      
      







рдкрд░реАрдХреНрд╖рдг
рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рд╣реИред рд╣рдо рд▓рдВрдмрд╛рдИ рдПрди рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреАрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

  1. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг;
  2. рдПрдХ рдЪрд░рд┐рддреНрд░ рдкрдврд╝рдирд╛ (IBuffer.Read () рд╡рд┐рдзрд┐ N рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛);
  3. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ 10 рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (IBuffer.GetString (i-10, i) (N-10) рдмрд╛рд░ рдХреЙрд▓ рдХрд░реЗрдВ)ред




рдЬрдм рдПрди = 100:

Init x 100000:

рдмрдлрд░: 171 рдПрдордПрд╕

рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрдЧрд░: 2 рдПрдордПрд╕

рдкрдврд╝реЗрдВ xNx10000:

рдмрдлрд░: 14 рдПрдордПрд╕

рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрдЧрд░: 8ms

рдЧреЗрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ x (N-10) x 10000:

рдмрдлрд░: 250 рдПрдордПрд╕

рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрдЧрд░: 20 рдПрдордПрд╕





рд╡реНрдпрд╛рдХрд░рдг рдбрд┐рдЬрд╛рдЗрди


рдХреЛрдХреЛ / рдЖрд░ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг RBNF ( EBNF ) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ ред рдХреЛрдХреЛ / рдЖрд░ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЖрд░рдмреАрдПрдирдПрдл рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдПрдЯреАрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдХреЛ / рдЖрд░ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред



рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рдВрд╢ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдПрд▓рдПрд▓ (рдХреЗ) рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдХреИрдирд░ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред



рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпрд╛рдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓рд╛ рднрд╡рд┐рд╖реНрдп рд╕рдВрдХрд▓рдХ рдХрд╛ рдирд╛рдо рд╣реИ:



 COMPILER FormulaParserGrammar
      
      





рд╕реНрдХреИрдирд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдХреИрдирд░ рдХреЗрд╕-рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛрдЧрд╛, рд╣рдо рдЗрд╕реЗ IGNORECASE рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ, рдЕрдХреНрд╖рд░реЛрдВ, рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдХрд▓рд╛:



 CHARACTERS digit = "0123456789". chars = "~!@#$%^&*()_-+={[]}|\\:;\"',./?<> ". eol = '\r'. blank = ' '. letter = ANY - digit - chars - eol - blank + '_'.
      
      





рдХреЛрдХреЛ / рдЖрд░ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдШрдЯрд╛рддрд╛ рднреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╖рд░ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдгреЛрдВ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдКрдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдиреНрдп рд╕реЗрдЯ рдШрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред



рд╕реНрдХреИрдирд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЯреЛрдХрди рдХреА рдкрд╣рдЪрд╛рди рд╣реИред рдкрд╛рд░реНрд╕рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЯреЛрдХрди рдХрд╛ рд╕реЗрдЯ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



 TOKENS ident = letter {letter | digit | '.'}. wideident = letter {letter | digit} ('?'|'\\') {letter | digit | '?'|'\\'}. positiveinumber = digit {digit}. fnumber = "." digit {digit} [("e" | "E") ["+" | "-"] digit {digit}] | digit {digit} ( "." digit {digit} [("e" | "E" ) ["+" | "-"] digit {digit} ] | ("e" | "E") ["+" | "-"] digit {digit} ). space = blank. quotedOpenBracket = "'[". quotedSymbol = "''" | "']" | "'@" | "'#". pathPart = ":\\". trueConstant = "TRUE". falseConstant = "FALSE".
      
      







рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдбреЙрдЯ рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдВрдЬ рд▓рд┐рдВрдХ рдореЗрдВ рд╢реАрдЯ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдпрд╛ рдмреИрдХрд╕реНрд▓реИрд╢ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ, рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдФрд░ рдХрдард┐рди рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕реНрдХреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ:





рдПрдХ рд╣реЛрдЯрд▓ рдЯреЛрдХрди рдореЗрдВ quotedOpenBracket, quotedSymbol рдФрд░ pathPart рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдПрдХ рдЯреНрд░рд┐рдХ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рд▓рд┐рдВрдХ рдореЗрдВ рд╕реНрддрдВрдн рдирд╛рдореЛрдВ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдПрдкреЙрд╕реНрдЯреНрд░реЙрдлрд╝ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "= 1 рдЯреЗрдмрд▓ 1 [рдХреЙрд▓рдо '[1]]] рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ, рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рдЕрдХреНрд╖рд░' ['рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╖рд░']" рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рдХрд┐рдП рдЧрдП рдЙрджреНрдзрд░рдг (']) рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░ рдХреЙрд▓рдо рдирд╛рдо рдХреЛ рдкрдврд╝рдирд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред



рдЕрдВрдд рдореЗрдВ, рд▓рд╛рдЗрди рдлреАрдбреНрд╕ рдФрд░ рдЯреИрдм рдХреЛ рд╕реНрдХрд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрдирд░ рдХреЛ рдмрддрд╛рдПрдВред

IGNORE eol + '\ n' + 't'ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред



рд╣рдо рдкреНрд░реЛрдбрдХреНрд╢рдВрд╕ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдЖрдП рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╕рднреА рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ рд╕рд░рд▓реАрдХреГрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛, рдореИрдВрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЖрд╡реЗрд╖рдг рдХрд╛рдЯ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджреЗрдВрдЧреЗред рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред



рд╕рднреА рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдХреЛ / рдЖрд░ рддрд░реАрдХреЗ рдмрдирд╛рдПрдВрдЧреЗ) рдПрдХ рд╕рдВрджрд░реНрдн рдЖрд░рдкреАрдПрди рдлреЙрд░реНрдо рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрдХреНрд╖ рдХреЗ рдЕрдВрджрд░ рд╕реВрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдорд╛рди рд╣реИред рдЖрдЧреЗ, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдХ рддреИрдпрд╛рд░ рдкреНрд░рдХрд╛рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреЗрдбрд╝ рдХреА рд╢рд╛рдЦрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "= OFFSET (A1: B1, A1, A2)" рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реБрдП, рдкреЛрд▓рд┐рд╢ рд░рд┐рдХреЙрд░реНрдб рддрддреНрд╡ - OFFSET рдлрд╝рдВрдХреНрд╢рди - рдкреНрд░рдХрд╛рд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдЬрдмрдХрд┐ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реБрдП, рдкрд╣рд▓реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдп рджреЛ рд╕реЗ рдорд╛рдиред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рддрд░реНрдХ рдФрд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдХрд╛рд░реНрдп рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕реВрддреНрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреА рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХреНрд╕реЗрд▓ рдХреЛ рд╕реЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╕реВрддреНрд░ рдХреЛ рдЧрд▓рдд рдорд╛рдиреЗрдВрдЧреЗред рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЧрд▓рдд рдирдВрдмрд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдПрдХ рдорд┐рд╕рдореИрдЪ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдлреЙрд░реНрдореВрд▓рд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ROW рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╛ рддреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ "= ROW (1)", "= ROW (" A1 ")" "рд╢рдмреНрдж рдЕрдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗред



рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╛рдХрд░рдг рд╕рд╛рдзрд╛рд░рдг рдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рд╡реНрдпрд╛рдХрд░рдг рд╣реИ, рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╡рд░рд┐рд╖реНрдарддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдкрд╣рд▓рд╛ рддрд╛рд░реНрдХрд┐рдХ рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж рд╣реИ, рдЕрдВрддрд┐рдо рд╢реНрд░реЗрдгреА рдСрдкрд░реЗрдЯрд░ рд╣реИред рдпрд╛рдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВред



RBNF рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо EBNF рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБред рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдкрд╣рд▓рд╛ рдЧреИрд░-рд╢рдмреНрдж рдХреИрд╕реЗ рджрд┐рдЦреЗрдЧрд╛ - рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐:







рдХреЛрдХреЛ / рдЖрд░ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рд╡реНрдпрд╛рдХрд░рдгред "(ред" рдФрд░ ")" рдХреЗ рдмреАрдЪ рдЦреАрдВрдЪреЗ рдЧрдП рд╢рдмреНрджрд╛рд░реНрде рдЖрд╡реЗрд╖рдг рдореЗрдВ, рдореИрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд╛рд░реНрд╕рдбрд╣рд┐рдВрдЧ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред



 LogicalClause<OperandDataType dataType, ParsedExpression expression> (. IParsedThing thing = null; .) = ConcatenateClause<dataType, expression> { ( '<' (.thing = ParsedThingLess.Instance; .) | '>' (.thing = ParsedThingGreater.Instance; .) | "<=" (.thing = ParsedThingLessEqual.Instance; .) | ">=" (.thing = ParsedThingGreaterEqual.Instance; .) | "<>" (.thing = ParsedThingNotEqual.Instance; .) | '=' (.thing = ParsedThingEqual.Instance; .) ) ConcatenateClause<dataType, expression> (. expression.Add(thing); .) } .
      
      







рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛: ConcatenateClause, AddClause, MultipyClause, PowerClause, UnaryClause, PercentClause, RangeUnionClause, RangeIntersectionClause, CellRange.auseред CellRangeClause рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдкрд╣рд▓рд╛ рдСрдкрд░реЗрдВрдб рд╣реЛрддрд╛ рд╣реИ - OperandCommonClauseред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:







рд╣рд╛рд▓рд╛рдБрдХрд┐, рджрд┐рдП рдЧрдП рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рд╢реАрдЯрдиреЗрдо рдФрд░ рдСрдкрд░реИрдВрдбрдХреНрд▓рд╛рдЬ рдПрдХ рд╣реА рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "= рдкрддреНрд░рдХ! A1" рдХрд╛ рдЕрдиреБрд╕рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж "= рдирд╛рдо"ред рдпрд╣рд╛рдВ "рд╢реАрдЯ" рдФрд░ "рдирд╛рдо" рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдХреЛ / рдЖрд░ рдЖрдкрдХреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕реНрдХреИрдирд░ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХрдИ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рдХреЗ рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рд╣рдо рдЦреЛрдЬ рдореЗрдВ '!' рд╡рд░реНрдг рдХреА рддрд▓рд╛рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╢реАрдЯрдирд╛рдо рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдСрдкрд░реЗрдВрдб рдХреНрд▓реЙрдЬрд╝ред рдЗрд╕ рддрд░рд╣ рд╡реНрдпрд╛рдХрд░рдг рджрд┐рдЦреЗрдЧрд╛:



 OperandCommonClause<OperandDataType dataType, ParsedExpression expression> = ( IF(IsSheetDefinition()) ( ( SheetNameQuoted<sheetDefinitionContext> | [ '[' FileDefinitionSimple ] [ SheetName<out sheetName> [ ':' SheetName<out sheetName> | '|' SingleQuotedIdent<out ddeTopic> ] ] ) '!' CellReferenceClause<dataType, expression> ) | OperandClause<dataType, expression> ) .
      
      







рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Parser рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд IsSheetDefinition () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред



рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╢реАрдЯрдирд╛рдо рдПрдХ рдЕрдВрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢реАрдЯ рдХрд╛ рдирд╛рдо рдПрдкреЛрд╕реНрдЯреНрд░реЛрдл рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, Excel рдЧреБрдо рдПрдкреЙрд╕реНрдЯреНрд░реЙрдлрд╝ рдЬреЛрдбрд╝рддрд╛ рд╣реИред



 SheetName<out string sheetName> (. int sheetNameStart = la.pos;.) = ( [positiveinumber | fnumber] [ident] ) (. sheetName = scanner.Buffer.GetString(sheetNameStart, la.pos); .) .
      
      







рдЗрд╕ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдЯрд░реНрдорд┐рдирд▓ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмреАрдЪ IGNORE рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрдерд╛рди рдпрд╛ рдХрд┐рд╕реА рднреА рдЪрд░рд┐рддреНрд░ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдВрдШрд░реНрд╖ рд╕рдорд╛рдзрд╛рди рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ред рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░, рд╣рдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:



 SheetName<out string sheetName> (. int sheetNameStart = la.pos;.) = ( positiveinumber | fnumber [ IF(la.pos - t.pos == t.val.Length) ident ] | ident ) (. sheetName = scanner.Buffer.GetString(sheetNameStart, la.pos); .) .
      
      







OperandClause рдореЗрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рд╢реАрдЯ, рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХ рдпрд╛ DDE рд╕реНрд░реЛрдд рдХрд╛ рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк OperandCommonClause рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рд╕реЗ, рд╣рдо ArrayClause, StringConstant (рджреЛрдиреЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рд╢реАрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ), CellReferenceClause, рдпрд╛ рд╣рдо рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдкреВрд░реЗ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - LogicalClauseред







 OperandClause<OperandDataType dataType, ParsedExpression expression> = ( CellReferenceClause<dataType, expression> | ArrayClause<dataType, expression> | StringConstant<expression, dataType> ) | '(' CommonCellReference<dataType, expression> ')' (. expression.Add(ParsedThingParentheses.Instance);.) .
      
      







CellReferenceClause рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдкрд░реЗрдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:



 CellReferenceClause<OperandDataType dataType, ParsedExpression expression> = ( IF (IsTableDefinition()) TableReferenceExpressionClause<dataType, expression> | IF (IsFunctionDefinition()) FunctionClause<dataType, expression> | IF (IsDefinedNameDefinition()) DefinedNameClause<dataType, expression> | IF(IsRCCellPosition()) CellPositionRCClause<dataType, expression> | IF(IsA1CellPosition()) CellPositionA1Clause<dataType, expression> | CellError<dataType, expression> | TermNumber<expression> | BoolConstant<expression, dataType> | wideident (. expression.Add(new ParsedThingName(t.val);.) ) .
      
      







рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдореЗрдВ рд╕рдВрдШрд░реНрд╖ рд╕рдорд╛рдзрд╛рди рдХреЗ рддрд░реАрдХреЗ рдмрдирд╛рдиреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рд╕рднреА рд╢реЗрд╖ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред



рдЕрдкреВрд░реНрдг рднрд╛рд╡ рдФрд░ "рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ"


рд╕реВрддреНрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред







рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╡реИрд╕реЗ рднреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдкрд▓ рдореЗрдВ, рдкрд╛рд░реНрд╕рд░, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдореЗрд╢рд╛ рдЕрд╢рдХреНрдд рд▓реМрдЯ рдЖрдпрд╛ред рдмреЗрд╢рдХ, рдХреЛрдИ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкрдврд╝реА рдЧрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рд▓рд┐рдВрдХ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдХрд┐рди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд┐рдВрдХ рд╣реИ? рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкрдврд╝рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддреЛ, рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд▓рд┐рдВрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдереЗред рдПрдХ рдкрд╛рд░реНрд╕рд░, рдЬрдм рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реЗрдВрдЬ рд╕рдВрджрд░реНрдн, рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ



 void RegisterCellRange(CellRange range, int sheetDefinitionIndex, int position, int length)
      
      







рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдпрд╛ рдирд╣реАрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред



рдПрдХ рдФрд░ рддрдВрддреНрд░ рдЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд▓рдЧрд╛ - рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдБред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "= 1 * (1 + 2") рдореЗрдВ, рдмреНрд░реИрдХреЗрдЯ рдХреЗ рд╕рдВрддреБрд▓рди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░реИрдХреЗрдЯ рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рдЦрдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдпрд╣реА рд╣реИ, рдЖрдк рдЗрд╕ рдлреЙрд░реНрдореЗрдЯ рдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдмреНрд░реИрдХреЗрдЯ рдЬреЛрдбрд╝рдХрд░ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд╛рд░реНрд╕рд░ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдХреЗрд╡рд▓ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЧрд╛рдпрдм рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдкрд░реИрдВрдб рдХреНрд▓реЙрдЬрд╝ рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ:

 '(' CommonCellReference<dataType, expression> (. if(la.val != ")") parserContext.RegisterSuggestion(new FunctionCloseBracketSuggestion(la.pos)); .) ')'
      
      







рдмреЗрд╢рдХ, рдпреЗ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЗрд╡рд▓ рддрдм рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕реАрдорд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдпрд╛ рдЕрдзреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред



рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди



рдПрдХреНрд╕реЗрд▓, рдЕрднреА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЖрдЧреЗ рдХреЗ рдЬреАрд╡рди рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рд╡рд╣ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╣рд╛рдпрдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рднрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЙрди рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред



рдЕрддреНрд░рд╕реНрдорд┐ рдЧреБрдгред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ рдЬрд┐рдирдореЗрдВ рдЕрд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВред



рдореЗрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд░реНрдЧред рдЗрд╕рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡реЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рдПрдХрдЬреБрдЯ рд╣реИрдВ рдХрд┐ рд╡реЗ рд▓рд┐рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдХреБрдЫ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИрдВред рдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди, рдЖрдВрддрд░рд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдореЗрдо рд╣реЛрдЧрд╛ред рдЗрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╣рд▓реЗ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдЕрдВрдХрди рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред







AttrSum рд╡рд┐рд╢реЗрд╖рддрд╛ SUM рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



AttrIf рд╡рд┐рд╢реЗрд╖рддрд╛ IF рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреЛ рдЧреЛрдЯреЛ рдмрдпрд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ IF рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ: IF рдлрд╝рдВрдХреНрд╢рди (рд╕реНрдерд┐рддрд┐, true_value, [false_value])ред рджреЛ рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рдХреА рдЧрдгрдирд╛ рдкрд░ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡рд╛рдВрдЫрд┐рдд рдореВрд▓реНрдп рдкрд░ рдЬрд╛рдПрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ = IF (рд╕реНрдерд┐рддрд┐, "v_true", "v_false") рдПрдХреНрд╕реЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЛрдЯрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ:







рдЧрдгрдирд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рдд рдХрд╛ рдореВрд▓реНрдп рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЕрдЧрд▓реА IF рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╡рд╣ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдореВрд▓реНрдп рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЧрд▓рдд рд╣реИ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдореМрдЬреВрджрд╛ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЕрдВрджрд░ рджрд░реНрдЬ рдХреА рдЧрдИ рдСрдлрд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рдЙрдВрдЯрд░ "v_false" рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдпрд╛ рддреЛ v_true рдпрд╛ v_false рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЧреЛрдЯреЛ рд╣реИ, рдкрд╣рд▓рд╛ рдпрд╛ рджреВрд╕рд░рд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рджреЛрдиреЛрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрдд (рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВред



AttrChoose рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ CHOOSE рдлрд╝рдВрдХреНрд╢рди рдЙрди рддрд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рдЧрдгрдирд╛ рдХреЗ рдЖрдЧреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред AttrChoose рдорд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреЗ рддрд░реНрдХ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рддрд░реНрдХ рдХреЗ рдмрд╛рдж рдкрд░рд┐рдЪрд┐рдд AttrGoto рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ CHOOSE рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред



рд╕реНрдкреЗрд╕-рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХреА рдЧрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рд▓рд╛рдЗрди рдлреАрдб рдФрд░ рд╕реНрдкреЗрд╕ред рдорд╛рддреНрд░рд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛, рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред рдХреЗрд╡рд▓ рдЫрд╣ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:





рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕реЗрд▓ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдФрд░ '=' рдЪрд┐рд╣реНрди рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд░рдЪрд┐рдд рд▓рд┐рдВрдХ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рднреА рдирд╣реАрдВ рдмрдЪреЗрдВрдЧреЗред



рдкрд░реАрдХреНрд╖рдг



рдЬрдм рд╣рдорд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рд░реНрдл OpenXML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪреЗред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдмрд╣реБрдд рд╕реА, рдмрд╣реБрдд рд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд▓рдЧрднрдЧ 10k рд░реИрдВрдбрдо OpenXML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдВрдк рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╛рд░реНрдо рдкрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдпрд╛ред рд╣рд░ рд░рд╛рдд, рдХрд╛рд░реНрдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд▓реЙрдЧ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред



рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рдЧрдпрд╛, рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╛рд░реВрдк рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рджреЛрдиреЛрдВ рдЬреБрдбрд╝рддреА рдЧрдИрдВред рддреЛ рдЕрдм 20k xls рдлрд╛рдЗрд▓ рдФрд░ 15k csv рдлрд╛рдЗрд▓ рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИредрдФрд░ рдЙрдиреНрд╣реЗрдВ рди рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддреЗ рд╣реИрдВред



рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рд╕реВрддреНрд░реЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬреНрдЮрд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЬрдм рд╣рдордиреЗ рдЙрд╕реА 10k рдУрдкрдирдПрдХреНрд╕рдПрдордПрд▓ рдФрд░ 20k xls рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реВрддреНрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реА рдЬрд╛рддреА рд╣реИ, рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдПрдХ-рдПрдХ рдХрд░рдХреЗ, рд╣рдо рд╢реАрдЯ рдкрд░ рдЙрди рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдирдП рдорд╛рди рдХреА рдЧрдгрдирд╛, рдЧрдгрдирд╛ рдФрд░ рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рджреЛ рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкрддреНрдерд░ рд╕реЗ рдорд╛рд░ рджрд┐рдпрд╛ - рд╣рдордиреЗ рд╕реВрддреНрд░ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдФрд░ рдПрдХреНрд╕реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд▓рд╛рдпрд╛ред



рдмреЗрд╢рдХ, рд╣рдореЗрдВ рд╕реВрддреНрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ - рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╖рдп рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрдкрдиреА рдкреНрд░рд╢рдВрд╕рд╛ рдкрд░ рдЖрд░рд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдкрдврд╝рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!



All Articles