class Rouge::Lexers::IecST

def self.keywords

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

def self.literals

def self.literals
  @literals ||= Set.new %w(TRUE FALSE NULL)
end

def self.operators

def self.operators
  @operators ||= Set.new %w(AND EQ EXPT GE GT LE LT MOD NE NOT OR XOR)
end

def self.types

def self.types
  @types ||= Set.new %w(
    ANY ARRAY BOOL BYTE POINTER STRING
    DATE DATE_AND_TIME DT TIME TIME_OF_DAY TOD
    INT DINT LINT SINT UINT UDINT ULINT USINT
    WORD DWORD LWORD
    REAL LREAL
  )
end