IntelliJ IDEA рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ред рднрд╛рдЧ рек

рдЕрдВрдд рдореЗрдВ рд╣рдо рд▓реБрдЧрджреА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рднрд╛рдЧ рдореЗрдВ - рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкреАрдПрд╕рдЖрдИ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЗрдВрдЯрд░рдлреЗрд╕), рд╕реНрдЯрдмреНрд╕ (рд╕реНрдЯрдмреНрд╕) рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ: 1 , 2 , 3

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

рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХрд░рдг


рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, IDEA рдЕрдкрдиреЗ рдирд╛рдо (рд╡рд┐рд╕реНрддрд╛рд░) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ LanguageFileType рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдиреЗ рдореВрд▓ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ com.intellij.fileTypeFactory рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ FileTypeFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
<extensions defaultExtensionNs="com.intellij"> тАж <fileTypeFactory implementation="com.intellij.lang.properties.PropertiesFileTypeFactory"/> тАж </extensions> 

рдЧреБрдг рдкреНрд▓рдЧрдЗрди рдореЗрдВ LanguageFileType рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ред

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

рд▓реЗрдЬрд╝рд┐рдХрд▓ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

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

рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдирд╛рдордХ рдПрдХ рд▓реЗрдХреНрд╕рд░ рдХреЛ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреНред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднред рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ (рд▓реЗрдХреНрд╕рд░.рдЧреЗрдЯрд╕реНрдЯреИрдЯ () рд╡рд┐рдзрд┐ рд╕реЗ рд▓реМрдЯрд╛) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рд╣реИред рдЬрдм рдпрд╣ рдлрд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝реЗ рдХреА рд╢реБрд░реБрдЖрдд рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЛ Lexer.start () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдиреНрдп рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд▓реЗрдХреНрд╕рд░реНрд╕ рдХреЗрд╡рд▓ 0 рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬреЗрдлреНрд▓реЗрдХреНрд╕ рдЬреИрд╕реЗ рд▓реЗрдХреНрд╕рд░ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IDEA рдореЗрдВ рдПрдбреЗрдкреНрдЯрд░ рдХреНрд▓рд╛рд╕реЗрд╕ (FlexLexer рдФрд░ FlexAdapter) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ JFlex lexers рдХреЛ IDEA рд▓реЗрдХреНрд╕рд┐рдХрд▓ API рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред Intellij IDEA рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ JFlex 1.4.1 рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдПрдХ рд▓реЗрдХреНрд╕рд░ рдкреНрд░реАрд╕реЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ FlexAdapter рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд▓реЗрдХреНрд╕рд░реНрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред JFlex рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ --charat , рдЬреЛ рдЖрдИрдбреАрдИрдП рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп рдЪрд╛рд░рд╕реЗрдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред
рдЬреЗрдлреНрд▓реЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд▓реЗрдХреНрд╕рд░реНрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг: рдЧреБрдг рдкреНрд▓рдЧрдЗрди рд╕реЗ рд▓реАрдХрд░ ред

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬреЗрдлреНрд▓реЗрдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЙрди рд▓реЗрдХреНрд╕рд░реНрд╕ рдХреЛ рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЯреЛрдХрди рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд┐рдирд╛, рдЕрд░реНрдерд╛рддреНред рдпрджрд┐ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдЯреЛрдХрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - TokenType.BAD_CHARACTER ред рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдХреНрд╕рд░ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЕрдВрдд рддрдХ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЙрджрд╛рд╣рд░рдг: рдЧреБрдг рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреЛрдХрди рдХреЗ рдкреНрд░рдХрд╛рд░ ред

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬрд┐рд╕реЗ рд▓реЗрдХреНрд╕рд░ рд╕реНрддрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдПрдореНрдмреЗрдбреЗрдб рдЯреБрдХрдбрд╝реЗ)ред рдпрджрд┐ рднрд╛рд╖рд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ "рдЧрд┐рд░рдЧрд┐рдЯ рдЯреЛрдХрди" рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЯреЛрдХрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ ILazyParseableElementType рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдЦрдВрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IDEA ILazyParseableElementType.parseContents () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рд╖рд╛ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдкреАрдПрд╕рдЖрдИ


рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рд╕рд╛рд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡реГрдХреНрд╖ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдПрд╕рдЯреАрдПрдиреЛрдб рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рдПрдПрд╕рдЯреА рдиреЛрдбреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЖрдИрдбреАрдИрдП рджреНрд╡рд╛рд░рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдПрдХ рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ IE IETType рдХреЗ рд░реВрдк рдореЗрдВ), рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдПрдПрд╕рдЯреА рдиреЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ IFileElementType рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

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

рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдПрдХ рдкреАрдПрд╕рдЖрдИ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЗрдВрдЯрд░рдлреЗрд╕) рдПрдХ рдЕрдореВрд░реНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреЗрдбрд╝ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред PSI рдиреЛрдбреНрд╕ рдХреЛ PsiElement рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╡реЗ ParserDefinition.createElement () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред PSI рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдиреЛрдб PsiFile рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ ParserDefinition.createFile () рд╡рд┐рдзрд┐ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг: рдЧреБрдг рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП ParserDefinition ред

PSI рддрддреНрд╡реЛрдВ (PsiFileBase, PsiFile рдкрд░ рдЖрдзрд╛рд░рд┐рдд, ASTWrapperPsiElement, PsiElement рдкрд░ рдЖрдзрд╛рд░рд┐рдд) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ IntelliJ IDEA рджреНрд╡рд╛рд░рд╛ рд╣реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм 10.5 рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ class.ath рдореЗрдВ idea.jar рд╣реИред рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ (11.0 рд╕реЗ рд╢реБрд░реВ) рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд╛рд░реНрд╕рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

IntelliJ IDEA рдХрд╕реНрдЯрдо рдкреНрд▓рдЧ-рдЗрди рдореЗрдВ рдкрд╛рд░реНрд╕рд░реНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ (рдЬреИрд╕реЗ ANTLR) рдХреЗ рддреИрдпрд╛рд░ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рдорд░-рдХрд┐рдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдкреАрдПрд╕рдЖрдИ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ, рдиреЗрд╡рд┐рдЧреЗрд╢рди, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред

рднрд╛рд╖рд╛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ ParserDefinition рд╡рд░реНрдЧ рдХрд╛ createParser () рд╡рд┐рдзрд┐ PsiParser рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╛рд░реНрд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рд░реНрд╕рд░ PsiBuilder рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЗрд╕рд░ рд╕реЗ рдЯреЛрдХрди рдХреА рдзрд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдПрдПрд╕рдЯреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдХрди рдХреЛ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдВрдд рддрдХ (PsiBuilder.getTokenType () рд░рд┐рдЯрд░реНрди рд╢реВрдиреНрдп) рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рдЯреЛрдХрди рднрд╛рд╖рд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдореЗрд▓ рди рдЦрд╛рддреЗ рд╣реЛрдВред

рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдкрд╛рд░реНрд╕рд░ рдЯреЛрдХрди (PsiBuilder.Marker рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ) рдФрд░ рд▓реЗрдХреНрд╕рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЯреЛрдХрди рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдЕрдореВрд░реНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЛрдХрди рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рдПрдХ рдЬреЛрдбрд╝реА рдЯреЛрдХрди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЬреЛрдбрд╝реА рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╛рд╣рд░реА рдЬреЛрдбрд╝реА рдХрд╛ рдмрдЪреНрдЪрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИред

рдорд╛рд░реНрдХрд░ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ (рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдПрд╕рдЯреА рдиреЛрдб рдХреЗ рд▓рд┐рдП) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдВрддрд┐рдо рдорд╛рд░реНрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (PsiBuilder.Marker.done () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛)ред рдЕрдВрддрд┐рдо рдорд╛рд░реНрдХрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯрд╛рд░реНрдЯ рдорд╛рд░реНрдХрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдбреНрд░реЙрдк () рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╢реБрд░реБрдЖрддреА рдорд╛рд░реНрдХрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреА рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕реЗрдЯ рдмрд╛рдХреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд░реЛрд▓рдмреИрдХрдЯреЙ () рд╡рд┐рдзрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рд░реНрдХрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рднреА рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд▓реЗрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╢реБрд░реБрдЖрддреА рдорд╛рд░реНрдХрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд▓реБрдХрд╣реЗрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

PsiBuilder.marker.precede () рд╡рд┐рдзрд┐ рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬрдм рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдЯреЛрдХрди рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ a + b + c рдХреЛ ((a + b) + c) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯреЛрдХрди "рдП" рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рджреЛ рд╕реНрдЯрд╛рд░реНрдЯ рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдм рддрдХ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдЯреЛрдХрди "рд╕реА" рдирд╣реАрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдкрд╛рд░реНрд╕рд░ "рдмреА" рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП "+" рдЯреЛрдХрди рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рд░реНрдХрд░ рдХреЛ "рдП" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ "рд╕реА" рд╕реЗ рдкрд░реЗ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдВрддрд┐рдо рдорд╛рд░реНрдХрд░ рдХреЛ рд░рдЦ рд╕рдХрддрд╛ рд╣реИред

PsiBuilder рдХреА рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╣реИред рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдЯреЛрдХрди рдХреЗ рдкреНрд░рдХрд╛рд░ ParserDefinition рд╡рд░реНрдЧ рдореЗрдВ getWhitespaceTokens () рдФрд░ getCommentTokens () рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред PsiBuilder рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ рдФрд░ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЯреЛрдХрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ PsiParser рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ AST рдиреЛрдбреНрд╕ рдореЗрдВ рдЯреЛрдХрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдЧреНрд░рдгреА рдФрд░ рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдиреЛрдб рдореЗрдВ рди рдЖрдПрдВред

ParserDefinition.getCommentTokens () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдЯреЛрдХрди рдХрд╛ рд╕реЗрдЯ TO TO рдЖрдЗрдЯрдо рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреАрдПрд╕рдЖрдИ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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

PSI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдХрд╛рд░реНрдп рдкреИрдХреЗрдЬ com.intellij.psi.util рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЧ PsiUtil, PsiTreeUtil рдореЗрдВред

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

рдЕрдиреБрдХреНрд░рдордг рдФрд░ рд╕реНрдЯрдмреНрд╕


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

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

рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛

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

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

рдлрд╝рд╛рдЗрд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

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

рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди FileBasedIndexExtension рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред . :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().

. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().

. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().

. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().
. :
getIndexer() - , /, ; getKeyDescriptor() - , . - EnumeratorStringDescriptor ( ); getValueExternalizer() - , ; getInputFilter() - ; getVersion() - . , .
, ScalarIndexExtension.

, , DataIndexer.map() , , - . , , .


FileBasedIndex, :
getAllKeys() processAllKeys() - , , . , , , . getValues() - , ( , ); getContainingFiles() - , ; processValues() - , .

, IDEA . , . , PsiSearchHelper. - FilenameIndex, . FileTypeIndex - .


, PSI-, .
PSI- AST (.. ), stub- ( ), .
Stub- ( , , ). , , , PSI- AST.

Bean- , PSI- (, , ..). .

, PSI- . , , , .

, , :
, StubElement (); (); , PSI- StubBasedPsiElement (); , PSI- StubBasedPsiElementBase (). : ASTNode, - ; , IStubElementType PSI- (). createPsi() createStub(), serialize() deserialize() ; , IStubElementType (); , PSI- , PSI- (: Property.getKey()).
, :
( ParserDefinition.getFileNodeType()) , IStubFileElementType; plugin.xml, , IElementType, ().

Source: https://habr.com/ru/post/In187224/


All Articles