aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/LexBB.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/LexBB.cxx')
-rw-r--r--src/LexBB.cxx178
1 files changed, 0 insertions, 178 deletions
diff --git a/src/LexBB.cxx b/src/LexBB.cxx
deleted file mode 100644
index ed1aebd34..000000000
--- a/src/LexBB.cxx
+++ /dev/null
@@ -1,178 +0,0 @@
-// Scintilla source code edit control
-/** @file LexBB.cxx
- ** Lexer for BlitzBasic.
- **/
-// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
-// The License.txt file describes the conditions under which this software may be distributed.
-
-// Currently, this only supports the old (2D only) BlitzBasic. But I believe relatively
-// few changes would be needed to support the newer versions (Blitz3D, BlitzPlus,
-// BlitzMax, ...) - but I don't have them. Mail me (elias <at> users <dot> sf <dot> net)
-// for any bugs.
-
-// Folding works for Function/End Function and Type/End Type only.
-
-// The generated styles are:
-// val SCE_BB_DEFAULT=0
-// val SCE_BB_COMMENT=1
-// val SCE_BB_NUMBER=2
-// val SCE_BB_STRING=3
-// val SCE_BB_OPERATOR=4
-// val SCE_BB_IDENTIFIER=5
-// val SCE_BB_KEYWORD=6
-// val SCE_BB_KEYWORD2=7
-// val SCE_BB_KEYWORD3=8
-// val SCE_BB_KEYWORD4=9
-// val SCE_BB_ERROR=10
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-static bool IsOperator(int c) {
- return isoperator(static_cast<char>(c)) || c == '#' || c == '$' || c == '\\';
-}
-
-static bool IsIdentifier(int c) {
- return isalnum(c) || c == '_' || c == '.';
-}
-
-static bool IsDigit(int c) {
- return isdigit(c) || c == '.';
-}
-
-static void ColouriseBBDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
- styler.StartAt(startPos);
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- // Can't use sc.More() here else we miss the last character
- for (; ; sc.Forward()) {
- if (sc.state == SCE_BB_IDENTIFIER) {
- if (!IsIdentifier(sc.ch)) {
- char s[100];
- sc.GetCurrentLowered(s, sizeof(s));
- for (int i = 0; i < 4; i++)
- {
- if (keywordlists[i]->InList(s)) {
- sc.ChangeState(SCE_BB_KEYWORD + i);
- sc.SetState(SCE_BB_IDENTIFIER);
- }
- }
- sc.SetState(SCE_BB_DEFAULT);
- }
- } else if (sc.state == SCE_BB_OPERATOR) {
- if (!IsOperator(sc.ch))
- sc.SetState(SCE_BB_DEFAULT);
- } else if (sc.state == SCE_BB_NUMBER) {
- if (!IsDigit(sc.ch)) {
- sc.SetState(SCE_BB_DEFAULT);
- }
- } else if (sc.state == SCE_BB_STRING) {
- if (sc.ch == '"') {
- sc.ForwardSetState(SCE_BB_DEFAULT);
- }
- if (sc.atLineEnd) {
- sc.ChangeState(SCE_BB_ERROR);
- sc.SetState(SCE_BB_DEFAULT);
- }
- } else if (sc.state == SCE_BB_COMMENT) {
- if (sc.atLineEnd) {
- sc.SetState(SCE_BB_DEFAULT);
- }
- }
-
- if (sc.state == SCE_BB_DEFAULT || sc.state == SCE_BB_ERROR) {
- if (sc.Match(';')) {
- sc.SetState(SCE_BB_COMMENT);
- } else if (sc.Match('"')) {
- sc.SetState(SCE_BB_STRING);
- } else if (IsDigit(sc.ch)) {
- sc.SetState(SCE_BB_NUMBER);
- } else if (IsOperator(sc.ch)) {
- sc.SetState(SCE_BB_OPERATOR);
- } else if (isalnum(sc.ch) || sc.Match('_')) {
- sc.SetState(SCE_BB_IDENTIFIER);
- } else if (!isspace(sc.ch)) {
- sc.SetState(SCE_BB_ERROR);
- }
- }
- if (!sc.More())
- break;
- }
- sc.Complete();
-}
-
-static void FoldBBDoc(unsigned int startPos, int length, int,
- WordList *[], Accessor &styler) {
- int line = styler.GetLine(startPos);
- int level = styler.LevelAt(line);
- int go = 0;
- int endPos = startPos + length;
- char word[256];
- int wordlen = 0;
- int i;
- for (i = startPos; i < endPos; i++) {
- int c = styler.SafeGetCharAt(i);
- if (wordlen) {
- word[wordlen] = static_cast<char>(tolower(c));
- if (isspace(c)) {
- word[wordlen] = '\0';
- if (!strcmp(word, "function") ||
- !strcmp(word, "type")) {
- level |= SC_FOLDLEVELHEADERFLAG;
- go = 1;
- }
- if (!strcmp(word, "end function") ||
- !strcmp(word, "end type")) {
- go = -1;
- }
- // Treat any whitespace as single blank.
- if (!isspace (word[wordlen - 1])) {
- word[wordlen] = ' ';
- wordlen++;
- }
- } else {
- wordlen++;
- }
- } else {
- if (!isspace(c))
- word[wordlen++] = static_cast<char>(tolower(c));
- }
- if (c == '\n') {
- if (wordlen == 0)
- level |= SC_FOLDLEVELWHITEFLAG;
- if (level != styler.LevelAt(line))
- styler.SetLevel(line, level);
- wordlen = 0;
- level &= ~SC_FOLDLEVELHEADERFLAG;
- level &= ~SC_FOLDLEVELWHITEFLAG;
- level += go;
- go = 0;
- line++;
- }
- }
-}
-
-static const char * const bbWordListDesc[] = {
- "Blitzbasic Keywords",
- "user1",
- "user2",
- "user3",
- 0
-};
-
-LexerModule lmBB(SCLEX_BB, ColouriseBBDoc, "bb", FoldBBDoc, bbWordListDesc);
-