Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* task1.jj */
- PARSER_BEGIN(Lexer)
- import java.util.ArrayList;
- public class Lexer {
- public static void main(String[] args){
- try {
- new Lexer(new java.io.StringReader(args[0])).Start();
- } catch (Throwable e) {
- System.out.println("Syntax check failed: " + e.getMessage());
- }
- }
- }
- PARSER_END(Lexer)
- SKIP : {" " | "\t" | "\n" | "\r"}
- TOKEN : {< Def: "def" >}
- TOKEN : {< If: "if" >}
- TOKEN : {< Then: "then" >}
- TOKEN : {< Else: "else" >}
- TOKEN : {< Skip: "skip" >}
- TOKEN : {< While: "while" >}
- TOKEN : {< Do: "do" >}
- TOKEN : {< Repeat: "repeat" >}
- TOKEN : {< Until: "until" >}
- TOKEN : {< Break: "break" >}
- TOKEN : {< Continue: "continue" >}
- TOKEN : {< Integer: (["0"-"9"])+>}
- TOKEN : {< Identifier: (["a"-"z"](["a"-"z"] | ["A"-"Z"] |"_" | ["0"-"9"])*)>}
- TOKEN : {< Semicolon: ";">}
- TOKEN : {< LeftParen: "(">}
- TOKEN : {< RightParen: ")">}
- TOKEN : {< Equals: "=">}
- TOKEN : {< Equality: "==">}
- TOKEN : {< LessThan: "<">}
- TOKEN : {< GreaterThan: ">">}
- TOKEN : {< LessThanOrEq: "<=">}
- TOKEN : {< GreatThanOrEq: ">=">}
- TOKEN : {< Comma: ",">}
- TOKEN : {< LeftCurlyBracket: "{">}
- TOKEN : {< RightCurlyBracket: "}">}
- TOKEN : {< EqualsAssign: ":=">}
- TOKEN : {< Plus: "+">}
- TOKEN : {< Multiply: "*">}
- TOKEN : {< Minus: "-">}
- TOKEN : {< Divide: "/">}
- void Start(): {Token t = null;
- ArrayList<Token> tokenList = new ArrayList<Token>();
- }
- {
- (keyword()|
- t = <Identifier> {System.out.println("T_Identifier ( " + t.image.toString() + ")");tokenList.add(t);}|
- Integer()|
- SpecialNotation())*
- <EOF>
- {}
- void SpecialNotation() :
- {
- String total = "";
- String temp;
- }
- {
- (t = <Semicolon> {System.out.println("T_Semicolon");tokenList.add(t);}|
- t = <LeftParen> {System.out.println("T_LeftParenthesis");tokenList.add(t);}|
- t = <RightParen> {System.out.println("T_RighParenthesis");tokenList.add(t);}|
- t = <Equals> {System.out.println("T_Equals");tokenList.add(t);}|
- t = <Equality> {System.out.println("T_Equality");tokenList.add(t);}|
- t = <LessThan> {System.out.println("T_LessThan");tokenList.add(t);}|
- t = <GreaterThan> {System.out.println("GreaterThan");tokenList.add(t);}|
- t = <LessThanOrEq> {System.out.println("T_LessThanOrEq");tokenList.add(t);}|
- t = <GreatThanOrEq> {System.out.println("T_GreaterThanOrEq");tokenList.add(t);}|
- t = <Comma> {System.out.println("T_Comma");tokenList.add(t);}|
- t = <LeftCurlyBracket> {System.out.println("T_LeftCurlyBracket");tokenList.add(t);}|
- t = <RightCurlyBracket> {System.out.println("T_RightCurlyBracket");tokenList.add(t);}|
- t = <EqualsAssign> {System.out.println("T_EqualsAssign");tokenList.add(t);}|
- t = <Plus> {System.out.println("T_Plus");tokenList.add(t);}|
- t = <Multiply> {System.out.println("T_Multiply");tokenList.add(t);}|
- t = <Minus> {System.out.println("T_Minus");tokenList.add(t);}|
- t = <Divide> {System.out.println("T_Divide");tokenList.add(t);}
- )*
- }
- void KeyWords() :
- {
- }
- {
- (t = <Def> {System.out.println("T_Def"); tokenList.add(t);}|
- t = <If> {System.out.println("T_If");tokenList.add(t);}|
- t = <Then> {System.out.println("T_Then");tokenList.add(t);}|
- t = <Else> {System.out.println("T_Else");tokenList.add(t);}|
- t = <Skip> {System.out.println("T_Skip");tokenList.add(t);}|
- t = <While> {System.out.println("T_While");tokenList.add(t);}|
- t = <Do> {System.out.println("T_Do");tokenList.add(t);}|
- t = <Repeat> {System.out.println("T_Repeat");tokenList.add(t);} |
- t = <Until> {System.out.println("T_Until");tokenList.add(t);} |
- t = <Break> {System.out.println("T_Break");tokenList.add(t);}|
- t = <Continue> {System.out.println("T_Continue");tokenList.add(t);})*
- }
- void Integer() :
- {
- }
- {
- (
- (
- t = <Integer> {System.out.println("T_Integer");tokenList.add(t);}
- )
- (
- SKIP
- (
- t = <Identifier> {System.out.println("T_Identifier ( " + t.image.toString() + ")");tokenList.add(t);}
- )
- )*
- )
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement