def self.keywords
blocks = %w(
PROGRAM CONFIGURATION INITIAL_STEP INTERFACE FUNCTION_BLOCK FUNCTION ACTION TRANSITION
TYPE STRUCT STEP NAMESPACE LIBRARY CHANNEL FOLDER RESOURCE
VAR_ACCESS VAR_CONFIG VAR_EXTERNAL VAR_GLOBAL VAR_INPUT VAR_IN_OUT VAR_OUTPUT VAR_TEMP VAR
CONST METHOD PROPERTY
CASE FOR IF REPEAT WHILE
)
@keywords ||= Set.new %w(
AT BEGIN BY CONSTANT CONTINUE DO ELSE ELSIF EXIT EXTENDS FROM GET GOTO IMPLEMENTS JMP
NON_RETAIN OF PRIVATE PROTECTED PUBLIC RETAIN RETURN SET TASK THEN TO UNTIL USING WITH
__CATCH __ENDTRY __FINALLY __TRY
) + blocks + blocks.map {|kw| "END_" + kw}
end