options { JAVA_UNICODE_ESCAPE = true; } PARSER_BEGIN(RalfIIParser) public class RalfIIParser {} PARSER_END(RalfIIParser) SKIP : /* WHITE SPACE */ { " " | "\t" | "\n" | "\r" | "\f" } SPECIAL_TOKEN : /* COMMENTS */ { | | } TOKEN : { < COLON: ":" > | < SEMICOLON: ";" > | < ASSIGN: ":=" > | < SET : "set" > | < PARAM : "param" > | < CALLERSAVE: "callerSave" > | < FREQ: "freq" > | < LIVE: "Live" > | < LIVEHARDREG: "LiveHardReg" > | < BASEPSEUDOREG: "basePseudoReg" > | < BASEHARDREG: "baseHardReg" > | < REQ: "req" > | < HRREQ: "HRreq" > | < PREVINST: "prevInst" > | < PREVINSTS: "prevInsts" > | < DEF: "def" > | < DEFHARDREG: "defHardReg" > | < LSMPSEUDOS: "lsmPseudos" > | < MEMPSEUDOS: "memPseudos" > | < NSEDGE: "nsEdge" > | < EQUIV: "equiv" > | < KNOWNSTORES: "knownStores" > | < KNOWNHARDSTORES: "knownHardStores" > | < KNOWNLOADS: "knownLoads" > | < JUMPINST: "jumpInst" > | < CALLINST: "callInst" > | < MOVEINST: "Moves" > | < PSEUDOS: "pseudos"> | < LOC: "Loc"> | < INSTS: "insts"> | < REGS: "regs"> | | | | | | | | | | | } TOKEN : /* LITERALS */ { < INTEGER_LITERAL: ( ["1"-"9"] (["0"-"9"])* | "0" ) > } TOKEN : /* IDENTIFIERS */ { < IDENTIFIER: (|)* > | < #LETTER: [ "\u0024", "\u0041"-"\u005a", "\u005f", "\u0061"-"\u007a", "\u00c0"-"\u00d6", "\u00d8"-"\u00f6", "\u00f8"-"\u00ff", "\u0100"-"\u1fff", "\u3040"-"\u318f", "\u3300"-"\u337f", "\u3400"-"\u3d2d", "\u4e00"-"\u9fff", "\uf900"-"\ufaff" ] > | < #DIGIT: [ "\u0030"-"\u0039", "\u0660"-"\u0669", "\u06f0"-"\u06f9", "\u0966"-"\u096f", "\u09e6"-"\u09ef", "\u0a66"-"\u0a6f", "\u0ae6"-"\u0aef", "\u0b66"-"\u0b6f", "\u0be7"-"\u0bef", "\u0c66"-"\u0c6f", "\u0ce6"-"\u0cef", "\u0d66"-"\u0d6f", "\u0e50"-"\u0e59", "\u0ed0"-"\u0ed9", "\u1040"-"\u1049" ] > } /************************************ * The MiniJava Grammar Starts Here * ************************************/ void Goal() : {} { scalarParams() setCollection() paramCollection() } void setCollection() : {} { pseudoSet() locSet() instSet() regSet() } void paramCollection(): {} { callerSaveParam() freqParam() liveParam() liveHardRegParam() basePseudoRegParam() baseHardRegParam() reqParam() HRreqParam() prevInstParam() prevInstsParam() defParam() defHardRegParam() lsmPseudosParam() memPseudosParam() nsEdgeParam() equivParam() knownStoresParam() knownHardStoresParam() knownLoadsParam() jumpInstParam() callInstParam() moveInstParam() } void pseudoSet() : {} { (pseudo())* } void regSet() : {} { (register())* } void locSet() : {} { (location())* } void instSet() : {} { (instruction())* } void callerSaveParam() : {} { ()? (callerSaveInfo())* } void freqParam() : {} { (freqInfo())* } void liveParam() : {} { (liveInfo())* } void liveHardRegParam() : {} { (liveHardRegInfo())* } void basePseudoRegParam() : {} { (basePseudoRegInfo())* } void baseHardRegParam() : {} { (baseHardRegInfo())* } void reqParam(): {} { (reqInfo())* } void HRreqParam(): {} { (HRreqInfo())* } void prevInstParam() : {} { (prevInstInfo())* } void prevInstsParam() : {} { (prevInstsInfo())* } void defParam() : {} { (defInfo())* } void defHardRegParam() : {} { (defHardRegInfo())* } void lsmPseudosParam() : {} { (lsmPseudoInfo())* } void memPseudosParam() : {} { (memPseudoInfo())* } void nsEdgeParam() : {} { (nsEdgeInfo())* } void equivParam() : {} { (equivInfo())* } void knownStoresParam() : {} { (knownStoreInfo())* } void knownHardStoresParam() : {} { (knownHardStoreInfo())* } void knownLoadsParam() : {} { (knownLoadInfo())* } void jumpInstParam() : {} { (jumpInstInfo())* } void callInstParam() : {} { (callInstInfo())* } void moveInstParam() : {} { (moveInstInfo())* } void scalarParams() : {} { value() value() value() value() value() value() value() value() value() value() value() } void callerSaveInfo() : {} { register() value() } void callInstInfo() : {} { instruction() value() } void moveInstInfo() : {} { instruction() value() } void jumpInstInfo() : {} { instruction() value() } void freqInfo() : {} { instruction() value() } void liveInfo(): {} { instruction() pseudo() value() }void reqInfo(): {} { instruction() pseudo() value() }void defInfo(): {} { instruction() pseudo() value() }void knownLoadInfo(): {} { instruction() pseudo() value() } void liveHardRegInfo(): {} { instruction() register() value() }void defHardRegInfo(): {} { instruction() register() value() }void HRreqInfo(): {} { instruction() register() value() } void basePseudoRegInfo() : {} { pseudo() pseudo() }void equivInfo() : {} { pseudo() pseudo() } void baseHardRegInfo() : {} { pseudo() register() } void prevInstInfo() : {} { instruction() instruction() value() }void prevInstsInfo() : {} { instruction() instruction() value() } void lsmPseudoInfo() : {} { pseudo() value() }void memPseudoInfo() : {} { pseudo() value() }void nsEdgeInfo() : {} { pseudo() pseudo() value() } void knownStoreInfo() : {} { instruction() pseudo() pseudo() value() } void knownHardStoreInfo() : {} { instruction() pseudo() pseudo() value() } void value() : {} { } void instruction() : {} { } void pseudo() : {} { } void register() : {} { } void location() : {} { }