Advertisement
k0mZ

Untitled

Dec 13th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. // import sekcija
  2.  
  3. %%
  4.  
  5. // sekcija opcija i deklaracija
  6. %class MPLexer
  7. %implements java_cup.runtime.Scanner
  8. %function next_token
  9. %line
  10. %column
  11. %debug
  12. %type java_cup.runtime.Symbol
  13.  
  14. %cup
  15. %eofval{
  16. return new java_cup.runtime.Symbol( sym.EOF, null, yyline, yycolumn);
  17. %eofval}
  18.  
  19. %{
  20. //dodatni clanovi generisane klase
  21. KWTable kwTable = new KWTable();
  22. java_cup.runtime.Symbol getKW()
  23. {
  24. return new java_cup.runtime.Symbol( kwTable.find( yytext() ),
  25. yytext(), yyline, yycolumn );
  26. }
  27. %}
  28.  
  29. //stanja
  30. %xstate KOMENTAR
  31. //makroi
  32. slovo = [a-zA-Z]
  33. cifra = [0-9]
  34. oc16 = [0-9A-F]
  35. %%
  36.  
  37. // pravila
  38. "//" { yybegin( KOMENTAR ); }
  39. <KOMENTAR>~[\n\r] { yybegin( YYINITIAL ); }
  40.  
  41. [\t\n\r ] { ; }
  42. \( { return new java_cup.runtime.Symbol( sym.LEFTPAR, yytext(), yyline, yycolumn ); }
  43. \) { return new java_cup.runtime.Symbol( sym.RIGHTPAR, yytext(), yyline, yycolumn ); }
  44.  
  45. \{ { return new java_cup.runtime.Symbol( sym.LCURLY, yytext(), yyline, yycolumn ); }
  46. \} { return new java_cup.runtime.Symbol( sym.RCURLY, yytext(), yyline, yycolumn ); }
  47.  
  48. // operatori
  49. && { return new java_cup.runtime.Symbol( sym.AND,yytext(), yyline, yycolumn ); }
  50. \|\| { return new java_cup.runtime.Symbol( sym.OR,yytext(), yyline, yycolumn ); }
  51. \+ { return new java_cup.runtime.Symbol( sym.PLUS,yytext(), yyline, yycolumn ); }
  52. \* { return new java_cup.runtime.Symbol( sym.MUL,yytext(), yyline, yycolumn ); }
  53. \- { return new java_cup.runtime.Symbol( sym.MIN,yytext(), yyline, yycolumn ); }
  54. \/ { return new java_cup.runtime.Symbol( sym.DIV,yytext(), yyline, yycolumn ); }
  55. \< { return new java_cup.runtime.Symbol( sym.LESS,yytext(), yyline, yycolumn ); }
  56. \<= { return new java_cup.runtime.Symbol( sym.LESSE,yytext(), yyline, yycolumn ); }
  57. \> { return new java_cup.runtime.Symbol( sym.GREAT,yytext(), yyline, yycolumn ); }
  58. \>= { return new java_cup.runtime.Symbol( sym.GREATE,yytext(), yyline, yycolumn ); }
  59. == { return new java_cup.runtime.Symbol( sym.EQ,yytext(), yyline, yycolumn ); }
  60. \!= { return new java_cup.runtime.Symbol( sym.NEQ,yytext(), yyline, yycolumn ); }
  61. // separatori
  62. ; { return new java_cup.runtime.Symbol( sym.DOTCOMMA, yytext(), yyline, yycolumn ); }
  63. , { return new java_cup.runtime.Symbol( sym.COMMA, yytext(), yyline, yycolumn ); }
  64. = { return new java_cup.runtime.Symbol( sym.ASSIGN, yytext(), yyline, yycolumn ); }
  65.  
  66.  
  67. //kljucne reci
  68. {slovo}+ { return getKW(); }
  69.  
  70. //"main" { return new java_cup.runtime.Symbol( sym.MAIN, yytext(), yyline, yycolumn );}
  71. //"char" { return new java_cup.runtime.Symbol( sym.CHAR, yytext(), yyline, yycolumn );}
  72. // "int" { return new java_cup.runtime.Symbol( sym.INT, yytext(), yyline, yycolumn ); }
  73. // "real" { return new java_cup.runtime.Symbol( sym.REAL, yytext(), yyline, yycolumn );}
  74. // "bool" { return new java_cup.runtime.Symbol( sym.BOOL, yytext(), yyline, yycolumn );}
  75. // "read" { return new java_cup.runtime.Symbol( sym.READ, yytext(), yyline, yycolumn );}
  76. // "write" { return new java_cup.runtime.Symbol( sym.WRITE, yytext(), yyline, yycolumn );}
  77. // "while" { return new java_cup.runtime.Symbol( sym.WHILE, yytext(), yyline, yycolumn );}
  78.  
  79. //konstante
  80. {cifra}+ { return new java_cup.runtime.Symbol( sym.CONST, yytext(), yyline, yycolumn ); }
  81. //real
  82. 0+\.{cifra}+(E[+-]{cifra}*)? { return new java_cup.runtime.Symbol( sym.CONST,yytext(), yyline, yycolumn ); }
  83. //int
  84. \${oc16}+ { return new java_cup.runtime.Symbol( sym.CONST, yytext(), yyline, yycolumn); }
  85. {cifra}+ { return new java_cup.runtime.Symbol( sym.CONST, yytext(), yyline, yycolumn); }
  86. //bool
  87. "true"|"false" { return new java_cup.runtime.Symbol(sym.CONST, yytext(), yyline, yycolumn); }
  88.  
  89. //ID (prvo slovo ili _ a zatim proizvoljan broj slova i cifara)
  90. ({slovo} | "_")+ ({slovo}|{cifra}|"_")* { return new java_cup.runtime.Symbol(sym.ID, yytext(),yyline, yycolumn ); }
  91. //char
  92. '[^]' { return new java_cup.runtime.Symbol( sym.CONST,yytext(), yyline, yycolumn ); }
  93. //obrada gresaka
  94. . { if (yytext() != null && yytext().length() > 0) System.out.println( "ERROR: " + yytext() ); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement