# -*- coding: iso-8859-1 -*-
"""
	MoinMoin - Matlab Source Parser

	Copyleft 2005 Trausti Kristjansson
	No rights reserved.

        Based on Pascal Source Parser by Johannes Berg

"""

from MoinMoin.util.ParserBase import ParserBase

Dependencies = []

class Parser(ParserBase):

    parsername = 'ColorizedMatlab'
    extensions = ['.m']
    Dependencies = []

    def __init__(self, raw, request, **kw):
        ParserBase.__init__(self,raw,request,**kw)
        self._ignore_case = 1

    def setupRules(self):
        ParserBase.setupRules(self)
        
        self.addRule("Comment","%.*$")
        self.addRulePair("String",'\'','\'')
        self.addRule("Char",r"'\\.'|#[a-f0-9][a-f0-9]")
        self.addRule("Number",r"[0-9](\.[0-9]*)?(eE[+-][0-9])?|\$[0-9a-fA-F]+")
        self.addRule("ID","[a-zA-Z_][0-9a-zA-Z_]*")
        self.addRule("SPChar",r"[~!%^&*()+=|\[\]:;,.<>/?{}-]")
        
        reserved_words = [    'break'
    ,'case'
    ,'catch'
    ,'continue'
    ,'else'
    ,'elseif'
    ,'end'
    ,'for'
    ,'function'
    ,'global'
    ,'if'
    ,'otherwise'
    ,'persistent'
    ,'return'
    ,'switch'
    ,'try'
    ,'while']
        
        self.addReserved(reserved_words)
        
        constant_words = ['true','false','nil']
        
        self.addConstant(constant_words)
