lexico.cc 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "lexico.hh"
  2. void Lexico::check(std::string str){
  3. if (std::regex_search(str, m, std::regex ("inteiro\\s+"))){
  4. //
  5. } else if (std::regex_search(str, m, std::regex("flutuante\\s+"))){
  6. //
  7. } else if (std::regex_search(str, m, std::regex("banana\\s+"))){
  8. //
  9. } else if (std::regex_search(str, m, std::regex("se\\s+"))){
  10. //
  11. } else if (std::regex_search(str, m, std::regex("enquanto\\s+"))){
  12. //
  13. } else if (std::regex_search(str, m, std::regex("para\\s+"))){
  14. //
  15. } else if (std::regex_search(str, m, std::regex("digitar\\s+"))){
  16. //
  17. } else if (std::regex_search(str, m, std::regex("imprimir\\s+"))){
  18. //
  19. } else if (std::regex_search(str, m, std::regex("[A-Za-z]+\\s+=\\s+[0-9]+;"))){
  20. //
  21. } else if (std::regex_search(str, m, std::regex("[A-Za-z]+\\s+=\\s+[0-9]*\\.[0-9]+;"))){
  22. //
  23. } else if (std::regex_search(str, m, std::regex("[A-Za-z]+\\s+=\\s+\"[^\"]*\""))){
  24. //
  25. } else if (str == ""){
  26. //
  27. } else {
  28. this->b.push_back(false);
  29. std::cout << "\nErro de léxico" << std::endl;
  30. }
  31. }
  32. Lexico::Lexico(){
  33. std::ifstream file("input.txt");
  34. std::string line;
  35. while(getline(file, line)){
  36. check(line);
  37. }
  38. if(!count(b.begin(), b.end(), false)){
  39. sintaxico = new Sintaxico();
  40. }
  41. }
  42. Lexico::Lexico(std::string str){
  43. check(str);
  44. if(!count(b.begin(), b.end(), false)){
  45. sintaxico = new Sintaxico(str);
  46. }
  47. }
  48. std::string Lexico::getCode(){
  49. return sintaxico->getCode();
  50. }
  51. bool Lexico::getBool(){
  52. if(count(b.begin(), b.end(), false)){
  53. return false;
  54. } else {
  55. return sintaxico->getBool();
  56. }
  57. }