diff --git a/lexers/embedded/objectpascal.xml b/lexers/embedded/objectpascal.xml
index 82c1483..aac82f9 100644
--- a/lexers/embedded/objectpascal.xml
+++ b/lexers/embedded/objectpascal.xml
@@ -28,7 +28,7 @@
-
+
@@ -51,10 +51,10 @@
-
+
-
+
@@ -84,6 +84,10 @@
+
+
+
+
diff --git a/lexers/testdata/objectpascal.actual b/lexers/testdata/objectpascal.actual
index f9eb702..cb49e25 100644
--- a/lexers/testdata/objectpascal.actual
+++ b/lexers/testdata/objectpascal.actual
@@ -64,13 +64,38 @@ const
and now '''
some more text
''';
-
+
const
cMultiLineString2 = '''''
some text
and now '''
some more text
''''';
+
+var
+ fp1: real := 6.123e-22;
+ fp2: real := 612.3e-24;
+ fp3: real := 61.23e-23;
+ fp4: real := 1.1e-8;
+ Epsilon: Single = 1E-40;
+
+{$NODEFINE string 'UnicodeString' } {$OBJTYPENAME string 'NUnicodeString'} { defined in ustring.h }
+{-NODEFINE string 'String' } {$OBJTYPENAME string 'NUnicodeString'} { defined in ustring.h }
+{-EXTERNALSYM ShortInt 'signed char' } {-OBJTYPENAME ShortInt 'Bzc'}
+
+const
+ CLineBreak = {$IFDEF POSIX} _AnsiStr(#10) {$ENDIF}
+ {$IFDEF MSWINDOWS} _AnsiStr(#13#10) {$ENDIF};
+
+ IntegerArray = array[0..$effffff] of Integer;
+ PIntegerArray = ^IntegerArray;
+
+ PointerArray = array [0..512*1024*1024 - 2] of Pointer;
+ PPointerArray = ^PointerArray;
+
+ TPCharArray = packed array[0..(High(Integer) div SizeOf(PChar))-1] of PChar;
+ PPCharArray = ^TPCharArray;
+
var
LNativeInt: NativeInt;
LNativeUInt: NativeUInt;
diff --git a/lexers/testdata/objectpascal.expected b/lexers/testdata/objectpascal.expected
index 0f5a31b..189e79a 100644
--- a/lexers/testdata/objectpascal.expected
+++ b/lexers/testdata/objectpascal.expected
@@ -325,9 +325,7 @@
{"type":"TextWhitespace","value":" "},
{"type":"LiteralString","value":"'''\n some text\n and now '''\n some more text\n '''"},
{"type":"Punctuation","value":";"},
- {"type":"Text","value":"\n"},
- {"type":"TextWhitespace","value":" "},
- {"type":"Text","value":"\n"},
+ {"type":"Text","value":"\n\n"},
{"type":"KeywordReserved","value":"const"},
{"type":"Text","value":"\n"},
{"type":"TextWhitespace","value":" "},
@@ -337,7 +335,207 @@
{"type":"TextWhitespace","value":" "},
{"type":"LiteralString","value":"'''''\n some text\n and now '''\n some more text\n '''''"},
{"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"KeywordReserved","value":"var"},
{"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"fp1"},
+ {"type":"Operator","value":":"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"real"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":":="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberFloat","value":"6.123e-22"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"fp2"},
+ {"type":"Operator","value":":"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"real"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":":="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberFloat","value":"612.3e-24"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"fp3"},
+ {"type":"Operator","value":":"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"real"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":":="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberFloat","value":"61.23e-23"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"fp4"},
+ {"type":"Operator","value":":"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"real"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":":="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberFloat","value":"1.1e-8"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"Epsilon"},
+ {"type":"Operator","value":":"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"Single"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberFloat","value":"1E-40"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"CommentPreproc","value":"{$NODEFINE string 'UnicodeString' }"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$OBJTYPENAME string 'NUnicodeString'}"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentMultiline","value":"{ defined in ustring.h }"},
+ {"type":"Text","value":"\n"},
+ {"type":"CommentPreproc","value":"{-NODEFINE string 'String' }"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$OBJTYPENAME string 'NUnicodeString'}"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentMultiline","value":"{ defined in ustring.h }"},
+ {"type":"Text","value":"\n"},
+ {"type":"CommentPreproc","value":"{-EXTERNALSYM ShortInt 'signed char' }"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{-OBJTYPENAME ShortInt 'Bzc'}"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"KeywordReserved","value":"const"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"CLineBreak"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$IFDEF POSIX}"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"_AnsiStr"},
+ {"type":"Operator","value":"("},
+ {"type":"LiteralNumberHex","value":"#10"},
+ {"type":"Operator","value":")"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$ENDIF}"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$IFDEF MSWINDOWS}"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"_AnsiStr"},
+ {"type":"Operator","value":"("},
+ {"type":"LiteralNumberHex","value":"#13#10"},
+ {"type":"Operator","value":")"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"CommentPreproc","value":"{$ENDIF}"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"IntegerArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"array"},
+ {"type":"Punctuation","value":"["},
+ {"type":"LiteralNumberInteger","value":"0"},
+ {"type":"Operator","value":".."},
+ {"type":"LiteralNumberHex","value":"$effffff"},
+ {"type":"Punctuation","value":"]"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"of"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"Integer"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"PIntegerArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"^"},
+ {"type":"Text","value":"IntegerArray"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"PointerArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"array"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Punctuation","value":"["},
+ {"type":"LiteralNumberInteger","value":"0"},
+ {"type":"Operator","value":".."},
+ {"type":"LiteralNumberInteger","value":"512"},
+ {"type":"Operator","value":"*"},
+ {"type":"LiteralNumberInteger","value":"1024"},
+ {"type":"Operator","value":"*"},
+ {"type":"LiteralNumberInteger","value":"1024"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"-"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberInteger","value":"2"},
+ {"type":"Punctuation","value":"]"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"of"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"Pointer"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"PPointerArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"^"},
+ {"type":"Text","value":"PointerArray"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"TPCharArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"packed"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"array"},
+ {"type":"Punctuation","value":"["},
+ {"type":"LiteralNumberInteger","value":"0"},
+ {"type":"Operator","value":"..("},
+ {"type":"Text","value":"High"},
+ {"type":"Operator","value":"("},
+ {"type":"KeywordType","value":"Integer"},
+ {"type":"Operator","value":")"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"div"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"SizeOf"},
+ {"type":"Operator","value":"("},
+ {"type":"KeywordType","value":"PChar"},
+ {"type":"Operator","value":"))-"},
+ {"type":"LiteralNumberInteger","value":"1"},
+ {"type":"Punctuation","value":"]"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordReserved","value":"of"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"KeywordType","value":"PChar"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Text","value":"PPCharArray"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"^"},
+ {"type":"Text","value":"TPCharArray"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n\n"},
{"type":"KeywordReserved","value":"var"},
{"type":"Text","value":"\n"},
{"type":"TextWhitespace","value":" "},
@@ -1526,8 +1724,8 @@
{"type":"Operator","value":"\u003e"},
{"type":"TextWhitespace","value":" "},
{"type":"Text","value":"Ord"},
- {"type":"Operator","value":"(#"},
- {"type":"LiteralNumberInteger","value":"10"},
+ {"type":"Operator","value":"("},
+ {"type":"LiteralNumberHex","value":"#10"},
{"type":"Operator","value":")"},
{"type":"Punctuation","value":"."},
{"type":"Text","value":"ToExtended"},