4 # Implement correct number formats (don't forget imaginaries)
5 # Implement correct string/bytes formats (escape sequences)
7 # <http://docs.python.org/dev/3.0/reference/lexical_analysis.html>
9 class PythonLanguage extends HyperLanguage {
10 public function __construct() {
12 parent::NAME => 'Python',
13 parent::VERSION => '0.1',
14 parent::AUTHOR => array(
15 parent::NAME => 'Konrad Rudolph',
16 parent::WEBSITE => 'madrat.net',
17 parent::EMAIL => 'konrad_rudolph@madrat.net'
21 $this->setExtensions(array('py'));
23 $this->setCaseInsensitive(false);
25 $this->addStates(array(
31 'keyword' => array('', 'literal', 'operator'),
36 $this->addRules(array(
37 'string' => Rule::C_DOUBLEQUOTESTRING,
38 'bytes' => Rule::C_SINGLEQUOTESTRING,
39 'number' => Rule::C_NUMBER,
43 'assert', 'break', 'class', 'continue', 'def', 'del',
44 'elif', 'else', 'except', 'finally', 'for', 'from',
45 'global', 'if', 'import', 'in', 'lambda', 'nonlocal',
46 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'
49 'False', 'None', 'True'
52 'and', 'as', 'is', 'not', 'or'
55 'identifier' => Rule::C_IDENTIFIER,
58 $this->addMappings(array(