diff --git a/language/common_res.h b/language/common_res.h
index 787aa472c..9b901f9cf 100644
--- a/language/common_res.h
+++ b/language/common_res.h
@@ -1010,6 +1010,7 @@
//#define IDS_LEX_F77 63056
#define IDS_LEX_VERILOG 63057
#define IDS_LEX_SYSVERILOG 63058
+#define IDS_LEX_ABAQUS 63059
#define IDS_LEX_STD_STYLE 63100
@@ -1320,6 +1321,10 @@
#define IDS_LEX_STR_SysTasks 63404
#define IDS_LEX_STR_AfterLabel 63405
#define IDS_LEX_STR_Table 63406
+#define IDS_LEX_STR_StarCmd 63407
+#define IDS_LEX_STR_SlashCmd 63408
+#define IDS_LEX_STR_Processor 63409
+#define IDS_LEX_STR_Argument 63410
#define IDS_LEX_CSV_COL_0 63490
#define IDS_LEX_CSV_COL_1 63491
diff --git a/language/np3_af_za/lexer_af_za.rc b/language/np3_af_za/lexer_af_za.rc
index d6a8daab8..b3597e691 100644
--- a/language/np3_af_za/lexer_af_za.rc
+++ b/language/np3_af_za/lexer_af_za.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Stelseltake"
IDS_LEX_STR_AfterLabel "Na Etiket"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_be_by/lexer_be_by.rc b/language/np3_be_by/lexer_be_by.rc
index 99296bf99..4601745f3 100644
--- a/language/np3_be_by/lexer_be_by.rc
+++ b/language/np3_be_by/lexer_be_by.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_de_de/lexer_de_de.rc b/language/np3_de_de/lexer_de_de.rc
index 2a8aa1b89..e536c362e 100644
--- a/language/np3_de_de/lexer_de_de.rc
+++ b/language/np3_de_de/lexer_de_de.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_el_gr/lexer_el_gr.rc b/language/np3_el_gr/lexer_el_gr.rc
index 5478c1aaf..ce168a8e1 100644
--- a/language/np3_el_gr/lexer_el_gr.rc
+++ b/language/np3_el_gr/lexer_el_gr.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_en_gb/lexer_en_gb.rc b/language/np3_en_gb/lexer_en_gb.rc
index abb77c09c..c1186054f 100644
--- a/language/np3_en_gb/lexer_en_gb.rc
+++ b/language/np3_en_gb/lexer_en_gb.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_en_us/lexer_en_us.rc b/language/np3_en_us/lexer_en_us.rc
index f8a0cd850..0ca8a42d7 100644
--- a/language/np3_en_us/lexer_en_us.rc
+++ b/language/np3_en_us/lexer_en_us.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_es_es/lexer_es_es.rc b/language/np3_es_es/lexer_es_es.rc
index f9889ca36..33ab08346 100644
--- a/language/np3_es_es/lexer_es_es.rc
+++ b/language/np3_es_es/lexer_es_es.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_fi_fi/lexer_fi_fi.rc b/language/np3_fi_fi/lexer_fi_fi.rc
index 44cdf6702..cec413ae6 100644
--- a/language/np3_fi_fi/lexer_fi_fi.rc
+++ b/language/np3_fi_fi/lexer_fi_fi.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Järjestelmätehtävät"
IDS_LEX_STR_AfterLabel "Nimen jälkeen"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_fr_fr/lexer_fr_fr.rc b/language/np3_fr_fr/lexer_fr_fr.rc
index 94fc18ee8..2d6b4b2a0 100644
--- a/language/np3_fr_fr/lexer_fr_fr.rc
+++ b/language/np3_fr_fr/lexer_fr_fr.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Tâches Système"
IDS_LEX_STR_AfterLabel "Etiquette Suite"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_hi_in/lexer_hi_in.rc b/language/np3_hi_in/lexer_hi_in.rc
index dea1a5bc0..93fe4c91d 100644
--- a/language/np3_hi_in/lexer_hi_in.rc
+++ b/language/np3_hi_in/lexer_hi_in.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_hu_hu/lexer_hu_hu.rc b/language/np3_hu_hu/lexer_hu_hu.rc
index 53f34f0af..79b54ae43 100644
--- a/language/np3_hu_hu/lexer_hu_hu.rc
+++ b/language/np3_hu_hu/lexer_hu_hu.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_id_id/lexer_id_id.rc b/language/np3_id_id/lexer_id_id.rc
index 920a9ec4c..2b469efc0 100644
--- a/language/np3_id_id/lexer_id_id.rc
+++ b/language/np3_id_id/lexer_id_id.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Tugas Sistem"
IDS_LEX_STR_AfterLabel "Setelah Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_it_it/lexer_it_it.rc b/language/np3_it_it/lexer_it_it.rc
index 92e0a181e..ac526767f 100644
--- a/language/np3_it_it/lexer_it_it.rc
+++ b/language/np3_it_it/lexer_it_it.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Attività di sistema"
IDS_LEX_STR_AfterLabel "Dopo l'etichetta"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_ja_jp/lexer_ja_jp.rc b/language/np3_ja_jp/lexer_ja_jp.rc
index 0c2fffd97..ce385f4e8 100644
--- a/language/np3_ja_jp/lexer_ja_jp.rc
+++ b/language/np3_ja_jp/lexer_ja_jp.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "システムタスク"
IDS_LEX_STR_AfterLabel "ラベル以降"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_ko_kr/lexer_ko_kr.rc b/language/np3_ko_kr/lexer_ko_kr.rc
index 8e6896ae3..a2a203e96 100644
--- a/language/np3_ko_kr/lexer_ko_kr.rc
+++ b/language/np3_ko_kr/lexer_ko_kr.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "시스템 작업"
IDS_LEX_STR_AfterLabel "레이블 후"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_nl_nl/lexer_nl_nl.rc b/language/np3_nl_nl/lexer_nl_nl.rc
index 5ebb5a4dc..a7e00f4f9 100644
--- a/language/np3_nl_nl/lexer_nl_nl.rc
+++ b/language/np3_nl_nl/lexer_nl_nl.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_pl_pl/lexer_pl_pl.rc b/language/np3_pl_pl/lexer_pl_pl.rc
index 7d18efd81..9c4dabb99 100644
--- a/language/np3_pl_pl/lexer_pl_pl.rc
+++ b/language/np3_pl_pl/lexer_pl_pl.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "Verilog systemowy HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Zadania systemowe"
IDS_LEX_STR_AfterLabel "Po etykiecie"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_pt_br/lexer_pt_br.rc b/language/np3_pt_br/lexer_pt_br.rc
index ba32c487b..8fdef129e 100644
--- a/language/np3_pt_br/lexer_pt_br.rc
+++ b/language/np3_pt_br/lexer_pt_br.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "HDL da Verilog"
IDS_LEX_SYSVERILOG "HDVL da SystemVerilog"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Tarefas do Sistema"
IDS_LEX_STR_AfterLabel "Depois do Rótulo"
IDS_LEX_STR_Table "Tabela"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_pt_pt/lexer_pt_pt.rc b/language/np3_pt_pt/lexer_pt_pt.rc
index acfdaa31b..61f0a81ae 100644
--- a/language/np3_pt_pt/lexer_pt_pt.rc
+++ b/language/np3_pt_pt/lexer_pt_pt.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_ru_ru/lexer_ru_ru.rc b/language/np3_ru_ru/lexer_ru_ru.rc
index 6e4ee3c37..7b8ed5b96 100644
--- a/language/np3_ru_ru/lexer_ru_ru.rc
+++ b/language/np3_ru_ru/lexer_ru_ru.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_sk_sk/lexer_sk_sk.rc b/language/np3_sk_sk/lexer_sk_sk.rc
index 1cd87c51c..99f42d0fe 100644
--- a/language/np3_sk_sk/lexer_sk_sk.rc
+++ b/language/np3_sk_sk/lexer_sk_sk.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "System Tasks"
IDS_LEX_STR_AfterLabel "After Label"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_sv_se/lexer_sv_se.rc b/language/np3_sv_se/lexer_sv_se.rc
index afa41980a..aafef1be2 100644
--- a/language/np3_sv_se/lexer_sv_se.rc
+++ b/language/np3_sv_se/lexer_sv_se.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Systemaktiviteter"
IDS_LEX_STR_AfterLabel "Efter etikett"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_tr_tr/lexer_tr_tr.rc b/language/np3_tr_tr/lexer_tr_tr.rc
index f7bfcbdb4..344edb73e 100644
--- a/language/np3_tr_tr/lexer_tr_tr.rc
+++ b/language/np3_tr_tr/lexer_tr_tr.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Sistem görevleri"
IDS_LEX_STR_AfterLabel "Sonraki etiketi"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_vi_vn/lexer_vi_vn.rc b/language/np3_vi_vn/lexer_vi_vn.rc
index 832f03cc3..a8d6bacf0 100644
--- a/language/np3_vi_vn/lexer_vi_vn.rc
+++ b/language/np3_vi_vn/lexer_vi_vn.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "Công việc hệ thống"
IDS_LEX_STR_AfterLabel "Sau nhãn"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_zh_cn/lexer_zh_cn.rc b/language/np3_zh_cn/lexer_zh_cn.rc
index 00488ee34..d53f1aff5 100644
--- a/language/np3_zh_cn/lexer_zh_cn.rc
+++ b/language/np3_zh_cn/lexer_zh_cn.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "系统任务"
IDS_LEX_STR_AfterLabel "在标签后"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/language/np3_zh_tw/lexer_zh_tw.rc b/language/np3_zh_tw/lexer_zh_tw.rc
index d672f2ebb..f715f1718 100644
--- a/language/np3_zh_tw/lexer_zh_tw.rc
+++ b/language/np3_zh_tw/lexer_zh_tw.rc
@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+// Microsoft Visual C++ generated resource script.
// encoding: UTF-8
#pragma code_page(65001) // UTF-8
#include "resource.h"
@@ -136,6 +136,7 @@ STRINGTABLE
BEGIN
IDS_LEX_VERILOG "Verilog HDL"
IDS_LEX_SYSVERILOG "SystemVerilog HDVL"
+ IDS_LEX_ABAQUS "ABAQUS"
END
STRINGTABLE
@@ -515,6 +516,10 @@ BEGIN
IDS_LEX_STR_SysTasks "系統任務"
IDS_LEX_STR_AfterLabel "在標籤後"
IDS_LEX_STR_Table "Table"
+ IDS_LEX_STR_StarCmd "Star Command"
+ IDS_LEX_STR_SlashCmd "Slash Command"
+ IDS_LEX_STR_Processor "Processor"
+ IDS_LEX_STR_Argument "Argument"
END
STRINGTABLE
diff --git a/lexilla/Lexilla.vcxproj b/lexilla/Lexilla.vcxproj
index 49d0b5b95..72c31b614 100644
--- a/lexilla/Lexilla.vcxproj
+++ b/lexilla/Lexilla.vcxproj
@@ -64,6 +64,7 @@
+
diff --git a/lexilla/lexers/LexAbaqus.cxx b/lexilla/lexers/LexAbaqus.cxx
new file mode 100644
index 000000000..db3a14a14
--- /dev/null
+++ b/lexilla/lexers/LexAbaqus.cxx
@@ -0,0 +1,606 @@
+// Scintilla source code edit control
+/** @file LexAbaqus.cxx
+ ** Lexer for ABAQUS. Based on the lexer for APDL by Hadar Raz.
+ ** By Sergio Lucato.
+ ** Sort of completely rewritten by Gertjan Kloosterman
+ **/
+// The License.txt file describes the conditions under which this software may be distributed.
+
+// Code folding copyied and modified from LexBasic.cxx
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include "ILexer.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+#include "WordList.h"
+#include "LexAccessor.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "CharacterSet.h"
+#include "LexerModule.h"
+
+using namespace Lexilla;
+
+static inline bool IsAKeywordChar(const int ch) {
+ return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == ' ')));
+}
+
+static inline bool IsASetChar(const int ch) {
+ return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == '.') || (ch == '-')));
+}
+
+static void ColouriseABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList*[] /* *keywordlists[] */,
+ Accessor &styler) {
+ enum localState { KW_LINE_KW, KW_LINE_COMMA, KW_LINE_PAR, KW_LINE_EQ, KW_LINE_VAL, \
+ DAT_LINE_VAL, DAT_LINE_COMMA,\
+ COMMENT_LINE,\
+ ST_ERROR, LINE_END } state ;
+
+ // Do not leak onto next line
+ state = LINE_END ;
+ initStyle = SCE_ABAQUS_DEFAULT;
+ StyleContext sc(startPos, length, initStyle, styler);
+
+ // Things are actually quite simple
+ // we have commentlines
+ // keywordlines and datalines
+ // On a data line there will only be colouring of numbers
+ // a keyword line is constructed as
+ // *word,[ paramname[=paramvalue]]*
+ // if the line ends with a , the keyword line continues onto the new line
+
+ for (; sc.More(); sc.Forward()) {
+ switch ( state ) {
+ case KW_LINE_KW :
+ if ( sc.atLineEnd ) {
+ // finished the line in keyword state, switch to LINE_END
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ } else if ( IsAKeywordChar(sc.ch) ) {
+ // nothing changes
+ state = KW_LINE_KW ;
+ } else if ( sc.ch == ',' ) {
+ // Well well we say a comma, arguments *MUST* follow
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = KW_LINE_COMMA ;
+ } else {
+ // Flag an error
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ // Done with processing
+ break ;
+ case KW_LINE_COMMA :
+ // acomma on a keywordline was seen
+ if ( IsAKeywordChar(sc.ch)) {
+ sc.SetState(SCE_ABAQUS_ARGUMENT) ;
+ state = KW_LINE_PAR ;
+ } else if ( sc.atLineEnd || (sc.ch == ',') ) {
+ // we remain in keyword mode
+ state = KW_LINE_COMMA ;
+ } else if ( sc.ch == ' ' ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = KW_LINE_COMMA ;
+ } else {
+ // Anything else constitutes an error
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case KW_LINE_PAR :
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ } else if ( IsAKeywordChar(sc.ch) || (sc.ch == '-') ) {
+ // remain in this state
+ state = KW_LINE_PAR ;
+ } else if ( sc.ch == ',' ) {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = KW_LINE_COMMA ;
+ } else if ( sc.ch == '=' ) {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = KW_LINE_EQ ;
+ } else {
+ // Anything else constitutes an error
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case KW_LINE_EQ :
+ if ( sc.ch == ' ' ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ // remain in this state
+ state = KW_LINE_EQ ;
+ } else if ( IsADigit(sc.ch) || (sc.ch == '-') || (sc.ch == '.' && IsADigit(sc.chNext)) ) {
+ sc.SetState(SCE_ABAQUS_NUMBER) ;
+ state = KW_LINE_VAL ;
+ } else if ( IsAKeywordChar(sc.ch) ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = KW_LINE_VAL ;
+ } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) {
+ sc.SetState(SCE_ABAQUS_STRING) ;
+ state = KW_LINE_VAL ;
+ } else {
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case KW_LINE_VAL :
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) {
+ // nothing changes
+ state = KW_LINE_VAL ;
+ } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||
+ ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) &&
+ (sc.state == SCE_ABAQUS_NUMBER)) {
+ // remain in number mode
+ state = KW_LINE_VAL ;
+ } else if (sc.state == SCE_ABAQUS_STRING) {
+ // accept everything until a closing quote
+ if ( sc.ch == '\'' || sc.ch == '\"' ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = KW_LINE_VAL ;
+ }
+ } else if ( sc.ch == ',' ) {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = KW_LINE_COMMA ;
+ } else {
+ // anything else is an error
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case DAT_LINE_VAL :
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) {
+ // nothing changes
+ state = DAT_LINE_VAL ;
+ } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||
+ ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) &&
+ (sc.state == SCE_ABAQUS_NUMBER)) {
+ // remain in number mode
+ state = DAT_LINE_VAL ;
+ } else if (sc.state == SCE_ABAQUS_STRING) {
+ // accept everything until a closing quote
+ if ( sc.ch == '\'' || sc.ch == '\"' ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = DAT_LINE_VAL ;
+ }
+ } else if ( sc.ch == ',' ) {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = DAT_LINE_COMMA ;
+ } else {
+ // anything else is an error
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case DAT_LINE_COMMA :
+ // a comma on a data line was seen
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ } else if ( sc.ch == ' ' ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = DAT_LINE_COMMA ;
+ } else if (sc.ch == ',') {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = DAT_LINE_COMMA ;
+ } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) {
+ sc.SetState(SCE_ABAQUS_NUMBER) ;
+ state = DAT_LINE_VAL ;
+ } else if ( IsAKeywordChar(sc.ch) ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = DAT_LINE_VAL ;
+ } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) {
+ sc.SetState(SCE_ABAQUS_STRING) ;
+ state = DAT_LINE_VAL ;
+ } else {
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ break ;
+ case COMMENT_LINE :
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ }
+ break ;
+ case ST_ERROR :
+ if ( sc.atLineEnd ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = LINE_END ;
+ }
+ break ;
+ case LINE_END :
+ if ( sc.atLineEnd || sc.ch == ' ' ) {
+ // nothing changes
+ state = LINE_END ;
+ } else if ( sc.ch == '*' ) {
+ if ( sc.chNext == '*' ) {
+ state = COMMENT_LINE ;
+ sc.SetState(SCE_ABAQUS_COMMENT) ;
+ } else {
+ state = KW_LINE_KW ;
+ sc.SetState(SCE_ABAQUS_STARCOMMAND) ;
+ }
+ } else {
+ // it must be a data line, things are as if we are in DAT_LINE_COMMA
+ if ( sc.ch == ',' ) {
+ sc.SetState(SCE_ABAQUS_OPERATOR) ;
+ state = DAT_LINE_COMMA ;
+ } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) {
+ sc.SetState(SCE_ABAQUS_NUMBER) ;
+ state = DAT_LINE_VAL ;
+ } else if ( IsAKeywordChar(sc.ch) ) {
+ sc.SetState(SCE_ABAQUS_DEFAULT) ;
+ state = DAT_LINE_VAL ;
+ } else if ( (sc.ch == '\'') || (sc.ch == '\"') ) {
+ sc.SetState(SCE_ABAQUS_STRING) ;
+ state = DAT_LINE_VAL ;
+ } else {
+ sc.SetState(SCE_ABAQUS_PROCESSOR) ;
+ state = ST_ERROR ;
+ }
+ }
+ break ;
+ }
+ }
+ sc.Complete();
+}
+
+//------------------------------------------------------------------------------
+// This copyied and modified from LexBasic.cxx
+//------------------------------------------------------------------------------
+
+/* Bits:
+ * 1 - whitespace
+ * 2 - operator
+ * 4 - identifier
+ * 8 - decimal digit
+ * 16 - hex digit
+ * 32 - bin digit
+ */
+static int character_classification[128] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 10, 6,
+ 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2,
+ 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4,
+ 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0
+};
+
+static bool IsSpace(int c) {
+ return c < 128 && (character_classification[c] & 1);
+}
+
+static bool IsIdentifier(int c) {
+ return c < 128 && (character_classification[c] & 4);
+}
+
+static int LowerCase(int c)
+{
+ if (c >= 'A' && c <= 'Z')
+ return 'a' + c - 'A';
+ return c;
+}
+
+static Sci_Position LineEnd(Sci_Position line, Accessor &styler)
+{
+ const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line
+ Sci_Position eol_pos ;
+ // if the line is the last line, the eol_pos is styler.Length()
+ // eol will contain a new line, or a virtual new line
+ if ( docLines == line )
+ eol_pos = styler.Length() ;
+ else
+ eol_pos = styler.LineStart(line + 1) - 1;
+ return eol_pos ;
+}
+
+static Sci_Position LineStart(Sci_Position line, Accessor &styler)
+{
+ return styler.LineStart(line) ;
+}
+
+// LineType
+//
+// bits determines the line type
+// 1 : data line
+// 2 : only whitespace
+// 3 : data line with only whitespace
+// 4 : keyword line
+// 5 : block open keyword line
+// 6 : block close keyword line
+// 7 : keyword line in error
+// 8 : comment line
+static int LineType(Sci_Position line, Accessor &styler) {
+ Sci_Position pos = LineStart(line, styler) ;
+ Sci_Position eol_pos = LineEnd(line, styler) ;
+
+ int c ;
+ char ch = ' ';
+
+ Sci_Position i = pos ;
+ while ( i < eol_pos ) {
+ c = styler.SafeGetCharAt(i);
+ ch = static_cast(LowerCase(c));
+ // We can say something as soon as no whitespace
+ // was encountered
+ if ( !IsSpace(c) )
+ break ;
+ i++ ;
+ }
+
+ if ( i >= eol_pos ) {
+ // This is a whitespace line, currently
+ // classifies as data line
+ return 3 ;
+ }
+
+ if ( ch != '*' ) {
+ // This is a data line
+ return 1 ;
+ }
+
+ if ( i == eol_pos - 1 ) {
+ // Only a single *, error but make keyword line
+ return 4+3 ;
+ }
+
+ // This means we can have a second character
+ // if that is also a * this means a comment
+ // otherwise it is a keyword.
+ c = styler.SafeGetCharAt(i+1);
+ ch = static_cast(LowerCase(c));
+ if ( ch == '*' ) {
+ return 8 ;
+ }
+
+ // At this point we know this is a keyword line
+ // the character at position i is a *
+ // it is not a comment line
+ char word[256] ;
+ int wlen = 0;
+
+ word[wlen] = '*' ;
+ wlen++ ;
+
+ i++ ;
+ while ( (i < eol_pos) && (wlen < 255) ) {
+ c = styler.SafeGetCharAt(i);
+ ch = static_cast(LowerCase(c));
+
+ if ( (!IsSpace(c)) && (!IsIdentifier(c)) )
+ break ;
+
+ if ( IsIdentifier(c) ) {
+ word[wlen] = ch ;
+ wlen++ ;
+ }
+
+ i++ ;
+ }
+
+ word[wlen] = 0 ;
+
+ // Make a comparison
+ if ( !strcmp(word, "*step") ||
+ !strcmp(word, "*part") ||
+ !strcmp(word, "*instance") ||
+ !strcmp(word, "*assembly")) {
+ return 4+1 ;
+ }
+
+ if ( !strcmp(word, "*endstep") ||
+ !strcmp(word, "*endpart") ||
+ !strcmp(word, "*endinstance") ||
+ !strcmp(word, "*endassembly")) {
+ return 4+2 ;
+ }
+
+ return 4 ;
+}
+
+static void SafeSetLevel(Sci_Position line, int level, Accessor &styler)
+{
+ if ( line < 0 )
+ return ;
+
+ int mask = ((~SC_FOLDLEVELHEADERFLAG) | (~SC_FOLDLEVELWHITEFLAG));
+
+ if ( (level & mask) < 0 )
+ return ;
+
+ if ( styler.LevelAt(line) != level )
+ styler.SetLevel(line, level) ;
+}
+
+static void FoldABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int,
+WordList *[], Accessor &styler) {
+ Sci_Position startLine = styler.GetLine(startPos) ;
+ Sci_Position endLine = styler.GetLine(startPos+length-1) ;
+
+ // bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
+ // We want to deal with all the cases
+ // To know the correct indentlevel, we need to look back to the
+ // previous command line indentation level
+ // order of formatting keyline datalines commentlines
+ Sci_Position beginData = -1 ;
+ Sci_Position beginComment = -1 ;
+ Sci_Position prvKeyLine = startLine ;
+ Sci_Position prvKeyLineTp = 0 ;
+
+ // Scan until we find the previous keyword line
+ // this will give us the level reference that we need
+ while ( prvKeyLine > 0 ) {
+ prvKeyLine-- ;
+ prvKeyLineTp = LineType(prvKeyLine, styler) ;
+ if ( prvKeyLineTp & 4 )
+ break ;
+ }
+
+ // Determine the base line level of all lines following
+ // the previous keyword
+ // new keyword lines are placed on this level
+ //if ( prvKeyLineTp & 4 ) {
+ int level = styler.LevelAt(prvKeyLine) & ~SC_FOLDLEVELHEADERFLAG ;
+ //}
+
+ // uncomment line below if weird behaviour continues
+ prvKeyLine = -1 ;
+
+ // Now start scanning over the lines.
+ for ( Sci_Position line = startLine; line <= endLine; line++ ) {
+ int lineType = LineType(line, styler) ;
+
+ // Check for comment line
+ if ( lineType == 8 ) {
+ if ( beginComment < 0 ) {
+ beginComment = line ;
+ }
+ }
+
+ // Check for data line
+ if ( (lineType == 1) || (lineType == 3) ) {
+ if ( beginData < 0 ) {
+ if ( beginComment >= 0 ) {
+ beginData = beginComment ;
+ } else {
+ beginData = line ;
+ }
+ }
+ beginComment = -1 ;
+ }
+
+ // Check for keywordline.
+ // As soon as a keyword line is encountered, we can set the
+ // levels of everything from the previous keyword line to this one
+ if ( lineType & 4 ) {
+ // this is a keyword, we can now place the previous keyword
+ // all its data lines and the remainder
+
+ // Write comments and data line
+ if ( beginComment < 0 ) {
+ beginComment = line ;
+ }
+
+ if ( beginData < 0 ) {
+ beginData = beginComment ;
+ if ( prvKeyLineTp != 5 )
+ SafeSetLevel(prvKeyLine, level, styler) ;
+ else
+ SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;
+ } else {
+ SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;
+ }
+
+ int datLevel = level + 1 ;
+ if ( !(prvKeyLineTp & 4) ) {
+ datLevel = level ;
+ }
+
+ for ( Sci_Position ll = beginData; ll < beginComment; ll++ )
+ SafeSetLevel(ll, datLevel, styler) ;
+
+ // The keyword we just found is going to be written at another level
+ // if we have a type 5 and type 6
+ if ( prvKeyLineTp == 5 ) {
+ level += 1 ;
+ }
+
+ if ( prvKeyLineTp == 6 ) {
+ level -= 1 ;
+ if ( level < 0 ) {
+ level = 0 ;
+ }
+ }
+
+ for ( Sci_Position lll = beginComment; lll < line; lll++ )
+ SafeSetLevel(lll, level, styler) ;
+
+ // wrap and reset
+ beginComment = -1 ;
+ beginData = -1 ;
+ prvKeyLine = line ;
+ prvKeyLineTp = lineType ;
+ }
+
+ }
+
+ if ( beginComment < 0 ) {
+ beginComment = endLine + 1 ;
+ } else {
+ // We need to find out whether this comment block is followed by
+ // a data line or a keyword line
+ const Sci_Position docLines = styler.GetLine(styler.Length() - 1);
+
+ for ( Sci_Position line = endLine + 1; line <= docLines; line++ ) {
+ Sci_Position lineType = LineType(line, styler) ;
+
+ if ( lineType != 8 ) {
+ if ( !(lineType & 4) ) {
+ beginComment = endLine + 1 ;
+ }
+ break ;
+ }
+ }
+ }
+
+ if ( beginData < 0 ) {
+ beginData = beginComment ;
+ if ( prvKeyLineTp != 5 )
+ SafeSetLevel(prvKeyLine, level, styler) ;
+ else
+ SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;
+ } else {
+ SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;
+ }
+
+ int datLevel = level + 1 ;
+ if ( !(prvKeyLineTp & 4) ) {
+ datLevel = level ;
+ }
+
+ for ( Sci_Position ll = beginData; ll < beginComment; ll++ )
+ SafeSetLevel(ll, datLevel, styler) ;
+
+ if ( prvKeyLineTp == 5 ) {
+ level += 1 ;
+ }
+
+ if ( prvKeyLineTp == 6 ) {
+ level -= 1 ;
+ }
+ for ( Sci_Position m = beginComment; m <= endLine; m++ )
+ SafeSetLevel(m, level, styler) ;
+}
+
+static const char * const abaqusWordListDesc[] = {
+ "processors",
+ "commands",
+ "slashommands",
+ "starcommands",
+ "arguments",
+ "functions",
+ 0
+};
+
+extern const LexerModule lmAbaqus(SCLEX_ABAQUS, ColouriseABAQUSDoc, "abaqus", FoldABAQUSDoc, abaqusWordListDesc);
diff --git a/lexilla/scripts/LexillaData.cmd b/lexilla/scripts/LexillaData.cmd
new file mode 100644
index 000000000..372a238f5
--- /dev/null
+++ b/lexilla/scripts/LexillaData.cmd
@@ -0,0 +1,42 @@
+@echo off
+setlocal EnableDelayedExpansion
+set _THISDIR_=%~dp0
+rem remove trailing back-slash
+set _THISDIR_=!_THISDIR_:~,-1!
+rem transform to foward-slash
+::~set "_THISDIR_=%_THISDIR_:\=/%"
+pushd %_THISDIR_%
+::cls
+
+
+set _EXITCODE_=0
+::set _PYTHON_EXE=python.exe
+set _PYTHON_EXE=c:\PortablePrograms\Python3_12_5_x64_emb\python.exe
+rem call :RESOLVE_PATH _PYTHON_EXE "%_THISDIR_%..\..\..\..\_python_emb\python.exe"
+
+set _CMD_="%_PYTHON_EXE%" "%~dpn0.py"
+echo.Calling: %_CMD_%
+%_CMD_%
+if not [%ERRORLEVEL%] == [0] (
+ set _EXITCODE_=%ERRORLEVEL%
+)
+
+
+goto :END
+rem ----------------------------------------------------------------------------
+
+
+rem call :RESOLVE_PATH WORKINGDIRPARENT ".."
+:RESOLVE_PATH
+ set %1=%~dpfn2
+goto:eof
+rem ----------------------------------------------------------------------------
+
+
+:END
+::pause
+popd
+echo.ERRORLEVEL=%_EXITCODE_%
+endlocal & set _EXITCODE_=%_EXITCODE_%
+:: -call exit only in case of
+if not [%_EXITCODE_%]==[0] exit /b %_EXITCODE_%
diff --git a/lexilla/src/Lexilla.cxx b/lexilla/src/Lexilla.cxx
index b0dde49a8..560edaa9e 100644
--- a/lexilla/src/Lexilla.cxx
+++ b/lexilla/src/Lexilla.cxx
@@ -28,6 +28,7 @@ using namespace Lexilla;
//++Autogenerated -- run lexilla/scripts/LexillaGen.py to regenerate
//**\(extern const LexerModule \*;\n\)
+extern const LexerModule lmAbaqus;
extern const LexerModule lmAHK;
extern const LexerModule lmAs;
extern const LexerModule lmAsm;
@@ -98,6 +99,7 @@ void AddEachLexer() {
catalogueLexilla.AddLexerModules({
//++Autogenerated -- run scripts/LexillaGen.py to regenerate
//**\(\t\t&\*,\n\)
+ &lmAbaqus,
&lmAHK,
&lmAs,
&lmAsm,
diff --git a/lexilla/src/deps.mak b/lexilla/src/deps.mak
index 1cb27b721..52b040d90 100644
--- a/lexilla/src/deps.mak
+++ b/lexilla/src/deps.mak
@@ -97,6 +97,18 @@ $(DIR_O)/WordList.o: \
../lexlib/WordList.cxx \
../lexlib/WordList.h \
../lexlib/CharacterSet.h
+$(DIR_O)/LexAbaqus.o: \
+ ../lexers/LexAbaqus.cxx \
+ ../../scintilla/include/ILexer.h \
+ ../../scintilla/include/Sci_Position.h \
+ ../../scintilla/include/Scintilla.h \
+ ../include/SciLexer.h \
+ ../lexlib/WordList.h \
+ ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h \
+ ../lexlib/CharacterSet.h \
+ ../lexlib/LexerModule.h
$(DIR_O)/LexAsm.o: \
../lexers/LexAsm.cxx \
../../scintilla/include/ILexer.h \
diff --git a/lexilla/src/lexilla.mak b/lexilla/src/lexilla.mak
index a58996f06..f7746f3ef 100644
--- a/lexilla/src/lexilla.mak
+++ b/lexilla/src/lexilla.mak
@@ -92,6 +92,7 @@ $(SCINTILLA_INCLUDE):
#++Autogenerated -- run scripts/LexGen.py to regenerate
#**LEX_OBJS=\\\n\(\t$(DIR_O)\\\*.obj \\\n\)
LEX_OBJS=\
+ $(DIR_O)\LexAbaqus.obj \
$(DIR_O)\LexAsm.obj \
$(DIR_O)\LexAU3.obj \
$(DIR_O)\LexAVS.obj \
diff --git a/lexilla/src/nmdeps.mak b/lexilla/src/nmdeps.mak
index ec42b9406..141f0f44e 100644
--- a/lexilla/src/nmdeps.mak
+++ b/lexilla/src/nmdeps.mak
@@ -97,6 +97,18 @@ $(DIR_O)/WordList.obj: \
../lexlib/WordList.cxx \
../lexlib/WordList.h \
../lexlib/CharacterSet.h
+$(DIR_O)/LexAbaqus.obj: \
+ ../lexers/LexAbaqus.cxx \
+ ../../scintilla/include/ILexer.h \
+ ../../scintilla/include/Sci_Position.h \
+ ../../scintilla/include/Scintilla.h \
+ ../include/SciLexer.h \
+ ../lexlib/WordList.h \
+ ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h \
+ ../lexlib/CharacterSet.h \
+ ../lexlib/LexerModule.h
$(DIR_O)/LexAsm.obj: \
../lexers/LexAsm.cxx \
../../scintilla/include/ILexer.h \
diff --git a/res/StdDarkModeScheme.ini b/res/StdDarkModeScheme.ini
index 5731018b9..6ae1055f3 100644
--- a/res/StdDarkModeScheme.ini
+++ b/res/StdDarkModeScheme.ini
@@ -65,6 +65,18 @@ Inline-IME Color=fore:#4EF64D
Default=font:$Text0
Margins and Line Numbers=font:Consolas; size:-2; fore:#DEDEDE; back:#454545
Extra Line Spacing (Size)=size:2
+[ABAQUS]
+Comment=fore:#70F76D
+Number=fore:#F27E0D
+String=italic; fore:#9C9C9C
+Operator=bold; fore:#EC880D
+Star Command=bold; fore:#73B9FF
+Argument=fore:#B4E1F5
+Processor=fore:#F53C3D
+Command=bold; fore:#89ABEC
+Slash Command=bold; fore:#89ABEC
+Word=fore:#DCDCDC
+Function=fore:#F770F7
[ANSI Art]
Default=font:Lucida Console; thin; size:11; smoothing:aliased
Margins and Line Numbers=font:Consolas; size:-2; fore:#DEDEDE; back:#454545
diff --git a/src/Notepad3.vcxproj b/src/Notepad3.vcxproj
index 8208a2861..7b505f33b 100644
--- a/src/Notepad3.vcxproj
+++ b/src/Notepad3.vcxproj
@@ -981,6 +981,7 @@
+
diff --git a/src/Notepad3.vcxproj.filters b/src/Notepad3.vcxproj.filters
index 27f7794dc..187446579 100644
--- a/src/Notepad3.vcxproj.filters
+++ b/src/Notepad3.vcxproj.filters
@@ -75,6 +75,9 @@
Source Files
+
+ Source Files\StyleLexers
+
Source Files\StyleLexers
diff --git a/src/StyleLexers/EditLexer.h b/src/StyleLexers/EditLexer.h
index bff1cc065..21489d471 100644
--- a/src/StyleLexers/EditLexer.h
+++ b/src/StyleLexers/EditLexer.h
@@ -92,6 +92,7 @@ LexDefaultStyles;
extern EDITLEXER lexStandard; // Default Text
extern EDITLEXER lexStandard2nd; // 2nd Default Text
extern EDITLEXER lexTEXT; // Pure Text Files
+extern EDITLEXER lexAbaqus; // Abaqus
extern EDITLEXER lexANSI; // ANSI Files
extern EDITLEXER lexCONF; // Apache Config Files
extern EDITLEXER lexASM; // Assembly Script
diff --git a/src/StyleLexers/styleLexAbaqus.c b/src/StyleLexers/styleLexAbaqus.c
new file mode 100644
index 000000000..7d52ece61
--- /dev/null
+++ b/src/StyleLexers/styleLexAbaqus.c
@@ -0,0 +1,26 @@
+#include "StyleLexers.h"
+
+// ----------------------------------------------------------------------------
+
+KEYWORDLIST KeyWords_Abaqus = EMPTY_KEYWORDLIST;
+
+EDITLEXER lexAbaqus =
+{
+ SCLEX_ABAQUS, "abaqus", IDS_LEX_ABAQUS, L"ABAQUS", L"inp", L"",
+ &KeyWords_Abaqus, {
+ { {STYLE_DEFAULT}, IDS_LEX_STR_Default, L"Default", L"", L"" },
+ //{ {SCE_ABAQUS_DEFAULT}, IDS_LEX_STR_Default, L"Default", L"", L"" },
+ { {MULTI_STYLE(SCE_ABAQUS_COMMENT,SCE_ABAQUS_COMMENTBLOCK,0,0)}, IDS_LEX_STR_Comment, L"Comment", L"fore:#008800", L"" },
+ { {SCE_ABAQUS_NUMBER}, IDS_LEX_STR_Number, L"Number", L"fore:#FF8000", L"" },
+ { {SCE_ABAQUS_STRING}, IDS_LEX_STR_String, L"String", L"fore:#808080", L"" },
+ { {SCE_ABAQUS_OPERATOR}, IDS_LEX_STR_Operator, L"Operator", L"bold; fore:#FF8000", L"" },
+ { {SCE_ABAQUS_STARCOMMAND}, IDS_LEX_STR_StarCmd, L"Star Command", L"bold; fore:#0A246A", L"" },
+ { {SCE_ABAQUS_ARGUMENT}, IDS_LEX_STR_Argument, L"Argument", L"fore:#4747B0", L"" },
+ { {SCE_ABAQUS_PROCESSOR}, IDS_LEX_STR_Processor, L"Processor", L"fore:#FF0000", L"" },
+ { {SCE_ABAQUS_COMMAND}, IDS_LEX_STR_Cmd, L"Command", L"bold; fore:#003CE6", L"" },
+ { {SCE_ABAQUS_SLASHCOMMAND}, IDS_LEX_STR_SlashCmd, L"Slash Command", L"bold; fore:#003CE6", L"" },
+ { {SCE_ABAQUS_WORD}, IDS_LEX_STR_Word, L"Word", L"fore:#000000", L"" },
+ { {SCE_ABAQUS_FUNCTION}, IDS_LEX_STR_Function, L"Function", L"fore:#A46000", L"" },
+ EDITLEXER_SENTINEL
+ }
+};
diff --git a/src/Styles.c b/src/Styles.c
index dc826186e..54ba48fe5 100644
--- a/src/Styles.c
+++ b/src/Styles.c
@@ -58,6 +58,7 @@ static PEDITLEXER g_pLexArray[] = {
&lexStandard, // Default Text
&lexStandard2nd, // 2nd Default Text
&lexTEXT, // Pure Text Files (Constants.StdDefaultLexerID = 2)
+ &lexAbaqus, // Abaqus
&lexANSI, // ANSI Files (ASCII Art)
&lexCONF, // Apache Config Files
&lexASM, // Assembly Script
diff --git a/test/test_files/StyleLexers/styleLexABAQUS/example.inp b/test/test_files/StyleLexers/styleLexABAQUS/example.inp
new file mode 100644
index 000000000..9b20de007
--- /dev/null
+++ b/test/test_files/StyleLexers/styleLexABAQUS/example.inp
@@ -0,0 +1,66 @@
+** ----------------------------------------------------------------
+** KOMMENTARZEILE: Beginnt mit zwei Sternchen (**)
+** ABAQUS INPUT DATEI BEISPIEL (SYNTAX-ÜBERSICHT)
+** ----------------------------------------------------------------
+
+*HEADING
+Beispiel-Simulation: Statische Analyse eines Stabes
+
+** ----------------------------------------------------------------
+** MODELLDATEN: Alles vor dem ersten *STEP
+** ----------------------------------------------------------------
+
+** Knoten-Definition: *NODE [Schlüsselwort], Parameter folgen nach Komma
+** Format: Knoten-ID, X, Y, (Z)
+*NODE, NSET=ALL_NODES
+1, 0.0, 0.0, 0.0
+2, 10.0, 0.0, 0.0
+
+** Element-Definition: TYPE ist ein erforderlicher Parameter
+** Format: Element-ID, Knoten1, Knoten2, ...
+*ELEMENT, TYPE=T2D2, ELSET=BEAM_ELEMENTS
+1, 1, 2
+
+** Material-Definition: Schlüsselwörter müssen in Blöcken gruppiert sein
+*MATERIAL, NAME=STEEL
+*ELASTIC, TYPE=ISOTROPIC
+210000.0, 0.3
+
+** Querschnitts-Zuweisung: Verknüpft Elset mit Material
+*SOLID SECTION, ELSET=BEAM_ELEMENTS, MATERIAL=STEEL
+1.0,
+
+** ----------------------------------------------------------------
+** PARAMETRISIERUNG (Optional): Nutzt Python-Syntax
+** ----------------------------------------------------------------
+*PARAMETER
+force_val = -100.0
+thick = 2.5
+
+** ----------------------------------------------------------------
+** HISTORY-DATEN: Definiert die Analyse-Schritte
+** ----------------------------------------------------------------
+
+*STEP, NAME=STATIC_LOAD, PERTURBATION
+*STATIC
+** Datenzeile für *STATIC: Start-Inkrement, Gesamtzeit, Min, Max
+0.1, 1.0, 1E-5, 1.0
+
+** Randbedingungen: DOF 1=X, 2=Y, 3=Z
+*BOUNDARY
+1, 1, 2, 0.0
+
+** Lasten: Nutzt einen Parameter
+*CLOAD
+2, 2,
+
+** ----------------------------------------------------------------
+** OUTPUT-REQUESTS
+** ----------------------------------------------------------------
+*OUTPUT, FIELD
+*NODE OUTPUT
+U, RF
+*ELEMENT OUTPUT
+S, E
+
+*END STEP