Code snippet #12
Added: 11. huhtikuuta 2011 kello 2.01
Owner: Pettis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | # -*- coding: utf-8 -*-
"""
Pygments lexer for CoolBasic programming language
2010-04-11 First functional version
Juha Petäjäjärvi
"""
__author__ = "Juha Petäjäjärvi"
__copyright__ = "Copyright 2010, Juha Petäjäjärvi"
__credits__ = ["Jukka Lavonen", ]
__version__ = "1.0"
__maintainer__ = "Juha Petäjäjärvi"
__email__ = "juha.petajajarvi@gmail.com"
__status__ = "Production"
from pygments.lexer import RegexLexer, bygroups, include
from pygments.token import *
class CoolBasicLexer(RegexLexer):
name = 'CoolBasic'
filenames = ['*.cb']
tokens = {
'root': [
include('basic'),
(r'\(', Punctuation, 'paren'),
(r'(?i)REMSTART', Comment.Multiline, 'comment'),
include('string'),
include('number'),
],
'basic': [
# Single line comments
(r"(\'|//).{0,}\n", Comment.Singleline),
# Operators
(r'(\+|-|\\|\*|=|/)', Name.Operator),
(r'(?i)\b(Mod|Shl|Shr|Sar|And|Or|Xor|Not)\s*\b', Name.Operator),
# Keywords
(r'(?i)\b(As|Case|Data|Each|Else|ElseIf|End|EndFunction|EndIf|EndSelect|EndType|EndSearch|Exit|'
r'Field|For|Forever|Function|Gosub|Goto|If|New|Next|Read|Repeat|Restore|Return|Select|Step|'
r'Then|To|Type|Until|Wend|While)\s*\b', Keyword),
# Constants
(r'(?i)\b(NULL|OFF|ON)\s*\b', Keyword.Constant),
# Key constants
(r'(?i)\bcbkey[a-z0-1]\s*\b', Keyword.Constant),
(r'(?i)\bcbkeyf([0-9]|10|11|12)\s*\b', Keyword.Constant),
(r'(?i)\bcbkeynum[0-9]\s*\b', Keyword.Constant),
(r'(?i)\bcbkey(esc|print|scroll|pause|oem102|minus|equals|backspace|insert|home|pgup|numlock|divide|multiply|subtract|tab|\]|\[|return|'
r'del|end|pgdown|capslock|semicolon|apostrophe|grave|lshift|backslash|comma|period|slash|shift|enter|lcontrol|lwin|lalt|space|ralt|rwin|'
r'apps|rcontrol|decimal|up|down|left|right)\s*\b', Keyword.Constant),
# Color constants
(r'(?i)\bcb(Red|Orange|Yellow|Green|Blue|Purple|LightRed|Pink|LightYellow|LightGreen|LightBlue|LightPurple|DarkRed|DarkYellow|DarkGreen|'
r'DarkBlue|DarkPurple|Cyan|Magenta|Black|White|Silver|Gold|Dark|WhiteSkin|BlackSkin)\s*\b', Keyword.Constant),
# Built in functions
(r'(?i)\b(Abs|ACos|AddText|After|AnimationHeight|AnimationPlaying|AnimationWidth|'
r'Asc|ASin|ATan|Before|Bin|BLUE|Box|BoxOverlap|Byte|CallDLL|'
r'CameraAngle|CameraFollow|CameraPick|CameraX|CameraY|CenterText|ChDir|Chr|Circle|'
r'ClearArray|ClearCollisions|ClearKeys|ClearMouse|ClearObjects|ClearText|CloneCameraOrientation|CloneCameraPosition|CloneImage|CloneObject|'
r'CloneObjectOrientation|CloneObjectPosition|CloseFile|CloseInput|Cls|ClsColor|CollisionAngle|CollisionX|CollisionX|Color|'
r'CommandLine|Const|ConvertToInteger|ConvertToType|CopyBox|CopyFile|Cos|CountCollisions|CountWords|Crc32|'
r'CurrentDir|CurveAngle|CurveValue|Date|Decrypt|Default|DefaultMask|DefaultVisible|Delete|'
r'DeleteFile|DeleteFont|DeleteImage|DeleteMEMBlock|DeleteObject|DeleteSound|Dim|Distance|Distance2|Dot|'
r'DownKey|DrawAnimation|DrawGame|DrawGhostImage|DrawImage|DrawImageBox|DrawScreen|DrawToImage|DrawToScreen|DrawToWorld|'
r'EditMap|Ellipse|Encrypt|'
r'EOF|Errors|EscapeKey|Execute|False|FileExists|'
r'FileOffset|FileSize|FindFile|First|Flip|Float|FPS|FrameLimit|'
r'GetAngle|GetAngle2|GetCollision|GetEXEName|GetKey|GetMap|GetMap2|GetMouse|GetPixel|'
r'GetPixel2|getRGB|GetWord|GFXModeExists|GhostObject|Global|GotoSavedLocation|GREEN|'
r'Hex|HotSpot|Image|ImageHeight|ImagesCollide|ImagesOverlap|ImageWidth|Include|InitObjectList|'
r'Input|Insert|InStr|Int|IsDirectory|KeyDown|KeyHit|KeyUp|Last|Left|'
r'LeftKey|Len|Line|LoadAnimImage|LoadAnimObject|LoadFont|LoadImage|LoadMap|LoadObject|LoadProgram|'
r'LoadSound|Locate|Lock|Log|Log10|LoopObject|Lower|LSet|MakeDir|MakeEmitter|'
r'MakeError|MakeImage|MakeMap|MakeMEMBlock|MakeObject|MakeObjectFloor|MapHeight|MapWidth|MaskImage|MaskObject|'
r'Max|MEMBlockSize|MemCopy|Min|Mid|MirrorObject|MouseDown|MouseHit|MouseMoveX|'
r'MouseMoveY|MouseMoveZ|MouseUp|MouseWX|MouseWY|MouseX|MouseY|MouseX|MoveCamera|MoveObject|'
r'NextObject|ObjectAngle|ObjectFloat|ObjectFrame|ObjectInteger|ObjectLife|'
r'ObjectOrder|ObjectPick|ObjectPickable|ObjectPlaying|ObjectRange|ObjectSight|ObjectSizeX|ObjectSizeY|ObjectsOverlap|ObjectString|'
r'ObjectX|ObjectY|OpenToEdit|OpenToRead|OpenToWrite|PaintObject|ParticleAnimation|'
r'ParticleEmission|ParticleMovement|PeekByte|PeekFloat|PeekInt|PeekShort|PI|PickColor|PickedAngle|PickedObject|'
r'PickedX|PickedY|PickImageColor|PickImageColor2|PixelPick|PlayAnimation|PlayObject|PlaySound|PointCamera|PointObject|'
r'PokeByte|PokeFloat|PokeInt|PokeShort|PositionCamera|PositionMouse|PositionObject|Print|PutPixel|PutPixel2|'
r'Rand|Randomize|ReadByte|ReadFloat|ReadInt|ReadLine|ReadShort|ReadString|RED|'
r'ReDim|Replace|ResetObjectCollision|ResizeImage|ResizeMEMBlock|Right|RightKey|'
r'Rnd|RotateCamera|RotateImage|RotateObject|RoundDown|RoundUp|RSet|SAFEEXIT|SaveImage|'
r'SaveProgram|SCREEN|ScreenDepth|ScreenGamma|ScreenHeight|ScreenPositionObject|ScreenShot|ScreenWidth|SeekFile|'
r'SetFont|SetMap|SetSound|SetTile|SetupCollision|SetWindow|Short|ShowMouse|ShowObject|'
r'Sin|Smooth2D|SoundPlaying|Sqrt|StartSearch|StopAnimation|StopObject|StopSound|'
r'Str|String|StrInsert|StrMove|StrRemove|Tan|Text|TextHeight|TextWidth|'
r'Time|Timer|TranslateCamera|TranslateObject|Trim|True|TurnCamera|TurnObject|'
r'Unlock|UpdateGame|UpKey|Upper|VerticalText|Wait|WaitKey|WaitMouse|'
r'WrapAngle|Write|WriteByte|WriteFloat|WriteInt|WriteLine|WriteShort|WriteString)\s*\b',
Name.Builtin),
# Variables
# (r'(\w+)(\$|#|%)', Name.Variable),
],
'string': [
(r'"[^"]*"', String.Double),
(r'\s+', Text),
(r'[^=\s\n\[\]{}()\\$"\'`\\]+', Text),
],
'number': [
(r'\d+(?= |\Z)', Number),
],
'paren': [
(r'\)', Punctuation, '#pop'),
include('root'),
],
'comment': [
(r'(?i)REMEND', Comment.Multiline, '#pop'),
(r'.{0,}\n', Comment.Multiline)
],
}
|