Advertisement
Guest User

Hello

a guest
Oct 23rd, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. /* task1.jj */
  2.  
  3.  
  4. PARSER_BEGIN(Lexer)
  5.  
  6. import java.util.ArrayList;
  7.  
  8. public class Lexer {
  9.  
  10.  
  11.  
  12. public static void main(String[] args){
  13.  
  14.  
  15.  
  16. try {
  17. new Lexer(new java.io.StringReader(args[0])).Start();
  18. } catch (Throwable e) {
  19.  
  20. System.out.println("Syntax check failed: " + e.getMessage());
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. }
  31. }
  32.  
  33. PARSER_END(Lexer)
  34.  
  35. SKIP : {" " | "\t" | "\n" | "\r"}
  36. TOKEN : {< Def: "def" >}
  37. TOKEN : {< If: "if" >}
  38. TOKEN : {< Then: "then" >}
  39. TOKEN : {< Else: "else" >}
  40. TOKEN : {< Skip: "skip" >}
  41. TOKEN : {< While: "while" >}
  42. TOKEN : {< Do: "do" >}
  43. TOKEN : {< Repeat: "repeat" >}
  44. TOKEN : {< Until: "until" >}
  45. TOKEN : {< Break: "break" >}
  46. TOKEN : {< Continue: "continue" >}
  47. TOKEN : {< Integer: (["0"-"9"])+>}
  48. TOKEN : {< Identifier: (["a"-"z"](["a"-"z"] | ["A"-"Z"] |"_" | ["0"-"9"])*)>}
  49. TOKEN : {< Semicolon: ";">}
  50. TOKEN : {< LeftParen: "(">}
  51. TOKEN : {< RightParen: ")">}
  52. TOKEN : {< Equals: "=">}
  53. TOKEN : {< Equality: "==">}
  54. TOKEN : {< LessThan: "<">}
  55. TOKEN : {< GreaterThan: ">">}
  56. TOKEN : {< LessThanOrEq: "<=">}
  57. TOKEN : {< GreatThanOrEq: ">=">}
  58. TOKEN : {< Comma: ",">}
  59. TOKEN : {< LeftCurlyBracket: "{">}
  60. TOKEN : {< RightCurlyBracket: "}">}
  61. TOKEN : {< EqualsAssign: ":=">}
  62. TOKEN : {< Plus: "+">}
  63. TOKEN : {< Multiply: "*">}
  64. TOKEN : {< Minus: "-">}
  65. TOKEN : {< Divide: "/">}
  66.  
  67. void Start(): {Token t = null;
  68. ArrayList<Token> tokenList = new ArrayList<Token>();
  69.  
  70. }
  71. {
  72.  
  73.  
  74. (keyword()|
  75. t = <Identifier> {System.out.println("T_Identifier ( " + t.image.toString() + ")");tokenList.add(t);}|
  76. Integer()|
  77. SpecialNotation())*
  78. <EOF>
  79. {}
  80.  
  81. void SpecialNotation() :
  82.  
  83. {
  84.  
  85. String total = "";
  86.  
  87. String temp;
  88.  
  89. }
  90.  
  91. {
  92.  
  93. (t = <Semicolon> {System.out.println("T_Semicolon");tokenList.add(t);}|
  94. t = <LeftParen> {System.out.println("T_LeftParenthesis");tokenList.add(t);}|
  95. t = <RightParen> {System.out.println("T_RighParenthesis");tokenList.add(t);}|
  96. t = <Equals> {System.out.println("T_Equals");tokenList.add(t);}|
  97. t = <Equality> {System.out.println("T_Equality");tokenList.add(t);}|
  98. t = <LessThan> {System.out.println("T_LessThan");tokenList.add(t);}|
  99. t = <GreaterThan> {System.out.println("GreaterThan");tokenList.add(t);}|
  100. t = <LessThanOrEq> {System.out.println("T_LessThanOrEq");tokenList.add(t);}|
  101. t = <GreatThanOrEq> {System.out.println("T_GreaterThanOrEq");tokenList.add(t);}|
  102. t = <Comma> {System.out.println("T_Comma");tokenList.add(t);}|
  103. t = <LeftCurlyBracket> {System.out.println("T_LeftCurlyBracket");tokenList.add(t);}|
  104. t = <RightCurlyBracket> {System.out.println("T_RightCurlyBracket");tokenList.add(t);}|
  105. t = <EqualsAssign> {System.out.println("T_EqualsAssign");tokenList.add(t);}|
  106. t = <Plus> {System.out.println("T_Plus");tokenList.add(t);}|
  107. t = <Multiply> {System.out.println("T_Multiply");tokenList.add(t);}|
  108. t = <Minus> {System.out.println("T_Minus");tokenList.add(t);}|
  109. t = <Divide> {System.out.println("T_Divide");tokenList.add(t);}
  110. )*
  111.  
  112.  
  113.  
  114. }
  115.  
  116. void KeyWords() :
  117.  
  118. {
  119.  
  120. }
  121. {
  122. (t = <Def> {System.out.println("T_Def"); tokenList.add(t);}|
  123. t = <If> {System.out.println("T_If");tokenList.add(t);}|
  124. t = <Then> {System.out.println("T_Then");tokenList.add(t);}|
  125. t = <Else> {System.out.println("T_Else");tokenList.add(t);}|
  126. t = <Skip> {System.out.println("T_Skip");tokenList.add(t);}|
  127. t = <While> {System.out.println("T_While");tokenList.add(t);}|
  128. t = <Do> {System.out.println("T_Do");tokenList.add(t);}|
  129. t = <Repeat> {System.out.println("T_Repeat");tokenList.add(t);} |
  130. t = <Until> {System.out.println("T_Until");tokenList.add(t);} |
  131. t = <Break> {System.out.println("T_Break");tokenList.add(t);}|
  132. t = <Continue> {System.out.println("T_Continue");tokenList.add(t);})*
  133. }
  134.  
  135. void Integer() :
  136.  
  137. {
  138.  
  139. }
  140. {
  141. (
  142. (
  143. t = <Integer> {System.out.println("T_Integer");tokenList.add(t);}
  144. )
  145. (
  146. SKIP
  147. (
  148. t = <Identifier> {System.out.println("T_Identifier ( " + t.image.toString() + ")");tokenList.add(t);}
  149. )
  150. )*
  151. )
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement