#! /usr/bin/gawk -f # Last edited on 2004-12-30 20:43:26 by stolfi # deduce-codes - DEDUZ NUMEROS E CODIGOS BEGIN { natural = "[1-9][0-9]?[0-9]?([.]?[0-9][0-9][0-9])*" ordinalmsi = natural "[šo]" ordinalfsi = natural "[Ša]" ordinalmpl = natural "[šo][s]" ordinalfpl = natural "[Ša][s]" cardinal = "[-+]?(0|(" natural "))([,][0-9]+)?" cardinalsi = "[-+]?((1([,][0-9]+)?)|(0[,]0*1))" cardinalsipl = "[-+]?0([,][0-9]+)?" fracionario = natural "[/]" natural fracionariomeio = "1[/]2" fracionariosi = "1[/]" natural romano = "[MDCLXVI]+" romanook = "(M?M?M?)((C[MD])|(D?C?C?C?))((X[CL])|(L?X?X?X?))((I[XV])|(V?I?I?I?))" horario = "[0-2]?[0-9]h([0-5]?[0-9](min([0-5]?[0-9]s)?)?)?" horariosi = "1h([0-5]?[0-9](min([0-5]?[0-9]s)?)?)?" data = "[0-3]?[0-9][-/][01]?[0-9]([-/][0-9]+)?" codigo = "[0-9]+([-./][0-9]+)+" } ($0 ~ "^" ordinalmsi "$") { printf("%s %s %s\n", $0, "nuoajms", $0) } # ordinal masculino singular ($0 ~ "^" ordinalfsi "$") { printf("%s %s %s\n", $0, "nuoajfs", $0) } # ordinal feminino singular ($0 ~ "^" ordinalmpl "$") { printf("%s %s %s\n", $0, "nuoajmp", $0) } # ordinal masculino plural ($0 ~ "^" ordinalfpl "$") { printf("%s %s %s\n", $0, "nuoajfp", $0) } # ordinal feminino plural ($0 ~ "^" cardinal "$") { if ($0 ~ "^" cardinalsi "$") # cardinal singular - ex. 1 1,2 1,7 0,1 0,01 { printf("%s %s %s\n", $0, "nucajms", $0) # cardinal masculino singular printf("%s %s %s\n", $0, "nucajfs", $0) # cardinal feminino singular } else if ($0 ~ "^" cardinalsipl "$") # cardinal singular e plural - ex. 0 0,7 0,85 { printf("%s %s %s\n", $0, "nucajms", $0) # cardinal masculino singular printf("%s %s %s\n", $0, "nucajfs", $0) # cardinal feminino singular printf("%s %s %s\n", $0, "nucajmp", $0) # cardinal masculino plural printf("%s %s %s\n", $0, "nucajfp", $0) # cardinal feminino plural } else # cardinal plural - ex. 2 2,02 3.115 { printf("%s %s %s\n", $0, "nucajmp", $0) # cardinal masculino plural printf("%s %s %s\n", $0, "nucajfp", $0) # cardinal feminino plural } } ($0 ~ "^" fracionario "$") { if ($0 ~ "^" fracionariomeio "$") # 1/2 { printf("%s %s %s\n", $0, "nufajms", $0) # fracionario masculino singular adjetivo - meio printf("%s %s %s\n", $0, "nufajfs", $0) # fracionario feminino singular adjetivo - meia } if ($0 ~ "^" fracionariosi "$") # fracionario singular - ex. 1/2 1/3 1/5 1/12 1/3.200 printf("%s %s %s\n", $0, "nufasms", $0) # fracionario masculino singular substantivo else # fracionario plural - ex. 2/3 2/5 3/21 2.000/350.025 printf("%s %s %s\n", $0, "nufasmp", $0) # fracionario masculino plural substantivo } ($0 ~ "^" romano "$") { if ($0 ~ "^" romanook "$") # numero (adjetivo ordinal) romano { printf("%s %s %s\n", $0, "nuorjms", $0) # romano masculino singular printf("%s %s %s\n", $0, "nuorjfs", $0) # romano feminino singular printf("%s %s %s\n", $0, "nuorjmp", $0) # romano masculino plural printf("%s %s %s\n", $0, "nuorjfp", $0) # romano feminino plural } } ($0 ~ "^" horario "$") { # horario if ($0 ~ "^" horariosi "$") # horario singular - ex 1h 1h20 1h40min30s printf("%s %s %s\n", $0, "cdhfs", $0) # horario feminino singular else # horario plural - ex 2h 17h 18h45min printf("%s %s %s\n", $0, "cdhfp", $0) # horario feminino plural } ($0 ~ "^" data "$") { printf("%s %s %s\n", $0, "cddms", $0) } # data masculino singular ($0 ~ "^" codigo "$") { printf("%s %s %s\n", $0, "cdcms", $0) } # codigo masculino singular