Package SmallLang; Tokens while = 'while'; begin = 'begin'; end = 'end'; do = 'do'; if = 'if'; then = 'then'; else = 'else'; semi = ';'; assign = '='; whitespace = (' ' | '\t' | '\n')+; id = ['a'..'z'](['a'..'z']|['0'..'9'])*; Ignored Tokens whitespace; Productions prog = stmlist; stm = {assign} [left]:id assign [right]:id | {while} while id do stm | {begin} begin stmlist end | {if_then} if id then stm; stmlist = {stmt} stm | {stmtlist} stmlist semi stm;