6 "Abstract parent class for translators."
9 available_translators = []
15 """Register a translator
16 @translator: Translator sub-class
18 cls.available_translators.append(translator)
22 """Return the corresponding translator instance
23 @target_lang: str (case insensitive) wanted language
24 Raise a NotImplementedError in case of unmatched language
26 target_lang = target_lang.lower()
27 for translator
in cls.available_translators:
28 if translator.__LANG__.lower() == target_lang:
31 raise NotImplementedError(
"Unknown target language: %s" % target_lang)
35 "Return the list of registered languages"
36 return [translator.__LANG__
for translator
in cls.available_translators]
39 """Instance a translator
40 @cache_size: (optional) Expr cache size
45 """Translate an ExprInt
46 @expr: ExprInt to translate
48 raise NotImplementedError(
"Abstract method")
51 """Translate an ExprId
52 @expr: ExprId to translate
54 raise NotImplementedError(
"Abstract method")
57 """Translate an ExprCompose
58 @expr: ExprCompose to translate
60 raise NotImplementedError(
"Abstract method")
63 """Translate an ExprSlice
64 @expr: ExprSlice to translate
66 raise NotImplementedError(
"Abstract method")
69 """Translate an ExprOp
70 @expr: ExprOp to translate
72 raise NotImplementedError(
"Abstract method")
75 """Translate an ExprMem
76 @expr: ExprMem to translate
78 raise NotImplementedError(
"Abstract method")
81 """Translate an ExprAff
82 @expr: ExprAff to translate
84 raise NotImplementedError(
"Abstract method")
87 """Translate an ExprCond
88 @expr: ExprCond to translate
90 raise NotImplementedError(
"Abstract method")
93 """Translate an expression according to its type
94 @expr: expression to translate
110 for target, handler
in handlers.iteritems():
111 if isinstance(expr, target):
116 raise ValueError(
"Unhandled type for %s" % expr)