module languages/pico/syntax/Pico imports languages/pico/syntax/Identifiers imports languages/pico/syntax/Types imports basic/NatCon imports basic/StrCon imports basic/Whitespace hiddens context-free start-symbols PROGRAM exports sorts PROGRAM DECLS ID-TYPE STATEMENT EXP context-free syntax "begin" DECLS {STATEMENT";" }* "end" -> PROGRAM "declare" {ID-TYPE "," }*";" -> DECLS PICO-ID ":" TYPE -> ID-TYPE context-free syntax PICO-ID ":=" EXP -> STATEMENT "if" EXP "then" {STATEMENT";" }* "else" {STATEMENT";" }* "fi" -> STATEMENT "while" EXP "do" {STATEMENT ";" }* "od" -> STATEMENT context-free syntax PICO-ID -> EXP NatCon -> EXP StrCon -> EXP EXP "+" EXP -> EXP {left} EXP "-" EXP -> EXP {left} EXP "||" EXP -> EXP {left} "(" EXP ")" -> EXP {bracket} context-free priorities EXP "||" EXP -> EXP > EXP "-" EXP -> EXP > EXP "+" EXP -> EXP