aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexers/LexVisualProlog.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'lexers/LexVisualProlog.cxx')
-rw-r--r--lexers/LexVisualProlog.cxx15
1 files changed, 10 insertions, 5 deletions
diff --git a/lexers/LexVisualProlog.cxx b/lexers/LexVisualProlog.cxx
index d05413d7b..79b5f5d07 100644
--- a/lexers/LexVisualProlog.cxx
+++ b/lexers/LexVisualProlog.cxx
@@ -162,6 +162,11 @@ static bool isAlphaNum(int ch){
return (ccLu == cc || ccLl == cc || ccLt == cc || ccLm == cc || ccLo == cc || ccNd == cc || ccNl == cc || ccNo == cc);
}
+static bool isStringVerbatimOpenClose(int ch){
+ CharacterCategory cc = CategoriseCharacter(ch);
+ return (ccPc <= cc && cc <= ccSo);
+}
+
static bool isIdChar(int ch){
return ('_') == ch || isAlphaNum(ch);
}
@@ -198,11 +203,11 @@ static bool isOpenStringVerbatim(int next, int &closingQuote){
case L';':
return false;
default:
- if (isAlphaNum(next)) {
- return false;
- } else {
+ if (isStringVerbatimOpenClose(next)) {
closingQuote = next;
return true;
+ } else {
+ return false;
}
}
}
@@ -247,7 +252,7 @@ static void forwardEscapeLiteral(StyleContext &sc, int EscapeState) {
void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {
LexAccessor styler(pAccess);
CharacterSet setDoxygen(CharacterSet::setAlpha, "");
- CharacterSet setNumber(CharacterSet::setNone, "+-.0123456789abcdefABCDEFxoXO");
+ CharacterSet setNumber(CharacterSet::setNone, "0123456789abcdefABCDEFxoXO");
StyleContext sc(startPos, length, initStyle, styler, 0x7f);
@@ -273,7 +278,7 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
break;
case SCE_VISUALPROLOG_NUMBER:
// We accept almost anything because of hex. and number suffixes
- if (!(setNumber.Contains(sc.ch))) {
+ if (!(setNumber.Contains(sc.ch)) || (sc.Match('.') && IsADigit(sc.chNext))) {
sc.SetState(SCE_VISUALPROLOG_DEFAULT);
}
break;