{-# LANGUAGE OverloadedStrings #-} module Skylighting.Syntax.Roff (syntax) where import Skylighting.Types import Data.Map import Skylighting.Regex import qualified Data.Set syntax :: Syntax syntax = Syntax { sName = "Roff" , sFilename = "roff.xml" , sShortname = "Roff" , sContexts = fromList [ ( "Argument" , Context { cName = "Argument" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "%1" , reCompiled = Nothing , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop , Pop ] } , Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "Error" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = True } ) , ( "Comment" , Context { cName = "Comment" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = IncludeRules ( "Alerts" , "" ) , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = CommentTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "DetectComments" , Context { cName = "DetectComments" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\.\\s*\\\\\"" , reCompiled = Just (compileRegex True "\\.\\s*\\\\\"") , reCaseSensitive = True } , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Push ( "Roff" , "Comment" ) ] } , Rule { rMatcher = Detect2Chars '\\' '"' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Comment" ) ] } , Rule { rMatcher = Detect2Chars '\\' '#' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Comment" ) ] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "DetectDirective" , Context { cName = "DetectDirective" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = True , keywordDelims = Data.Set.fromList "\t\n !%&()*+,-./:;<=>?[\\]^{|}~" } (makeWordSet True [ "br" , "sp" ]) , rAttribute = KeywordTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Directive" ) ] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = True , keywordDelims = Data.Set.fromList "\t\n !%&()*+,-./:;<=>?[\\]^{|}~" } (makeWordSet True []) , rAttribute = KeywordTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Directive" ) ] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = True , keywordDelims = Data.Set.fromList "\t\n !%&()*+,-./:;<=>?[\\]^{|}~" } (makeWordSet True []) , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Directive" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\s*ds\\b" , reCompiled = Just (compileRegex True "\\s*ds\\b") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 1 , rContextSwitch = [ Push ( "Roff" , "dsDirective" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\s*de\\b" , reCompiled = Just (compileRegex True "\\s*de\\b") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 1 , rContextSwitch = [ Push ( "Roff" , "deDirective" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\s*da(?=\\s+[A-Za-z]+)" , reCompiled = Just (compileRegex True "\\s*da(?=\\s+[A-Za-z]+)") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 1 , rContextSwitch = [ Push ( "Roff" , "daDirective" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\s*di(?=\\s+[A-Za-z]+)" , reCompiled = Just (compileRegex True "\\s*di(?=\\s+[A-Za-z]+)") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 1 , rContextSwitch = [ Push ( "Roff" , "diDirective" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\s*[A-Za-z]+\\b" , reCompiled = Just (compileRegex True "\\s*[A-Za-z]+\\b") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 1 , rContextSwitch = [ Push ( "Roff" , "Directive" ) ] } ] , cAttribute = FunctionTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "DetectEscape" , Context { cName = "DetectEscape" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\\\(\\*|n[+-]?)([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])" , reCompiled = Just (compileRegex True "\\\\(\\*|n[+-]?)([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\[fF]([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])" , reCompiled = Just (compileRegex True "\\\\[fF]([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\f([0-9]|\\([0-9][0-9]|\\[[0-9]+\\])" , reCompiled = Just (compileRegex True "\\\\f([0-9]|\\([0-9][0-9]|\\[[0-9]+\\])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\s(\\[([1-3][0-9]|[04-9])\\]|[04-9]|[+-][0-9]|([+-]?\\(|\\([+-])[0-9][0-9])" , reCompiled = Just (compileRegex True "\\\\s(\\[([1-3][0-9]|[04-9])\\]|[04-9]|[+-][0-9]|([+-]?\\(|\\([+-])[0-9][0-9])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = Detect2Chars '\\' '\\' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\(\\$[0-9*@]|[.:% |^{}_!?@)/,&:~0acdeEprtu])" , reCompiled = Just (compileRegex True "\\\\(\\$[0-9*@]|[.:% |^{}_!?@)/,&:~0acdeEprtu])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\[ABDXZbow]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])" , reCompiled = Just (compileRegex True "\\\\[ABDXZbow]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Argument" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\[gkmMVYz]([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])" , reCompiled = Just (compileRegex True "\\\\[gkmMVYz]([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\O([0-4]|\\[5[lrci][^]]\\])" , reCompiled = Just (compileRegex True "\\\\O([0-4]|\\[5[lrci][^]]\\])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\[hHSvx]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])" , reCompiled = Just (compileRegex True "\\\\[hHSvx]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Measurement" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\[lL]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])\\|?" , reCompiled = Just (compileRegex True "\\\\[lL]([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])\\|?") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Measurement" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\R([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])" , reCompiled = Just (compileRegex True "\\\\R([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Argument" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\C([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])" , reCompiled = Just (compileRegex True "\\\\C([^\\\\]|\\\\[% |\\^{}'`\\-!?@)/,&:~0E_acdeprtu])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "GlyphArgument" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\N([^\\\\0-9]|\\\\[%:{}'`\\-_!@/cep])[0-9]+\\1" , reCompiled = Just (compileRegex True "\\\\N([^\\\\0-9]|\\\\[%:{}'`\\-_!@/cep])[0-9]+\\1") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])" , reCompiled = Just (compileRegex True "\\\\([^]\\s]|\\([^]\\s]{2}|\\[[^]\\s]+\\])") , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = RegExpr RE { reString = "\\\\$" , reCompiled = Just (compileRegex True "\\\\$") , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = DetectChar '\\' , rAttribute = ErrorTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = ErrorTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "DetectOthers" , Context { cName = "DetectOthers" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = IncludeRules ( "Roff" , "DetectComments" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '\\' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = True , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "DetectEscape" ) ] } , Rule { rMatcher = DetectChar '"' , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "String" ) ] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "Directive" , Context { cName = "Directive" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Float , rAttribute = DecValTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Int , rAttribute = DecValTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Detect2Chars '\\' '"' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Comment" ) ] } , Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "Error" , Context { cName = "Error" , cSyntax = "Roff" , cRules = [] , cAttribute = ErrorTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "GlyphArgument" , Context { cName = "GlyphArgument" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "%1" , reCompiled = Nothing , reCaseSensitive = True } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop , Pop ] } ] , cAttribute = OtherTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "Error" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = True } ) , ( "LiteralIL" , Context { cName = "LiteralIL" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Detect2Chars '\\' '\\' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Detect2Chars '\\' '?' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "Error" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "LiteralSL" , Context { cName = "LiteralSL" , cSyntax = "Roff" , cRules = [] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "Measurement" , Context { cName = "Measurement" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "%1" , reCompiled = Nothing , reCaseSensitive = True } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop , Pop ] } ] , cAttribute = ErrorTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "Error" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = True } ) , ( "Normal" , Context { cName = "Normal" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = IncludeRules ( "Roff" , "DetectComments" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '.' , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Push ( "Roff" , "DetectDirective" ) ] } , Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "String" , Context { cName = "String" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Detect2Chars '\\' '"' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '"' , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "daBody" , Context { cName = "daBody" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\.\\s*da\\b" , reCompiled = Just (compileRegex True "\\.\\s*da\\b") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Pop , Pop ] } , Rule { rMatcher = Detect2Chars '\\' '!' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "LiteralSL" ) ] } , Rule { rMatcher = Detect2Chars '\\' '?' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "LiteralIL" ) ] } , Rule { rMatcher = IncludeRules ( "Roff" , "Normal" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "daDirective" , Context { cName = "daDirective" , cSyntax = "Roff" , cRules = [] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "daBody" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "deBody" , Context { cName = "deBody" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Detect2Chars '.' '.' , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Pop , Pop ] } , Rule { rMatcher = IncludeRules ( "Roff" , "Normal" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "deDirective" , Context { cName = "deDirective" , cSyntax = "Roff" , cRules = [] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "deBody" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "diBody" , Context { cName = "diBody" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\.\\s*di\\b" , reCompiled = Just (compileRegex True "\\.\\s*di\\b") , reCaseSensitive = True } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Pop , Pop ] } , Rule { rMatcher = Detect2Chars '\\' '!' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "LiteralSL" ) ] } , Rule { rMatcher = Detect2Chars '\\' '?' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "LiteralIL" ) ] } , Rule { rMatcher = IncludeRules ( "Roff" , "Normal" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "diDirective" , Context { cName = "diDirective" , cSyntax = "Roff" , cRules = [] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Push ( "Roff" , "diBody" ) ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "dsDirective" , Context { cName = "dsDirective" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = Int , rAttribute = DecValTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Float , rAttribute = DecValTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Detect2Chars '\\' '"' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "Comment" ) ] } , Rule { rMatcher = DetectChar '"' , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "Roff" , "dsString" ) ] } , Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "dsString" , Context { cName = "dsString" , cSyntax = "Roff" , cRules = [ Rule { rMatcher = IncludeRules ( "Roff" , "DetectOthers" ) , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = True , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) ] , sAuthor = "Matthew Woehlke (mw_triad@users.sourceforge.net)" , sVersion = "2" , sLicense = "GPL" , sExtensions = [] , sStartingContext = "Normal" }