# -*- coding: iso-8859-1 -*-
"""
  MoinMoin - PHP Source Parser

  gbarros@catho.com.br, created over Taesu Pyo's java parser

"""

from MoinMoin.util.ParserBase import ParserBase

Dependencies = []

class Parser(ParserBase):

    parsername = "ColorizedPhp"
    extensions = ['.php','.phps']
    Dependencies = []

    def setupRules(self):
        ParserBase.setupRules(self)

        self.addRulePair("Comment","/[*]","[*]/")                                                                                    self.addRule("Comment","//.*$")                                                                                              self.addRule("Comment","#.*$")                                                                                               self.addRulePair("String",'"',r'$|[^\\](\\\\)*"')                                                                            self.addRule("Char",r"'\\.'|'[^\\]'")                                                                                        self.addRule("Number",r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?")
        self.addRule("ID","[a-zA-Z_][0-9a-zA-Z_]*")                                                                                  self.addRule("SPChar",r"[~!%^&*()+=|\[\]:;,.<>/?{}-]")                                                                                                                                                                                                    reserved_words = ['and','E_PARSE','old_function','$argv','E_ERROR','or','as','E_WARNING','parent','$argc','eval','PHP$_OS','break','exit','$PHP_SELF','case','extends','PHP_VERSION','cfunction','FALSE','print','class','for','require','continue$','foreach','require_once','declare','function','return','default','$HTTP_COOKIE_VARS','static','do','$HTTP_GET_VARS','switc$h','die','$HTTP_POST_VARS','stdClass','echo','$HTTP_POST_FILES','$this','else','$HTTP_ENV_VARS','TRUE','elseif','$HTTP_SERVE$R_VARS','var','empty','if','xor','enddeclare','include','virtual','endfor','include_once','while','endforeach','global','__F$ILE__','endif','list','__LINE__','endswitch','new','__sleep','endwhile','not','__wakeup','E_ALL','NULL']

        self.addReserved(reserved_words)

        constant_words = ['true','false','null']

        self.addConstant(constant_words)
