// Homework 5 solution // J. Dean Brock COMPILER tingle CHARACTERS letter = 'A'..'Z' + 'a'..'z' . digit = '0'..'9' . TOKENS hostname = letter { letter } . number = digit { digit } . compare = '<' | '>' . updown = '+' | '-' . IGNORE '\t' + '\r' + ' ' PRODUCTIONS TingleExpr = TingleTerm { '|' (. System.out.print("| ") ; .) TingleTerm } . TingleTerm = TingleFactor { "&" (. System.out.print("& ") ; .) TingleFactor } . TingleFactor = ( TingleTest | '~' (. System.out.print("~ ") ; .) TingleFactor | '(' (. System.out.print("( ") ; .) TingleExpr ')' (. System.out.print(") ") ; .) ) . TingleTest = updown hostname "[" compare number "]" . tingle = { TingleExpr '\n' (. System.out.println() ; .) } . END tingle .