ometa P { p = digit:d -> 'ppppp', q = digit:d | letter:q -> 'jjjjjjjjj', start = q | p } P.matchAll('tt', 'start') ometa Logica { proposicion = letra | conjuncion | negacion, letra = letter:l -> l.toString(), conjuncion = proposicion:p '@' proposicion:q -> (p+'@'+q), negacion = '¬' proposicion:p -> ('¬' + p) } Logica.matchAll('p@q', 'proposicion') p Logica.matchAll('6*(4+3)', 'expr') 42 ometa prueba { digito = ('9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'):d -> (d.digitValue()), number = (digito)+:x -> (x), input = number | digito } prueba.matchAll('125')