diff options
author | Tim Hatch <tim@timhatch.com> | 2016-06-01 00:25:17 -0700 |
---|---|---|
committer | Tim Hatch <tim@timhatch.com> | 2016-06-01 00:25:17 -0700 |
commit | df5dbfe0e3723440990d6c6ab0706f7a3773fdc9 (patch) | |
tree | db259939e206337f1a4ac4510bac0cc778524c7c | |
parent | 8c21d78f7779d1065b6462605d11f06672e0f5cb (diff) | |
download | pygments-df5dbfe0e3723440990d6c6ab0706f7a3773fdc9.tar.gz |
Import new version, minor fixes.
Source: https://sourceforge.net/p/amforth/code/HEAD/tree/trunk/doc/tools/forth.py
-rw-r--r-- | pygments/lexers/forth.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/pygments/lexers/forth.py b/pygments/lexers/forth.py index b68ee9e1..eb806ba0 100644 --- a/pygments/lexers/forth.py +++ b/pygments/lexers/forth.py @@ -46,7 +46,7 @@ class ForthLexer(RegexLexer): (r'(:|variable|constant|value|buffer:)(\s+)', bygroups(Keyword.Namespace, Text), 'worddef'), # strings are rather simple - (r'([\.sc]")(\s+?)', bygroups(String, Text), 'stringdef'), + (r'([.sc]")(\s+?)', bygroups(String, Text), 'stringdef'), # keywords from the various wordsets # *** Wordset BLOCK (r'(blk|block|buffer|evaluate|flush|load|save-buffers|update|' @@ -141,22 +141,37 @@ class ForthLexer(RegexLexer): r'forget|' # Forth 2012 r'defer|defer@|defer!|action-of|begin-structure|field:|buffer:|' + r'parse-name|buffer:|traverse-wordlist|n>r|nr>|2value|fvalue|' + r'name>interpret|name>compile|name>string|' r'cfield:|end-structure)'+delimiter, Keyword), # Numbers - (r'(\$[0-9A-Fa-f]+)', Number.Hex), + (r'(\$[0-9A-F]+)', Number.Hex), (r'(\#|%|&|\-|\+)?[0-9]+', Number.Integer), + (r'(\#|%|&|\-|\+)?[0-9.]+', Keyword.Type), # amforth specific (r'(@i|!i|@e|!e|pause|noop|turnkey|sleep|' - r'itype|icompare|sp@|sp!|rp@|rp!|up@|up!)' + delimiter, - Keyword.Type), + r'itype|icompare|sp@|sp!|rp@|rp!|up@|up!|' + r'>a|a>|a@|a!|a@+|a@-|>b|b>|b@|b!|b@+|b@-|' + r'find-name|1ms|' + r'sp0|rp0|\(evaluate\)|int-trap|int!)' + delimiter, + Name.Constant), + # a proposal + (r'(do-recognizer|r:fail|recognizer:|get-recognizers|' + r'set-recognizers|r:float|r>comp|r>int|r>post|' + r'r:name|r:word|r:dnum|r:num|recognizer|forth-recognizer|' + r'rec:num|rec:float|rec:word)' + delimiter, Name.Decorator), + # defining words. The next word is a new command name + (r'(Evalue|Rvalue|Uvalue|Edefer|Rdefer|Udefer)(\s+)', + bygroups(Keyword.Namespace, Text), 'worddef'), + (valid_name, Name.Function), # Anything else is executed ], 'worddef': [ - (r'[\S]*', Name.Class, '#pop') + (r'\S+', Name.Class, '#pop'), ], 'stringdef': [ - (r'[^"]*', String, '#pop') + (r'[^"]+', String, '#pop'), ], } |