diff --git a/lexers/embedded/natural.xml b/lexers/embedded/natural.xml new file mode 100644 index 000000000..707252b4c --- /dev/null +++ b/lexers/embedded/natural.xml @@ -0,0 +1,143 @@ + + + Natural + natural + *.NSN + *.NSP + *.NSS + *.NSH + *.NSG + *.NSL + *.NSA + *.NSM + *.NSC + *.NS7 + text/x-natural + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lexers/testdata/natural.actual b/lexers/testdata/natural.actual new file mode 100644 index 000000000..4f44d6cfd --- /dev/null +++ b/lexers/testdata/natural.actual @@ -0,0 +1,23 @@ +* Comment +DEFINE DATA /* Inline comment +LOCAL +1 #VAR-NAME-1 (A10) INIT<'Hello'> +1 #I (I4) +END-DEFINE + +IF #VAR-NAME-1 = 'Hello' +IGNORE +END-IF + +PERFORM MY-SUBROUTINE + +WRITE #VAR-NAME-1 + +DEFINE SUBROUTINE MY-SUBROUTINE +FOR #I = 1 TO 10 +ESCAPE MODULE +END-FOR +END-SUBROUTINE + +END + diff --git a/lexers/testdata/natural.expected b/lexers/testdata/natural.expected new file mode 100644 index 000000000..7f1bc807d --- /dev/null +++ b/lexers/testdata/natural.expected @@ -0,0 +1,85 @@ +[ + {"type":"CommentSingle","value":"* Comment"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"DEFINE"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"DATA"}, + {"type":"Text","value":" "}, + {"type":"CommentSingle","value":"/* Inline comment"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"LOCAL"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"#VAR-NAME-1"}, + {"type":"Text","value":" "}, + {"type":"Other","value":"(A10)"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"INIT"}, + {"type":"Operator","value":"<"}, + {"type":"LiteralStringSingle","value":"'Hello'"}, + {"type":"Operator","value":">"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"#I"}, + {"type":"Text","value":" "}, + {"type":"Other","value":"(I4)"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"END-DEFINE"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"IF"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"#VAR-NAME-1"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralStringSingle","value":"'Hello'"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"IGNORE"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"END-IF"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"PERFORM"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"MY-SUBROUTINE"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"WRITE"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"#VAR-NAME-1"}, + {"type":"Text","value":"\n\n"}, + + {"type":"Keyword","value":"DEFINE"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"SUBROUTINE"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"MY-SUBROUTINE"}, + {"type":"Text","value":"\n"}, + + {"type":"Keyword","value":"FOR"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"#I"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"TO"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"10"}, + {"type":"Text","value":"\n"}, + + {"type":"Keyword","value":"ESCAPE"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"MODULE"}, + {"type":"Text","value":"\n"}, + + {"type":"Keyword","value":"END-FOR"}, + {"type":"Text","value":"\n"}, + + {"type":"Keyword","value":"END-SUBROUTINE"}, + + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"END"}, + {"type":"Text","value":"\n\n"} +]