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