600 # Languages Keywords |
600 # Languages Keywords |
601 #------------------------------------------------------------------------------- |
601 #------------------------------------------------------------------------------- |
602 |
602 |
603 |
603 |
604 # Keywords for Pou Declaration |
604 # Keywords for Pou Declaration |
605 POU_KEYWORDS = ["FUNCTION", "END_FUNCTION", "FUNCTION_BLOCK", "END_FUNCTION_BLOCK", |
605 POU_BLOCK_START_KEYWORDS = ["FUNCTION", "FUNCTION_BLOCK", "PROGRAM"] |
606 "PROGRAM", "END_PROGRAM", "EN", "ENO", "F_EDGE", "R_EDGE"] |
606 POU_BLOCK_END_KEYWORDS = ["END_FUNCTION", "END_FUNCTION_BLOCK", "END_PROGRAM"] |
|
607 POU_KEYWORDS = ["EN", "ENO", "F_EDGE", "R_EDGE"] + POU_BLOCK_START_KEYWORDS + POU_BLOCK_END_KEYWORDS |
607 for category in BlockTypes: |
608 for category in BlockTypes: |
608 for block in category["list"]: |
609 for block in category["list"]: |
609 if block["name"] not in POU_KEYWORDS: |
610 if block["name"] not in POU_KEYWORDS: |
610 POU_KEYWORDS.append(block["name"]) |
611 POU_KEYWORDS.append(block["name"]) |
611 |
612 |
612 |
613 |
613 # Keywords for Type Declaration |
614 # Keywords for Type Declaration |
614 TYPE_KEYWORDS = ["TYPE", "END_TYPE", "STRUCT", "END_STRUCT", "ARRAY", "OF", "T", |
615 TYPE_BLOCK_START_KEYWORDS = ["TYPE", "STRUCT"] |
615 "D", "TIME_OF_DAY", "DATE_AND_TIME"] |
616 TYPE_BLOCK_END_KEYWORDS = ["END_TYPE", "END_STRUCT"] |
|
617 TYPE_KEYWORDS = ["ARRAY", "OF", "T", "D", "TIME_OF_DAY", "DATE_AND_TIME"] + TYPE_BLOCK_START_KEYWORDS + TYPE_BLOCK_END_KEYWORDS |
616 TYPE_KEYWORDS.extend([keyword for keyword in TypeHierarchy.keys() if keyword not in TYPE_KEYWORDS]) |
618 TYPE_KEYWORDS.extend([keyword for keyword in TypeHierarchy.keys() if keyword not in TYPE_KEYWORDS]) |
617 |
619 |
618 |
620 |
619 # Keywords for Variable Declaration |
621 # Keywords for Variable Declaration |
620 VAR_KEYWORDS = ["VAR", "VAR_INPUT", "VAR_OUTPUT", "VAR_IN_OUT", "VAR_TEMP", |
622 VAR_BLOCK_START_KEYWORDS = ["VAR", "VAR_INPUT", "VAR_OUTPUT", "VAR_IN_OUT", "VAR_TEMP", "VAR_EXTERNAL"] |
621 "VAR_EXTERNAL", "END_VAR", "AT", "CONSTANT", "RETAIN", "NON_RETAIN"] |
623 VAR_BLOCK_END_KEYWORDS = ["END_VAR"] |
|
624 VAR_KEYWORDS = ["AT", "CONSTANT", "RETAIN", "NON_RETAIN"] + VAR_BLOCK_START_KEYWORDS + VAR_BLOCK_END_KEYWORDS |
622 |
625 |
623 |
626 |
624 # Keywords for Configuration Declaration |
627 # Keywords for Configuration Declaration |
625 CONFIG_KEYWORDS = ["CONFIGURATION", "END_CONFIGURATION", "RESOURCE", "ON", "END_RESOURCE", |
628 CONFIG_BLOCK_START_KEYWORDS = ["CONFIGURATION", "RESOURCE", "VAR_ACCESS", "VAR_CONFIG", "VAR_GLOBAL"] |
626 "PROGRAM", "WITH", "READ_ONLY", "READ_WRITE", "TASK", "VAR_ACCESS", "VAR_CONFIG", |
629 CONFIG_BLOCK_END_KEYWORDS = ["END_CONFIGURATION", "END_RESOURCE", "END_VAR"] |
627 "VAR_GLOBAL", "END_VAR"] |
630 CONFIG_KEYWORDS = ["ON", "PROGRAM", "WITH", "READ_ONLY", "READ_WRITE", "TASK"] + CONFIG_BLOCK_START_KEYWORDS + CONFIG_BLOCK_END_KEYWORDS |
628 |
|
629 |
631 |
630 # Keywords for Structured Function Chart |
632 # Keywords for Structured Function Chart |
631 SFC_KEYWORDS = ["ACTION", "END_ACTION", "INITIAL_STEP", "STEP", "END_STEP", "TRANSITION", |
633 SFC_BLOCK_START_KEYWORDS = ["ACTION", "INITIAL_STEP", "STEP", "TRANSITION"] |
632 "FROM", "TO", "END_TRANSITION"] |
634 SFC_BLOCK_END_KEYWORDS = ["END_ACTION", "END_STEP", "END_TRANSITION"] |
|
635 SFC_KEYWORDS = ["FROM", "TO"] + SFC_BLOCK_START_KEYWORDS + SFC_BLOCK_START_KEYWORDS |
633 |
636 |
634 |
637 |
635 # Keywords for Instruction List |
638 # Keywords for Instruction List |
636 IL_KEYWORDS = ["TRUE", "FALSE", "LD", "LDN", "ST", "STN", "S", "R", "AND", "ANDN", "OR", "ORN", |
639 IL_KEYWORDS = ["TRUE", "FALSE", "LD", "LDN", "ST", "STN", "S", "R", "AND", "ANDN", "OR", "ORN", |
637 "XOR", "XORN", "NOT", "ADD", "SUB", "MUL", "DIV", "MOD", "GT", "GE", "EQ", "NE", |
640 "XOR", "XORN", "NOT", "ADD", "SUB", "MUL", "DIV", "MOD", "GT", "GE", "EQ", "NE", |
643 ST_BLOCK_END_KEYWORDS = ["END_IF", "END_CASE", "END_FOR", "END_WHILE", "END_REPEAT"] |
646 ST_BLOCK_END_KEYWORDS = ["END_IF", "END_CASE", "END_FOR", "END_WHILE", "END_REPEAT"] |
644 ST_KEYWORDS = ["TRUE", "FALSE", "THEN", "OF", "TO", "BY", "DO", "DO", "UNTIL", "EXIT", |
647 ST_KEYWORDS = ["TRUE", "FALSE", "THEN", "OF", "TO", "BY", "DO", "DO", "UNTIL", "EXIT", |
645 "RETURN", "NOT", "MOD", "AND", "XOR", "OR"] + ST_BLOCK_START_KEYWORDS + ST_BLOCK_END_KEYWORDS |
648 "RETURN", "NOT", "MOD", "AND", "XOR", "OR"] + ST_BLOCK_START_KEYWORDS + ST_BLOCK_END_KEYWORDS |
646 |
649 |
647 # All the keywords of IEC |
650 # All the keywords of IEC |
|
651 IEC_BLOCK_START_KEYWORDS = [] |
|
652 IEC_BLOCK_END_KEYWORDS = [] |
648 IEC_KEYWORDS = ["E", "TRUE", "FALSE"] |
653 IEC_KEYWORDS = ["E", "TRUE", "FALSE"] |
649 IEC_KEYWORDS.extend([keyword for keyword in POU_KEYWORDS if keyword not in IEC_KEYWORDS]) |
654 for all_keywords, keywords_list in [(IEC_BLOCK_START_KEYWORDS, [POU_BLOCK_START_KEYWORDS, TYPE_BLOCK_START_KEYWORDS, |
650 IEC_KEYWORDS.extend([keyword for keyword in TYPE_KEYWORDS if keyword not in IEC_KEYWORDS]) |
655 VAR_BLOCK_START_KEYWORDS, CONFIG_BLOCK_START_KEYWORDS, |
651 IEC_KEYWORDS.extend([keyword for keyword in VAR_KEYWORDS if keyword not in IEC_KEYWORDS]) |
656 SFC_BLOCK_START_KEYWORDS, ST_BLOCK_START_KEYWORDS]), |
652 IEC_KEYWORDS.extend([keyword for keyword in CONFIG_KEYWORDS if keyword not in IEC_KEYWORDS]) |
657 (IEC_BLOCK_END_KEYWORDS, [POU_BLOCK_END_KEYWORDS, TYPE_BLOCK_END_KEYWORDS, |
653 IEC_KEYWORDS.extend([keyword for keyword in SFC_KEYWORDS if keyword not in IEC_KEYWORDS]) |
658 VAR_BLOCK_END_KEYWORDS, CONFIG_BLOCK_END_KEYWORDS, |
654 IEC_KEYWORDS.extend([keyword for keyword in IL_KEYWORDS if keyword not in IEC_KEYWORDS]) |
659 SFC_BLOCK_END_KEYWORDS, ST_BLOCK_END_KEYWORDS]), |
655 IEC_KEYWORDS.extend([keyword for keyword in ST_KEYWORDS if keyword not in IEC_KEYWORDS]) |
660 (IEC_KEYWORDS, [POU_KEYWORDS, TYPE_KEYWORDS, VAR_KEYWORDS, CONFIG_KEYWORDS, |
656 |
661 SFC_KEYWORDS, IL_KEYWORDS, ST_KEYWORDS])]: |
|
662 for keywords in keywords_list: |
|
663 all_keywords.extend([keyword for keyword in keywords if keyword not in all_keywords]) |
|
664 |