From 08d84d3dae73dd19f70a90171acf3834b9cfb5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Mon, 2 Sep 2024 14:25:38 +0200 Subject: [PATCH 1/6] Update nmtran.tmLanguage.json --- syntaxes/nmtran.tmLanguage.json | 40 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/syntaxes/nmtran.tmLanguage.json b/syntaxes/nmtran.tmLanguage.json index f7c6012..90c556b 100644 --- a/syntaxes/nmtran.tmLanguage.json +++ b/syntaxes/nmtran.tmLanguage.json @@ -13,109 +13,109 @@ "repository": { "comments": { "patterns": [{ - "name": "comment.line.source.nmtran", + "name": "comment.line.nmtran", "match": ";.*$" }] }, "numericals": { "patterns": [{ - "name": "constant.numeric.source.nmtran", + "name": "constant.numeric.nmtran", "match": "-?\\d+" }] }, "control-records": { "patterns": [{ - "name": "string.source.nmtran", + "name": "string.nmtran", "match": "(?i:\\$[\\w]+)" }] }, "control-record-options": { "patterns": [{ "comment": "subroutines", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(ADVAN(\\=)?[\\d]+|TRANS(\\=)?\\d+)|((TN|NW)PRI))" }, { "comment": "Control record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(PROTECT)|(DATA|IGNORE|NULL|(NO)?(PRINT|WIDE|REWIND|ABORT|RESCALE|REPEAT|INTERACTION|LAPLACIAN|POSTHOC)|CHECKOUT|RECORDS|LRECL|SUBROUTINES|COM(RES|SAV)|DERIV2|NUMBERPOINTS|DIAGONAL\\(\\d+\\)|BLOCK(\\(\\d+\\))?|SAME|FIX(ED)?|NPOPETAS|NORMAL|UNIFORM|NEW|SUBPROBLEMS|ONLYSIM(ULATION)?|METH(OD)?|SIG((DIG)?ITS)?|MAXEVAL(S)?|MSFO|SPECIAL|MATRIX|(UN)?CONDITIONAL|(NO|ONE)HEADER|VS|BY|UNIT|FROM|(A|SS)?TO(L(ERANCE)?)?|(N)?COMP(ARTMENT(S)?)?|NEQUILIBRIUM|NPARAMETERS|LINK|LIKE(LIHOOD)?|SADDLE_RESET)\\b)" }, { "comment": "SIZES record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(LTH|LVR|LVR2|NO|MMX|LNP4|LSUPP|LIM7|LWS3|MAXIDS|LIM1|LIM2|LIM3|LIM4|LIM5|LIM6|LIM8|LIM11|LIM13|LIM15|LIM16|MAXRECID|PC|PCT|PIR|PD|PDT|PAL|MAXFCN|DIMTMP|DIMCNS|DIMNEW|DIMVRB|PL|NPOPMIXMAX|MAXOMEG|MAXPTHETA|MAXITER|ISAMPLEMAX|MAXSIDL|PNM_MAXNODES)\\b)" }, { "comment": "PRIOR record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(ITYP|NSAM|ISS|PLEV|CNT)|(NTHETA|NETA|NEPS|NTHP|NETP|NEPP|NPEXP)|(IFND|MODE|IVAR)(DISPLAY|ICMAX)\\b)" }, { "comment": "$ESTIMATION record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(-2LL|ATOL|AUTO|CALPHA|CENTERING|CINTERVAL|CITER|CNSAMP|(UN)?COND(ITIONAL)?|CONSTRAIN|CTYPE|DERCONT|DF(S)?|EONLY|ETA(BARCHECK|DER|SAMPLES|STYPE)|FILE|FNLETA|FORMAT|DELIM|FPARAFILE|GRD|GRDQ|GRID|HYBRID|IACCEPT(L)?|INTER(ACTION)?|IKAPPA|ISAMPEND|ISAMPLE(_M(1(A|B)?|2|3))?|ISCALE_(MAX|MIN)|KAPPA|LAPLACE|LEVWT|LIKE(LIHOOD)?|LNTWOPI|MADAPT|MAPCOV|MAPI(N)?TER|MASSRESET|MAXEVAL(S)?|MCETA|MSFO|MUM|N(BURN|ITER|SAMPLE)?|(NO)?(ABORT|(THETA|OMEGA|SIGMA)BOUNDTEST)|NO(COV|HABORT|LABEL|NINFETA|PRIOR(C)?|SUB|TITLE)|NSIG|SIGDIGITS|NUMDER|NUMERICAL|NUTS_(BASE|DELTA|EPARAM|GAMMA|INIT|MASS|MAXDEPTH|OPARAM|REG|SPARAM|STEPINTER|STEPITER|TERM|TEST|TRANSFORM)|OACCEPT|OLKJDF|OLNTWOPI|OMEGABOUNDTEST|OMITTED|OPTMAP|ORDER|OSAMPLE_(M1|M2)?|OVARF|PACCEPT|PARAFILE|PARAFPRINT|PHITYPE|POSTHOC|PREDICTION|PRINT|PSAMPLE_(M1|M2|M3|MAX|MIN)|RANMETHOD|REPEAT(1|2)?|SADDLE_(HESS|RESET)|SEED|SIGL(O)?|SLKJDF|FAST|SORT|STDOBJ|STIELTJES|SVARF|THIN|TTDF|ZERO)\\b)" }, { "comment": "$SIMULATION record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(NSUB)\\b)" }, { "comment": "$COVARIANCE record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(SIR(THBND|SAMPLE|DF|NITER|CENTER|PRINT))|((PRE|PF)?COND(S)?)|(FPOSDEF|RESUME|PRETYPE|COMPRESS)|(IACCEPT(L)?)\\b)" }, { "comment": "$TABLE record options", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(NOAPPEND)\\b)" }, { "comment": "OPTIONS, RED", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(OMITTED|CHOLROFF|KNUTHSUMOFF)\\b|ETAS)" }, { "comment": "Control record option arguments", - "name": "support.type.source.nmtran", + "name": "support.type.nmtran", "match": "(?i:\\b(INITIALOFF|NOOFF|NODOSE|EQUILIBRIUM|EXCLUDE|DEFOBSERVATION|DEFDOSE|DEFDOS|CENT|CENTRAL|DEFOBS|DEPOT|INITIAL|FINAL|PRIOR|NO|NOCOMMON|FULL|COMPACT|ZERO|HYBRID|SS(1|2|3|4|5|6|7|8|9|10|11|12))\\b)" }] }, "parameters": { "patterns": [{ - "name": "variable.parameter.source.nmtran", + "name": "variable.parameter.nmtran", "match": "(?i:(A\\([\\d]+\\)|ALAG[\\d]+|F[\\d]+|THETA\\([\\d]+\\)|ETA\\([\\d]+\\)|DADT\\([\\d]+\\)|EPS\\([\\d]+\\)))" }] }, "operators" : { "patterns": [{ "comment": "operators", - "name": "keyword.operator.source.nmtran", + "name": "keyword.operator.nmtran", "match": "(?i:\\b((\\s)?(\\+|-{1}|(\\*){1}|/|\\.((N)?EQ|EQN|GE|GT|LE|LT|NE(N)?|OR|AND)\\.)(\\s)?)\\b)" }, { "comment": "assignment operator", - "name": "markup.bold.source.nmtran", + "name": "markup.bold.nmtran", "match": "=" }, { "comment": "FORTRAN 95 operators", - "name": "keyword.operator.source.nmtran", + "name": "keyword.operator.nmtran", "match": "\\b((\\s)?(\\=\\=|\\/\\=|\\>(\\=)?|\\<(\\=)?)(\\s)?)\\b" }, { "comment": "invalid operator", - "name": "invalid.source.nmtran", + "name": "invalid.nmtran", "match": "(?i:\\b((\\s)?((\\.NEQN\\.)|(\\=\\/))(\\s)?)\\b)" }, { "comment": "Abbreviated code, FORTRAN 77 Code and NON-generic FORTAN 77 CODE", - "name": "keyword.operator.source.nmtran", + "name": "keyword.operator.nmtran", "match": "(?i:\\b(CALL(FL)?|DO|(ELSE)?IF|ELSE|ENDIF|TRUE|FALSE|EXIT|MODE|PASS|RANDOM|RETURN|SIMEPS|SIMETA|SQRT|SUPP|THEN|WHILE|ABS|ACOS|AIMAG|AINT|ALOG|ALOG10|AMAX0|AMAX1|AMIN0|AMIN1|AMOD|AND|ANINT|ASIN|ATAN|ATAN2|BACKSPACE|BLOCK|CABS|CCOS|CHAR|CHARACTER|CLOG|CLOSE|CMPLX|COMMON|COMPLEX|CONJG|CONTINUE|COS|COSH|CSIN|CSQRT|DABS|DACOS|DASIN|DATA(N(2)?)?|DBLE|DCOS|DCOSH|DDIM|DIM|DIMENSION|DINT|DLOG|DMAX1|DMIN1|DMOD|DNINT|DO|DOUBLE|DPROD|DSIGN|DSIN|DSINH|DSQRT|DTAN|DTANH|ELSE|ELSEIF|END|ENDFILE|ENTRY|EQ|EQUIVALENCE|ERR|(C|D)?EXP|EXTERNAL|FALSE|FILE|FLOAT|FORMAT|FUNCTION|GE|GOTO|GT|IABS|ICHAR|IDIM|IDINT|IDNINT|IF|IFIX|IMPLICIT|INDEX|INQUIRE|INTEGER|INTRINSIC|IOSTAT|ISIGN|LE|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|LOGICAL|LT|MAX(0|1)?|MIN(0|1)?|MOD|NE|NINT|NOT|OPEN|OR|PARAMETER|PAUSE|PRECISION|PROGRAM|READ|REAL|REAL|RETURN|REWIND|SAVE|SIGN|SIN|SINH|SNGL|SQRT|STATUS|STOP|SUBROUTINE|TAN(H)?|THEN|TRUE|UNIT|WRITE|BTEST|CDABS|CDCOS|CDEXP|CDLOG|CDSIN|CDSQRT|COTAN|DCMPLX|DCONJG|DCOTAN|DIMAG|DREAL|EOF|ETDAT|GETDAT|GETTIM|HFIX|IAND|IBCHNG|IBCLR|IBSET|IEOR|IMAG|INT|INT1|INT2|INT4|INTC|INTERFACE|IOR|ISHA|ISHC|ISHFT|ISHL|JFIX|LACFAR|LOC|LOCKING|LOCNEAR|NOT|SETTIM)\\b)" }, { "comment": "exponentiation operator", - "name": "keyword.operator.source.nmtran", + "name": "keyword.operator.nmtran", "match": "(?i:(?<=[\\d])(E|(\\*\\*))|(\\&)$)" }] } From d06847868a67985e7edb1da4a42fdaed5981e7f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Thu, 19 Oct 2023 19:27:30 +0200 Subject: [PATCH 2/6] Add test models --- test/maximal.mod | 12 ++++--- test/test-data.mod | 5 +++ test/test-problem.mod | 2 ++ test/test.mod | 22 +++++++++++++ test/test_assignment.mod | 28 ++++++++++++++++ test/test_full.mod | 66 ++++++++++++++++++++++++++++++++++++++ test/test_if-statement.mod | 21 ++++++++++++ 7 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 test/test-data.mod create mode 100644 test/test-problem.mod create mode 100644 test/test.mod create mode 100644 test/test_assignment.mod create mode 100644 test/test_full.mod create mode 100644 test/test_if-statement.mod diff --git a/test/maximal.mod b/test/maximal.mod index d80361f..823f325 100644 --- a/test/maximal.mod +++ b/test/maximal.mod @@ -2,7 +2,9 @@ $SIZES SD=20 $PROBLEM MAXIMAL PPRED MODEL -$DATA pheno.dta IGNORE=@ +$DATA data1.csv + IGNORE=# + IGN=(DOSE.GT.0) ;only placebo data are used $INPUT ID TIME AMT WGT APGR DV EVID HT=DROP MDV @@ -24,7 +26,7 @@ $EST $ESTIMATE METHOD=FO $SUBROUTINE ADVAN -//#region + $ABBREVIATED PROTECT $MIX @@ -40,7 +42,7 @@ X = EXP(TRX) / (1 + EXP(TRX)) ; Constrained between 0 and 1 $PK ; comment -//#endregion + A = 10E4 B = 10E-4 C = 10**4 @@ -58,13 +60,13 @@ ELSEIF (A .LT. B) THEN C = B ELSEIF (A .EQ. B) THEN C = B -ELSEIF (A .NEQ. B) THEN +; ELSEIF (A .NEQ. B) THEN C = B ELSEIF (A .EQN. B) THEN C = B ELSEIF (A .NEN. B) THEN C = B -ELSEIF (A .NEQN. B) THEN +; ELSEIF (A .NEQN. B) THEN C = B ELSEIF (A > B) THEN C = B diff --git a/test/test-data.mod b/test/test-data.mod new file mode 100644 index 0000000..9723771 --- /dev/null +++ b/test/test-data.mod @@ -0,0 +1,5 @@ +$DATA data1.csv + IGNORE=# ;comment in $DATA + IGN=(DOSE.GT.0) + ; Comment on a separate line + \ No newline at end of file diff --git a/test/test-problem.mod b/test/test-problem.mod new file mode 100644 index 0000000..9fdcb22 --- /dev/null +++ b/test/test-problem.mod @@ -0,0 +1,2 @@ + ; Comment before $PROBLEM +$PROBLEM base model ; problem_text diff --git a/test/test.mod b/test/test.mod new file mode 100644 index 0000000..a954760 --- /dev/null +++ b/test/test.mod @@ -0,0 +1,22 @@ +$DES + + INH_BSG = 1 ;BSG not in model yet + + ;------ PKPD_BTP ------ + ; Inhibition of HB synthesis rate in newly produced RBC + ; (unobserved, before RBC release to the blood) + TRT_BTP = TREAT_BTP + IF(T > TEND_BTP) TRT_BTP = 0 + INH_BTP = (1 - (TRT_BTP * (IMAX_BTP * DRUG**GAM_BTP) / (IC50_BTP**GAM_BTP + DRUG**GAM_BTP))) + + ; Observed blood RBC, MCH, HB, and PRE + PR = A(1) + + RT1 = A(2) + RT2 = A(3) + + RT_IMM = A(4) + RT_MAT = A(5) + RT = RT_IMM + RT_MAT + + RC1 = A(6) \ No newline at end of file diff --git a/test/test_assignment.mod b/test/test_assignment.mod new file mode 100644 index 0000000..b728cec --- /dev/null +++ b/test/test_assignment.mod @@ -0,0 +1,28 @@ +$PRED + +W = -.1E-01 +V = -1E1 +U = -2E+1 +T = -3E-1 +S = -4E(1) +R = -5E(+1) +Q = -6E(-1) +P = .25**-.1E-01 +O = (THETA(1)*EXP(ETA(1)))-EPS(1)**(-5) +N = THETA(1)*EXP(ETA(1)) +M = ERR(1) +L = EPS(1) +K = ETA(1) +J = THETA(1) +I = EXP(((0+1*2)/(3-4))**5-1) +H = ((0+1*2)/(3-4))**5-1 +G = (0+1*2)/(3-4) +F = (1*2)/(3-4) +E = (1*2)/3 +D = 1*2/3 +C = 1+2+3 +B = 1+1 +A = 1 + +; comment in $PRED +Y = IPRED + EPS(1) diff --git a/test/test_full.mod b/test/test_full.mod new file mode 100644 index 0000000..efecfdb --- /dev/null +++ b/test/test_full.mod @@ -0,0 +1,66 @@ + ; Comment before $PROBLEM +$PROBLEM base model ; problem_text +$DATA data1.csv + IGNORE=# ;comment in $DATA + IGN=(DOSE.GT.0) + ; Comment on a separate line + +$INPUT ID TIME AMT WGT APGR DV + EVID HT=DROP MDV + +$PRED + +IF (EVID.EQ.1) IPRED = THETA(1)*EXP(ETA(1)) + +IF (EVID.EQ.1) THEN + IPRED = THETA(1)*EXP(ETA(1)) + + ; AA = THETA(1)*EXP(ETA(1)) +ELSEIF (EVID.EQ.2) THEN + Y = IPRED + EPS(1) +ELSE + Y = IPRED +ENDIF + +IF (EVID.EQ.1) THEN + IPRED = THETA(1)*EXP(ETA(1)) + Y = IPRED + EPS(1) +ELSE + IPRED = 0 + Y = IPRED +ENDIF + +W = -.1E-01 +V = -1E1 +U = -2E+1 +T = -3E-1 +S = -4E(1) +R = -5E(+1) +Q = -6E(-1) +P = .25**-.1E-01 +O = (THETA(1)*EXP(ETA(1)))-EPS(1)**(-5) +N = THETA(1)*EXP(ETA(1)) +M = ERR(1) +L = EPS(1) +K = ETA(1) +J = THETA(1) +I = EXP(((0+1*2)/(3-4))**5-1) +H = ((0+1*2)/(3-4))**5-1 +G = (0+1*2)/(3-4) +F = (1*2)/(3-4) +E = (1*2)/3 +D = 1*2/3 +C = 1+2+3 +B = 1+1 +A = 1 + +; comment in $PRED +Y = IPRED + EPS(1) + +$THTA +$OMEGA +$SIGMA +$ESTM +$COVR +$TAB +; comment last diff --git a/test/test_if-statement.mod b/test/test_if-statement.mod new file mode 100644 index 0000000..1253bb3 --- /dev/null +++ b/test/test_if-statement.mod @@ -0,0 +1,21 @@ +$PRED + +IF (EVID.EQ.1) IPRED = THETA(1)*EXP(ETA(1)) + +IF (EVID.EQ.1) THEN + IPRED = THETA(1)*EXP(ETA(1)) + + ; AA = THETA(1)*EXP(ETA(1)) +ELSEIF (EVID.EQ.2) THEN + Y = IPRED + EPS(1) +ELSE + Y = IPRED +ENDIF + +IF (EVID.EQ.1) THEN + IPRED = THETA(1)*EXP(ETA(1)) + Y = IPRED + EPS(1) +ELSE + IPRED = 0 + Y = IPRED +ENDIF From fa3a67f165405fa0e8e321251852b0f9bf75d0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Wed, 4 Sep 2024 23:33:13 +0200 Subject: [PATCH 3/6] Syntax overhaul --- syntaxes/nmtran.tmLanguage.json | 193 ++++++++++++++++++++++++-------- 1 file changed, 149 insertions(+), 44 deletions(-) diff --git a/syntaxes/nmtran.tmLanguage.json b/syntaxes/nmtran.tmLanguage.json index 90c556b..3a91993 100644 --- a/syntaxes/nmtran.tmLanguage.json +++ b/syntaxes/nmtran.tmLanguage.json @@ -3,71 +3,96 @@ "name": "NMTRAN", "scopeName": "source.nmtran", "patterns": [ + { "include": "#verbatim" }, { "include": "#comments" }, - { "include": "#numericals" }, + { "include": "#constants" }, { "include": "#control-records" }, - { "include": "#control-record-options" }, + { "include": "#control-record-syntax" }, { "include": "#parameters" }, + { "include": "#reserved" }, { "include": "#operators" } ], "repository": { + "verbatim": { + "patterns": [{ + "comment": "Verbatim FORTRAN code", + "name": "markup.raw.verbatim.nmtran", + "match": "^\".*$" + }] + }, "comments": { "patterns": [{ - "name": "comment.line.nmtran", + "name": "comment.line.semicolon.nmtran", "match": ";.*$" }] }, - "numericals": { + "constants": { "patterns": [{ + "comment": "numbers", "name": "constant.numeric.nmtran", "match": "-?\\d+" + }, + { + "comment": "Special constants", + "name": "constant.language.special.nmtran", + "match": "(?i:\\b(TRUE|FALSE|NULL|\\-Inf|Inf)\\b)" }] }, "control-records": { "patterns": [{ - "name": "string.nmtran", - "match": "(?i:\\$[\\w]+)" + "name": "markup.heading.1.controlrecord.nmtran", + "match": "(?i:^\\$[A-Z]+)" }] }, - "control-record-options": { + "control-record-syntax": { "patterns": [{ "comment": "subroutines", - "name": "support.type.nmtran", + "name": "support.type.subroutines.nmtran", "match": "(?i:\\b(ADVAN(\\=)?[\\d]+|TRANS(\\=)?\\d+)|((TN|NW)PRI))" }, { - "comment": "Control record options", - "name": "support.type.nmtran", - "match": "(?i:\\b(PROTECT)|(DATA|IGNORE|NULL|(NO)?(PRINT|WIDE|REWIND|ABORT|RESCALE|REPEAT|INTERACTION|LAPLACIAN|POSTHOC)|CHECKOUT|RECORDS|LRECL|SUBROUTINES|COM(RES|SAV)|DERIV2|NUMBERPOINTS|DIAGONAL\\(\\d+\\)|BLOCK(\\(\\d+\\))?|SAME|FIX(ED)?|NPOPETAS|NORMAL|UNIFORM|NEW|SUBPROBLEMS|ONLYSIM(ULATION)?|METH(OD)?|SIG((DIG)?ITS)?|MAXEVAL(S)?|MSFO|SPECIAL|MATRIX|(UN)?CONDITIONAL|(NO|ONE)HEADER|VS|BY|UNIT|FROM|(A|SS)?TO(L(ERANCE)?)?|(N)?COMP(ARTMENT(S)?)?|NEQUILIBRIUM|NPARAMETERS|LINK|LIKE(LIHOOD)?|SADDLE_RESET)\\b)" + "comment": "General control record options", + "name": "support.type.controlrecord.options.nmtran", + "match": "(?i:\\b((DIAGONAL|BLOCK)\\(\\d+\\)))" }, { - "comment": "SIZES record options", - "name": "support.type.nmtran", + "comment": "General control record options", + "name": "support.type.controlrecord.options.nmtran", + "match": "(?i:\\b(PROTECT|DATA|IGNORE|(NO)?(PRINT|WIDE|REWIND|ABORT|RESCALE|REPEAT|INTERACTION|LAPLACIAN|POSTHOC)|CHECKOUT|OMITTED|RECORDS|LRECL|SUBROUTINES|DERIV2|NUMBERPOINTS|SAME|NPOPETAS|NORMAL|UNIFORM|NEW|SUBPROBLEMS|ONLYSIM(ULATION)?|METH(OD)?|SIG((DIG)?ITS)?|MAXEVAL(S)?|MSFO|SPECIAL|MATRIX|(UN)?CONDITIONAL|(NO|ONE)HEADER|VS|BY|UNIT|FROM|(A)?TOL|(N)?COMP(ARTMENT(S)?)?|NEQUILIBRIUM|NPARAMETERS|LINK|LIKE(LIHOOD)?)\\b)" + }, + { + "comment": "$PROBLEM syntax", + "name": "string.quoted.problem.specification.nmtran", + "match": "(?i:(?<=\\$PROB(LEM)?\\b).*)" + }, + { + "comment": "Specific $SIZES record options", + "name": "support.type.controlrecord.options.sizes.nmtran", "match": "(?i:\\b(LTH|LVR|LVR2|NO|MMX|LNP4|LSUPP|LIM7|LWS3|MAXIDS|LIM1|LIM2|LIM3|LIM4|LIM5|LIM6|LIM8|LIM11|LIM13|LIM15|LIM16|MAXRECID|PC|PCT|PIR|PD|PDT|PAL|MAXFCN|DIMTMP|DIMCNS|DIMNEW|DIMVRB|PL|NPOPMIXMAX|MAXOMEG|MAXPTHETA|MAXITER|ISAMPLEMAX|MAXSIDL|PNM_MAXNODES)\\b)" }, { - "comment": "PRIOR record options", - "name": "support.type.nmtran", + "comment": "Specific $PRIOR record options", + "name": "support.type.controlrecord.options.prior.nmtran", "match": "(?i:\\b(ITYP|NSAM|ISS|PLEV|CNT)|(NTHETA|NETA|NEPS|NTHP|NETP|NEPP|NPEXP)|(IFND|MODE|IVAR)(DISPLAY|ICMAX)\\b)" }, { - "comment": "$ESTIMATION record options", - "name": "support.type.nmtran", - "match": "(?i:\\b(-2LL|ATOL|AUTO|CALPHA|CENTERING|CINTERVAL|CITER|CNSAMP|(UN)?COND(ITIONAL)?|CONSTRAIN|CTYPE|DERCONT|DF(S)?|EONLY|ETA(BARCHECK|DER|SAMPLES|STYPE)|FILE|FNLETA|FORMAT|DELIM|FPARAFILE|GRD|GRDQ|GRID|HYBRID|IACCEPT(L)?|INTER(ACTION)?|IKAPPA|ISAMPEND|ISAMPLE(_M(1(A|B)?|2|3))?|ISCALE_(MAX|MIN)|KAPPA|LAPLACE|LEVWT|LIKE(LIHOOD)?|LNTWOPI|MADAPT|MAPCOV|MAPI(N)?TER|MASSRESET|MAXEVAL(S)?|MCETA|MSFO|MUM|N(BURN|ITER|SAMPLE)?|(NO)?(ABORT|(THETA|OMEGA|SIGMA)BOUNDTEST)|NO(COV|HABORT|LABEL|NINFETA|PRIOR(C)?|SUB|TITLE)|NSIG|SIGDIGITS|NUMDER|NUMERICAL|NUTS_(BASE|DELTA|EPARAM|GAMMA|INIT|MASS|MAXDEPTH|OPARAM|REG|SPARAM|STEPINTER|STEPITER|TERM|TEST|TRANSFORM)|OACCEPT|OLKJDF|OLNTWOPI|OMEGABOUNDTEST|OMITTED|OPTMAP|ORDER|OSAMPLE_(M1|M2)?|OVARF|PACCEPT|PARAFILE|PARAFPRINT|PHITYPE|POSTHOC|PREDICTION|PRINT|PSAMPLE_(M1|M2|M3|MAX|MIN)|RANMETHOD|REPEAT(1|2)?|SADDLE_(HESS|RESET)|SEED|SIGL(O)?|SLKJDF|FAST|SORT|STDOBJ|STIELTJES|SVARF|THIN|TTDF|ZERO)\\b)" + "comment": "Specific $ESTIMATION record options", + "name": "support.type.controlrecord.options.estimation.nmtran", + "match": "(?i:\\b(-2LL|AUTO|CALPHA|CENTERING|CINTERVAL|CITER|CNSAMP|(UN)?COND(ITIONAL)?|CONSTRAIN|CTYPE|DERCONT|DF(S)?|EONLY|ETA(BARCHECK|DER|SAMPLES|STYPE)|FILE|FNLETA|FORMAT|DELIM|FPARAFILE|GRD|GRDQ|GRID|HYBRID|IACCEPT(L)?|INTER(ACTION)?|IKAPPA|ISAMPEND|ISAMPLE(_M(1(A|B)?|2|3))?|ISCALE_(MAX|MIN)|KAPPA|LAPLACE|LEVWT|LIKE(LIHOOD)?|LNTWOPI|MADAPT|MAPCOV|MAPI(N)?TER|MASSRESET|MAXEVAL(S)?|MCETA|MSFO|MUM|N(BURN|ITER|SAMPLE)|(NO)?(ABORT|(THETA|OMEGA|SIGMA)BOUNDTEST)|NO(COV|HABORT|LABEL|NINFETA|PRIOR(C)?|SUB|TITLE)|NSIG|SIGDIGITS|NUMDER|NUMERICAL|NUTS_(BASE|DELTA|EPARAM|GAMMA|INIT|MASS|MAXDEPTH|OPARAM|REG|SPARAM|STEPINTER|STEPITER|TERM|TEST|TRANSFORM)|OACCEPT|OLKJDF|OLNTWOPI|OMEGABOUNDTEST|OPTMAP|ORDER|OSAMPLE_(M1|M2)?|OVARF|PACCEPT|PARAFILE|PARAFPRINT|PHITYPE|POSTHOC|PREDICTION|PRINT|PSAMPLE_(M1|M2|M3|MAX|MIN)|RANMETHOD|REPEAT(1|2)?|SADDLE_(HESS|RESET)|SEED|SIGL(O)?|SLKJDF|FAST|SORT|STDOBJ|STIELTJES|SVARF|THIN|TTDF|ZERO)\\b)" }, { - "comment": "$SIMULATION record options", - "name": "support.type.nmtran", + "comment": "Specific $SIMULATION record options", + "name": "support.type.controlrecord.options.simulation.nmtran", "match": "(?i:\\b(NSUB)\\b)" }, { - "comment": "$COVARIANCE record options", - "name": "support.type.nmtran", - "match": "(?i:\\b(SIR(THBND|SAMPLE|DF|NITER|CENTER|PRINT))|((PRE|PF)?COND(S)?)|(FPOSDEF|RESUME|PRETYPE|COMPRESS)|(IACCEPT(L)?)\\b)" + "comment": "Specific $COVARIANCE record options", + "name": "support.type.controlrecord.options.covariance.nmtran", + "match": "(?i:\\b(SPECIAL|MATRIX|SIR(THBND|SAMPLE|DF|NITER|CENTER))|((PRE|PF)?COND(S)?)|(FPOSDEF|RESUME|PRETYPE|COMPRESS|NOFCOV)|(IACCEPT(L)?)\\b)" }, { - "comment": "$TABLE record options", - "name": "support.type.nmtran", + "comment": "Specific $TABLE record options", + "name": "support.type.controlrecord.options.table.nmtran", "match": "(?i:\\b(NOAPPEND)\\b)" }, { @@ -78,45 +103,125 @@ { "comment": "Control record option arguments", "name": "support.type.nmtran", - "match": "(?i:\\b(INITIALOFF|NOOFF|NODOSE|EQUILIBRIUM|EXCLUDE|DEFOBSERVATION|DEFDOSE|DEFDOS|CENT|CENTRAL|DEFOBS|DEPOT|INITIAL|FINAL|PRIOR|NO|NOCOMMON|FULL|COMPACT|ZERO|HYBRID|SS(1|2|3|4|5|6|7|8|9|10|11|12))\\b)" + "match": "(?i:\\b(INITIALOFF|NOOFF|NODOSE|EQUILIBRIUM|EXCLUDE|DEFOBSERVATION|DEFDOSE|DEFDOS|CENT|CENTRAL|DEFOBS|DEPOT|INITIAL|FINAL|PRIOR|NO|NOCOMMON|FULL|COMPACT|ZERO|HYBRID|SS(1|2|3|4|5|6|7|8|9|10|11|12))?=\\b)" }] }, "parameters": { "patterns": [{ - "name": "variable.parameter.nmtran", - "match": "(?i:(A\\([\\d]+\\)|ALAG[\\d]+|F[\\d]+|THETA\\([\\d]+\\)|ETA\\([\\d]+\\)|DADT\\([\\d]+\\)|EPS\\([\\d]+\\)))" + "name": "variable.parameter.population.nmtran", + "match": "(?i:\\b((THETA|ETA|EPS|ERR)\\([\\d]+\\)))" + }, + { + "name": "variable.parameter.mu.nmtran", + "match": "(?i:\\b(MU_[\\d]))" + }] + }, + "reserved" : { + "patterns": [{ + "name": "storage.type.reserved.nmtran", + "match":"(?i:\\b((A(_0|_U)?\\([\\d]+\\))|(DADT\\([\\d]+\\))|((T|X)+SCALE)))" + }, + { + "name": "variable.global.reserved.nmtran", + "match": "(?i:\\b((CORRL2|MTIME|MNEXT|MPAST)\\([\\d]+\\)))" + }, + { + "name": "variable.global.reserved.nmtran", + "match": "(?i:\\b(CIWRES(I)?|DES_DER|MIXNUM|MIXEST|MTDIFF|MNOW|NPD(E?)|NPDE_MODE|DV_LOQ|DV_LAQ|CDF_L(A)?|T)\\b)" + }, + { + "name": "storage.type.reserved.nmprd4.nmtran", + "match": "(?i:\\b(COM\\([\\d]+\\)|COM(ACT|RES|SAV)?))" + }, + { + "name": "storage.type.reserved.other.nmtran", + "match": "(?i:\\b(ETASXI\\([\\d]+\\)|HINIT|HMIN|HMAX|STOP_TIME|ITASK|PASTZERO))" + }, + { + "name": "storage.type.reserved.nmtran", + "match": "(?i:\\b((ALAG|F|S|D)[\\d]+)\\b)" + }, + { + "comment": "reserved data item labels that may be needed by NONMEM or PREDPP", + "name": "storage.type.reserved.labels.nmtran", + "match": "(?i:\\b(ID|L(1|2)|MDV(I1|I2|I3)?|DV|TIME|DATE|DAT(1|2|3)|DROP|SKIP|EVID|AMT|RATE|SS|II|ADDL(_ACTUAL|_TIME|_TIMEDIFF)?|RAW_|MRG_|RPT_)\\b)" + }, + { + "comment": "semi-reserved labels, have reserved meanings if used in $INPUT, but can be user-defined in abbreviated code, in which case they have no reserved meaning", + "name": "storage.type.reserved.semi.nmtran", + "match": "(?i:\\b(XVID(1|2|3|4|5)|REPL_)\\b)" + }, + { + "comment": "NONMEM_RESERVED_GENERAL", + "name": "storage.type.reserved.nonmem.nmtran", + "match": "(?i:\\b(ITER_REPORT|BAYES_EXTRA_REQUEST|BAYES_EXTRA|RANDMT(U)?)\\b)" + }, + { + "comment": "Record counters (read-only)", + "name": "storage.type.reserved.counter.nmtran", + "match": "(?i:\\b(NDREC|NIREC|FIRSTREC|LASTREC|FIRSTOBS|LASTOBS|FIRSTDOS|LASTDOS|EFIRSTREC|ELASTREC|EFIRSTOBS|ELASTOBS|EFIRSTDOS|ELASTDOS|IRECIDX)\\b)" + }, + { + "comment": "Record counters (read-only)", + "name": "storage.type.nmtran", + "match": "(?i:\\b(INTEGER|REAL)\\b)" + }, + { + "comment": "reserved variables used internally by NMTRAN", + "name": "storage.type.reserved.internal.nmtran", + "match": "(?i:\\b(CALL|CMT|PCMT|CONT|NTHETA|NTHP|NPROB|IPROB|MODE|R|PRED_IGNORE_DATA_TEST|PRED_IGNORE_DATA|VECTR[A-Z]{1,3}|FUNC[A-Z]{1,3}|GETETA|SIMETA|SIMEPS|NWIND|ETEXT|IERPRD|IERPRDU|MSEC|MFIRST|NETEXT|(A|B|C|D|E|F|P|Q)\\d{5}|M(C|E|G|T)\\d{4}|MXSTEP)\\b)" }] }, "operators" : { "patterns": [{ - "comment": "operators", - "name": "keyword.operator.nmtran", - "match": "(?i:\\b((\\s)?(\\+|-{1}|(\\*){1}|/|\\.((N)?EQ|EQN|GE|GT|LE|LT|NE(N)?|OR|AND)\\.)(\\s)?)\\b)" + "comment": "logical operators", + "name": "keyword.operator.logical.nmtran", + "match": "(?i:(\\.((N)?EQ|EQN|GE|GT|LE|LT|NE(N)?|OR|AND)\\.))" }, { - "comment": "assignment operator", - "name": "markup.bold.nmtran", - "match": "=" + "comment": "FORTRAN 95 logical operators", + "name": "keyword.operator.logical.fortran95.nmtran", + "match": "((\\=\\=|\\/\\=|\\>(\\=)?|\\<(\\=)?))" }, { - "comment": "FORTRAN 95 operators", - "name": "keyword.operator.nmtran", - "match": "\\b((\\s)?(\\=\\=|\\/\\=|\\>(\\=)?|\\<(\\=)?)(\\s)?)\\b" + "comment": "exponentiation operator", + "name": "keyword.operator.exponentiation.nmtran", + "match": "(?i:(?<=(\\d|\\)))(E|(\\*\\*)))" + }, + { + "comment": "assignment operator =", + "name": "keyword.operator.assignment.nmtran", + "match": "(?)\\=(?!\\=)" }, { "comment": "invalid operator", - "name": "invalid.nmtran", - "match": "(?i:\\b((\\s)?((\\.NEQN\\.)|(\\=\\/))(\\s)?)\\b)" + "name": "invalid.illegal.nmtran", + "match": "(?i:(\\.NEQN\\.|\\=\\/))" }, { "comment": "Abbreviated code, FORTRAN 77 Code and NON-generic FORTAN 77 CODE", - "name": "keyword.operator.nmtran", - "match": "(?i:\\b(CALL(FL)?|DO|(ELSE)?IF|ELSE|ENDIF|TRUE|FALSE|EXIT|MODE|PASS|RANDOM|RETURN|SIMEPS|SIMETA|SQRT|SUPP|THEN|WHILE|ABS|ACOS|AIMAG|AINT|ALOG|ALOG10|AMAX0|AMAX1|AMIN0|AMIN1|AMOD|AND|ANINT|ASIN|ATAN|ATAN2|BACKSPACE|BLOCK|CABS|CCOS|CHAR|CHARACTER|CLOG|CLOSE|CMPLX|COMMON|COMPLEX|CONJG|CONTINUE|COS|COSH|CSIN|CSQRT|DABS|DACOS|DASIN|DATA(N(2)?)?|DBLE|DCOS|DCOSH|DDIM|DIM|DIMENSION|DINT|DLOG|DMAX1|DMIN1|DMOD|DNINT|DO|DOUBLE|DPROD|DSIGN|DSIN|DSINH|DSQRT|DTAN|DTANH|ELSE|ELSEIF|END|ENDFILE|ENTRY|EQ|EQUIVALENCE|ERR|(C|D)?EXP|EXTERNAL|FALSE|FILE|FLOAT|FORMAT|FUNCTION|GE|GOTO|GT|IABS|ICHAR|IDIM|IDINT|IDNINT|IF|IFIX|IMPLICIT|INDEX|INQUIRE|INTEGER|INTRINSIC|IOSTAT|ISIGN|LE|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|LOGICAL|LT|MAX(0|1)?|MIN(0|1)?|MOD|NE|NINT|NOT|OPEN|OR|PARAMETER|PAUSE|PRECISION|PROGRAM|READ|REAL|REAL|RETURN|REWIND|SAVE|SIGN|SIN|SINH|SNGL|SQRT|STATUS|STOP|SUBROUTINE|TAN(H)?|THEN|TRUE|UNIT|WRITE|BTEST|CDABS|CDCOS|CDEXP|CDLOG|CDSIN|CDSQRT|COTAN|DCMPLX|DCONJG|DCOTAN|DIMAG|DREAL|EOF|ETDAT|GETDAT|GETTIM|HFIX|IAND|IBCHNG|IBCLR|IBSET|IEOR|IMAG|INT|INT1|INT2|INT4|INTC|INTERFACE|IOR|ISHA|ISHC|ISHFT|ISHL|JFIX|LACFAR|LOC|LOCKING|LOCNEAR|NOT|SETTIM)\\b)" + "name": "keyword.other.abbreviatedcode.nmtran", + "match": "(?i:\\b(AIMAG|AINT|ALOG|ALOG10|AMAX0|AMAX1|AMIN0|AMIN1|AMOD|ANINT|BACKSPACE|BLOCK|CHAR|CHARACTER|CMPLX|COMMON|COMPLEX|CONJG|COSH|DATA(N(2)?)?|DBLE|DCOS|DCOSH|DDIM|DIM|DIMENSION|DINT|DMAX1|DMIN1|DMOD|DNINT|DOUBLE|DPROD|DSIGN|ENTRY|EQUIVALENCE|EXTERNAL|FILE|FLOAT|FORMAT|FUNCTION|GOTO|IABS|ICHAR|IDIM|IDINT|IDNINT|IFIX|IMPLICIT|INDEX|INQUIRE|INTRINSIC|IOSTAT|ISIGN|LLE|LLT|LOGICAL|MAX(0|1)?|MIN(0|1)?)\\b)" }, { - "comment": "exponentiation operator", - "name": "keyword.operator.nmtran", - "match": "(?i:(?<=[\\d])(E|(\\*\\*))|(\\&)$)" + "comment": "mainly related to flow control like if, else, do, while, etc.", + "name": "keyword.control.nmtran", + "match": "(?i:\\b(CALL(FL)?|DO(\\s)?WHILE|(ELSE)?IF|THEN|ELSE|END(DO|IF)?|EXIT|MODE|RETURN|PROGRAM|READ|WRITE|REWIND|SAVE|SNGL|STATUS|STOP|CONTINUE|SUBROUTINE|OPEN|CLOSE|FIX(ED)?)\\b)" + }, + { + "comment": "protected functions", + "name": "entity.name.function.protected.nmtran", + "match": "(?i:\\bP(LOG(10?)|SQRT|EXP|DZ|ZR|NP|HE|NG|TAN|A(COS|SIN|TAN))\\b)" + }, + { + "comment": "functions", + "name": "entity.name.function.nmtran", + "match": "(?i:\\b(SQRT|EXP|ABS|A?(COS|SIN|TAN)|ATAN2|SIGN|SIN|SINH|TAN|TANH|COTAN|INT|MOD|MIN|MAXLOG|LOG10|RANDOM|GAMLN|REAL|PASS|SUPP)\\b)" + }, + { + "comment": "arithmetic operators", + "name": "keyword.operator.arithmetic.nmtran", + "match": "[\\*\/\\+\\-]" }] } } From bc4e1c4b92af16cb363067a0c6e43577fa153313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Thu, 5 Sep 2024 00:16:55 +0200 Subject: [PATCH 4/6] Change icon Update nmtran.png --- images/nmtran.png | Bin 0 -> 34872 bytes images/nonmem.png | Bin 70930 -> 0 bytes package.json | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 images/nmtran.png delete mode 100644 images/nonmem.png diff --git a/images/nmtran.png b/images/nmtran.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7471d095d14e9a6d17149210db549624c0fbd5 GIT binary patch literal 34872 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�d<)DImCf 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 UWh4cb1%N*^RrTQ2$_^3#1IWBk_W%F@ diff --git a/package.json b/package.json index 2390c18..f0f4c7f 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "url": "https://www.paypal.me/vrognas" }, "description": "Language extension for NMTRAN (NONMEM) files", - "icon": "images/nonmem.png", + "icon": "images/nmtran.png", "galleryBanner": { "color": "#028777", "theme": "dark" From 543afafc3d778d821a3647fede835aac68d87cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Thu, 5 Sep 2024 12:01:14 +0200 Subject: [PATCH 5/6] Update nmtran.tmLanguage.json --- syntaxes/nmtran.tmLanguage.json | 75 ++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/syntaxes/nmtran.tmLanguage.json b/syntaxes/nmtran.tmLanguage.json index 3a91993..2e369cf 100644 --- a/syntaxes/nmtran.tmLanguage.json +++ b/syntaxes/nmtran.tmLanguage.json @@ -47,63 +47,68 @@ "control-record-syntax": { "patterns": [{ "comment": "subroutines", - "name": "support.type.subroutines.nmtran", + "name": "storage.modifier.subroutines.nmtran", "match": "(?i:\\b(ADVAN(\\=)?[\\d]+|TRANS(\\=)?\\d+)|((TN|NW)PRI))" }, { "comment": "General control record options", - "name": "support.type.controlrecord.options.nmtran", + "name": "storage.modifier.controlrecord.options.nmtran", "match": "(?i:\\b((DIAGONAL|BLOCK)\\(\\d+\\)))" }, { "comment": "General control record options", - "name": "support.type.controlrecord.options.nmtran", - "match": "(?i:\\b(PROTECT|DATA|IGNORE|(NO)?(PRINT|WIDE|REWIND|ABORT|RESCALE|REPEAT|INTERACTION|LAPLACIAN|POSTHOC)|CHECKOUT|OMITTED|RECORDS|LRECL|SUBROUTINES|DERIV2|NUMBERPOINTS|SAME|NPOPETAS|NORMAL|UNIFORM|NEW|SUBPROBLEMS|ONLYSIM(ULATION)?|METH(OD)?|SIG((DIG)?ITS)?|MAXEVAL(S)?|MSFO|SPECIAL|MATRIX|(UN)?CONDITIONAL|(NO|ONE)HEADER|VS|BY|UNIT|FROM|(A)?TOL|(N)?COMP(ARTMENT(S)?)?|NEQUILIBRIUM|NPARAMETERS|LINK|LIKE(LIHOOD)?)\\b)" + "name": "storage.modifier.controlrecord.options.nmtran", + "match": "(?i:\\b(PROTECT|DATA|IGN(ORE)?|(NO)?(PRINT|WIDE|REWIND|ABORT|RESCALE|REPEAT|INTERACTION|LAPLACIAN|POSTHOC)|CHECKOUT|OMITTED|RECORDS|LRECL|SUBROUTINES|DERIV2|NUMBERPOINTS|SAME|NPOPETAS|NORMAL|UNIFORM|NEW|SUBPROBLEMS|ONLYSIM(ULATION)?|METH(OD)?|SIG((DIG)?ITS)?|MAXEVAL(S)?|MSFO|SPECIAL|MATRIX|(UN)?CONDITIONAL|(NO|ONE)HEADER|VS|BY|UNIT|FROM|(A)?TOL|(N)?COMP(ARTMENT(S)?)?|NEQUILIBRIUM|NPARAMETERS|LINK|LIKE(LIHOOD)?)\\b)" }, { "comment": "$PROBLEM syntax", - "name": "string.quoted.problem.specification.nmtran", + "name": "meta.problem.specification.nmtran", "match": "(?i:(?<=\\$PROB(LEM)?\\b).*)" }, { "comment": "Specific $SIZES record options", - "name": "support.type.controlrecord.options.sizes.nmtran", + "name": "storage.modifier.controlrecord.options.sizes.nmtran", "match": "(?i:\\b(LTH|LVR|LVR2|NO|MMX|LNP4|LSUPP|LIM7|LWS3|MAXIDS|LIM1|LIM2|LIM3|LIM4|LIM5|LIM6|LIM8|LIM11|LIM13|LIM15|LIM16|MAXRECID|PC|PCT|PIR|PD|PDT|PAL|MAXFCN|DIMTMP|DIMCNS|DIMNEW|DIMVRB|PL|NPOPMIXMAX|MAXOMEG|MAXPTHETA|MAXITER|ISAMPLEMAX|MAXSIDL|PNM_MAXNODES)\\b)" }, { "comment": "Specific $PRIOR record options", - "name": "support.type.controlrecord.options.prior.nmtran", + "name": "storage.modifier.controlrecord.options.prior.nmtran", "match": "(?i:\\b(ITYP|NSAM|ISS|PLEV|CNT)|(NTHETA|NETA|NEPS|NTHP|NETP|NEPP|NPEXP)|(IFND|MODE|IVAR)(DISPLAY|ICMAX)\\b)" }, + { + "comment": "Specific $DATA record options", + "name": "invalid.drop.data.nmtran", + "match": "(?i:\\b(DROP|SKIP)\\b)" + }, { "comment": "Specific $ESTIMATION record options", - "name": "support.type.controlrecord.options.estimation.nmtran", + "name": "storage.modifier.controlrecord.options.estimation.nmtran", "match": "(?i:\\b(-2LL|AUTO|CALPHA|CENTERING|CINTERVAL|CITER|CNSAMP|(UN)?COND(ITIONAL)?|CONSTRAIN|CTYPE|DERCONT|DF(S)?|EONLY|ETA(BARCHECK|DER|SAMPLES|STYPE)|FILE|FNLETA|FORMAT|DELIM|FPARAFILE|GRD|GRDQ|GRID|HYBRID|IACCEPT(L)?|INTER(ACTION)?|IKAPPA|ISAMPEND|ISAMPLE(_M(1(A|B)?|2|3))?|ISCALE_(MAX|MIN)|KAPPA|LAPLACE|LEVWT|LIKE(LIHOOD)?|LNTWOPI|MADAPT|MAPCOV|MAPI(N)?TER|MASSRESET|MAXEVAL(S)?|MCETA|MSFO|MUM|N(BURN|ITER|SAMPLE)|(NO)?(ABORT|(THETA|OMEGA|SIGMA)BOUNDTEST)|NO(COV|HABORT|LABEL|NINFETA|PRIOR(C)?|SUB|TITLE)|NSIG|SIGDIGITS|NUMDER|NUMERICAL|NUTS_(BASE|DELTA|EPARAM|GAMMA|INIT|MASS|MAXDEPTH|OPARAM|REG|SPARAM|STEPINTER|STEPITER|TERM|TEST|TRANSFORM)|OACCEPT|OLKJDF|OLNTWOPI|OMEGABOUNDTEST|OPTMAP|ORDER|OSAMPLE_(M1|M2)?|OVARF|PACCEPT|PARAFILE|PARAFPRINT|PHITYPE|POSTHOC|PREDICTION|PRINT|PSAMPLE_(M1|M2|M3|MAX|MIN)|RANMETHOD|REPEAT(1|2)?|SADDLE_(HESS|RESET)|SEED|SIGL(O)?|SLKJDF|FAST|SORT|STDOBJ|STIELTJES|SVARF|THIN|TTDF|ZERO)\\b)" }, { "comment": "Specific $SIMULATION record options", - "name": "support.type.controlrecord.options.simulation.nmtran", + "name": "storage.modifier.controlrecord.options.simulation.nmtran", "match": "(?i:\\b(NSUB)\\b)" }, { "comment": "Specific $COVARIANCE record options", - "name": "support.type.controlrecord.options.covariance.nmtran", + "name": "storage.modifier.controlrecord.options.covariance.nmtran", "match": "(?i:\\b(SPECIAL|MATRIX|SIR(THBND|SAMPLE|DF|NITER|CENTER))|((PRE|PF)?COND(S)?)|(FPOSDEF|RESUME|PRETYPE|COMPRESS|NOFCOV)|(IACCEPT(L)?)\\b)" }, { "comment": "Specific $TABLE record options", - "name": "support.type.controlrecord.options.table.nmtran", + "name": "storage.modifier.controlrecord.options.table.nmtran", "match": "(?i:\\b(NOAPPEND)\\b)" }, { "comment": "OPTIONS, RED", - "name": "support.type.nmtran", + "name": "storage.modifier.nmtran", "match": "(?i:\\b(OMITTED|CHOLROFF|KNUTHSUMOFF)\\b|ETAS)" }, { "comment": "Control record option arguments", - "name": "support.type.nmtran", - "match": "(?i:\\b(INITIALOFF|NOOFF|NODOSE|EQUILIBRIUM|EXCLUDE|DEFOBSERVATION|DEFDOSE|DEFDOS|CENT|CENTRAL|DEFOBS|DEPOT|INITIAL|FINAL|PRIOR|NO|NOCOMMON|FULL|COMPACT|ZERO|HYBRID|SS(1|2|3|4|5|6|7|8|9|10|11|12))?=\\b)" + "name": "storage.modifier.nmtran", + "match": "(?i:\\b((INITIALOFF|NOOFF|NODOSE|EQUILIBRIUM|EXCLUDE|DEFOBSERVATION|DEFDOSE|DEFDOS|CENT|CENTRAL|DEFOBS|DEPOT|INITIAL|FINAL|PRIOR|NO|NOCOMMON|FULL|COMPACT|ZERO|HYBRID)\\b)|SS(1|2|3|4|5|6|7|8|9|10|11|12))" }] }, "parameters": { @@ -113,62 +118,62 @@ }, { "name": "variable.parameter.mu.nmtran", - "match": "(?i:\\b(MU_[\\d]))" + "match": "(?i:\\b(MU_[\\d]+))" }] }, "reserved" : { "patterns": [{ - "name": "storage.type.reserved.nmtran", + "name": "support.variable.reserved.nmtran", "match":"(?i:\\b((A(_0|_U)?\\([\\d]+\\))|(DADT\\([\\d]+\\))|((T|X)+SCALE)))" }, { - "name": "variable.global.reserved.nmtran", + "name": "support.variable.global.reserved.nmtran", "match": "(?i:\\b((CORRL2|MTIME|MNEXT|MPAST)\\([\\d]+\\)))" }, { - "name": "variable.global.reserved.nmtran", + "name": "support.variable.global.reserved.nmtran", "match": "(?i:\\b(CIWRES(I)?|DES_DER|MIXNUM|MIXEST|MTDIFF|MNOW|NPD(E?)|NPDE_MODE|DV_LOQ|DV_LAQ|CDF_L(A)?|T)\\b)" }, { - "name": "storage.type.reserved.nmprd4.nmtran", + "name": "support.variable.reserved.nmprd4.nmtran", "match": "(?i:\\b(COM\\([\\d]+\\)|COM(ACT|RES|SAV)?))" }, { - "name": "storage.type.reserved.other.nmtran", + "name": "support.variable.reserved.other.nmtran", "match": "(?i:\\b(ETASXI\\([\\d]+\\)|HINIT|HMIN|HMAX|STOP_TIME|ITASK|PASTZERO))" }, { - "name": "storage.type.reserved.nmtran", + "name": "support.variable.reserved.nmtran", "match": "(?i:\\b((ALAG|F|S|D)[\\d]+)\\b)" }, { "comment": "reserved data item labels that may be needed by NONMEM or PREDPP", - "name": "storage.type.reserved.labels.nmtran", - "match": "(?i:\\b(ID|L(1|2)|MDV(I1|I2|I3)?|DV|TIME|DATE|DAT(1|2|3)|DROP|SKIP|EVID|AMT|RATE|SS|II|ADDL(_ACTUAL|_TIME|_TIMEDIFF)?|RAW_|MRG_|RPT_)\\b)" + "name": "support.variable.reserved.labels.nmtran", + "match": "(?i:\\b(ID|L(1|2)|MDV(I1|I2|I3)?|DV|TIME|DATE|DAT(1|2|3)|EVID|AMT|RATE|SS|II|ADDL(_ACTUAL|_TIME|_TIMEDIFF)?|RAW_|MRG_|RPT_)\\b)" }, { "comment": "semi-reserved labels, have reserved meanings if used in $INPUT, but can be user-defined in abbreviated code, in which case they have no reserved meaning", - "name": "storage.type.reserved.semi.nmtran", + "name": "support.variable.reserved.semi.nmtran", "match": "(?i:\\b(XVID(1|2|3|4|5)|REPL_)\\b)" }, { "comment": "NONMEM_RESERVED_GENERAL", - "name": "storage.type.reserved.nonmem.nmtran", + "name": "support.variable.reserved.nonmem.nmtran", "match": "(?i:\\b(ITER_REPORT|BAYES_EXTRA_REQUEST|BAYES_EXTRA|RANDMT(U)?)\\b)" }, { "comment": "Record counters (read-only)", - "name": "storage.type.reserved.counter.nmtran", + "name": "support.variable.reserved.counter.nmtran", "match": "(?i:\\b(NDREC|NIREC|FIRSTREC|LASTREC|FIRSTOBS|LASTOBS|FIRSTDOS|LASTDOS|EFIRSTREC|ELASTREC|EFIRSTOBS|ELASTOBS|EFIRSTDOS|ELASTDOS|IRECIDX)\\b)" }, { "comment": "Record counters (read-only)", - "name": "storage.type.nmtran", + "name": "support.variable.nmtran", "match": "(?i:\\b(INTEGER|REAL)\\b)" }, { "comment": "reserved variables used internally by NMTRAN", - "name": "storage.type.reserved.internal.nmtran", + "name": "support.variable.reserved.internal.nmtran", "match": "(?i:\\b(CALL|CMT|PCMT|CONT|NTHETA|NTHP|NPROB|IPROB|MODE|R|PRED_IGNORE_DATA_TEST|PRED_IGNORE_DATA|VECTR[A-Z]{1,3}|FUNC[A-Z]{1,3}|GETETA|SIMETA|SIMEPS|NWIND|ETEXT|IERPRD|IERPRDU|MSEC|MFIRST|NETEXT|(A|B|C|D|E|F|P|Q)\\d{5}|M(C|E|G|T)\\d{4}|MXSTEP)\\b)" }] }, @@ -188,24 +193,24 @@ "name": "keyword.operator.exponentiation.nmtran", "match": "(?i:(?<=(\\d|\\)))(E|(\\*\\*)))" }, + { + "comment": "invalid operator", + "name": "invalid.illegal.nmtran", + "match": "(?i:(\\.NEQN\\.))|\\=\\/" + }, { "comment": "assignment operator =", "name": "keyword.operator.assignment.nmtran", "match": "(?)\\=(?!\\=)" }, - { - "comment": "invalid operator", - "name": "invalid.illegal.nmtran", - "match": "(?i:(\\.NEQN\\.|\\=\\/))" - }, { "comment": "Abbreviated code, FORTRAN 77 Code and NON-generic FORTAN 77 CODE", - "name": "keyword.other.abbreviatedcode.nmtran", + "name": "entity.other.abbreviatedcode.nmtran", "match": "(?i:\\b(AIMAG|AINT|ALOG|ALOG10|AMAX0|AMAX1|AMIN0|AMIN1|AMOD|ANINT|BACKSPACE|BLOCK|CHAR|CHARACTER|CMPLX|COMMON|COMPLEX|CONJG|COSH|DATA(N(2)?)?|DBLE|DCOS|DCOSH|DDIM|DIM|DIMENSION|DINT|DMAX1|DMIN1|DMOD|DNINT|DOUBLE|DPROD|DSIGN|ENTRY|EQUIVALENCE|EXTERNAL|FILE|FLOAT|FORMAT|FUNCTION|GOTO|IABS|ICHAR|IDIM|IDINT|IDNINT|IFIX|IMPLICIT|INDEX|INQUIRE|INTRINSIC|IOSTAT|ISIGN|LLE|LLT|LOGICAL|MAX(0|1)?|MIN(0|1)?)\\b)" }, { "comment": "mainly related to flow control like if, else, do, while, etc.", - "name": "keyword.control.nmtran", + "name": "string.interpolated.control.nmtran", "match": "(?i:\\b(CALL(FL)?|DO(\\s)?WHILE|(ELSE)?IF|THEN|ELSE|END(DO|IF)?|EXIT|MODE|RETURN|PROGRAM|READ|WRITE|REWIND|SAVE|SNGL|STATUS|STOP|CONTINUE|SUBROUTINE|OPEN|CLOSE|FIX(ED)?)\\b)" }, { From 753efe9321f8ab830578ea65a413d7fc71a183b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Rogn=C3=A5s?= Date: Thu, 5 Sep 2024 12:17:49 +0200 Subject: [PATCH 6/6] Update nmtran.tmLanguage.json --- syntaxes/nmtran.tmLanguage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntaxes/nmtran.tmLanguage.json b/syntaxes/nmtran.tmLanguage.json index 2e369cf..d7652c3 100644 --- a/syntaxes/nmtran.tmLanguage.json +++ b/syntaxes/nmtran.tmLanguage.json @@ -73,7 +73,7 @@ { "comment": "Specific $PRIOR record options", "name": "storage.modifier.controlrecord.options.prior.nmtran", - "match": "(?i:\\b(ITYP|NSAM|ISS|PLEV|CNT)|(NTHETA|NETA|NEPS|NTHP|NETP|NEPP|NPEXP)|(IFND|MODE|IVAR)(DISPLAY|ICMAX)\\b)" + "match": "(?i:\\b(ITYP|NSAM|ISS|PLEV|CNT|NTHETA|NETA|NEPS|NTHP|NETP|NEPP|NPEXP|IFND|MODE|IVAR|DISPLAY|ICMAX)\\b)" }, { "comment": "Specific $DATA record options",