Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
otros:antlr [2013/02/01 09:35] alfred [Apuntes] |
otros:antlr [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 63: | Línea 63: | ||
| raw_input() | raw_input() | ||
| } | } | ||
| + | </code> | ||
| + | ==== Sección @init ==== | ||
| + | Para inicializar valores dentro de la clase del parser: | ||
| + | <code> | ||
| + | @init { | ||
| + | self.line = {} | ||
| + | self.line['parameters'] = {} | ||
| + | } | ||
| + | </code> | ||
| + | Luego podremos usarlas así: | ||
| + | <code> | ||
| + | logline returns [val] | ||
| + | : globalmessage {val = self.line} | ||
| + | | playerinfo {val = self.line} | ||
| + | ; | ||
| + | </code> | ||
| + | Las reglas también pueden tener un init: | ||
| + | <code> | ||
| + | file returns [List<List<String>> data] | ||
| + | @init {data = new ArrayList<List<String>>();} | ||
| + | : (row {data.add($row.list);})+ EOF | ||
| + | ; | ||
| </code> | </code> | ||
| ===== Notas ===== | ===== Notas ===== | ||
| Línea 148: | Línea 170: | ||
| | defvar { print 'var' } | | defvar { print 'var' } | ||
| | .* { print 'lodemas' } ; | | .* { print 'lodemas' } ; | ||
| + | </code> | ||
| + | Un ejemplo para capturar excepciones: | ||
| + | <code> | ||
| + | except RecognitionException, e: | ||
| + | print "PARSING ERROR: "+str(e)+" parsing :"+str(self.input) | ||
| + | pprint.pprint(e) | ||
| + | pprint.pprint(self.input) | ||
| </code> | </code> | ||
| Atributos de tokens: | Atributos de tokens: | ||
| Línea 155: | Línea 184: | ||
| * {{:otros:antlr:antlr_python.pdf|Ejemplo con Python}} | * {{:otros:antlr:antlr_python.pdf|Ejemplo con Python}} | ||
| * {{:otros:antlr:antlr-tutorial.pdf|Tutorial}} | * {{:otros:antlr:antlr-tutorial.pdf|Tutorial}} | ||
| + | |||
| + | ==== Ejemplos míos ==== | ||
| + | * {{:otros:antlr:gamelog.g.zip|GameLog v0}} | ||
| ==== Links ==== | ==== Links ==== | ||
| === General === | === General === | ||