From 778b73af8cd74791c5d2f8cc520d82e3b4e1f5de Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Tue, 8 Dec 2009 10:46:50 -0500 Subject: Context globals; ctype functions --- lib/js/urweb.js | 14 ++++++++++++++ lib/ur/basis.urs | 18 ++++++++++++++++++ lib/ur/char.ur | 16 ++++++++++++++++ lib/ur/char.urs | 16 ++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 lib/ur/char.ur create mode 100644 lib/ur/char.urs (limited to 'lib') diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 863271d9..15c9df7e 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -23,6 +23,20 @@ function mod(x, y) { return x % y; } function lt(x, y) { return x < y; } function le(x, y) { return x <= y; } +// Characters + +function isLower(c) { return c >= 'a' && c <= 'z'; } +function isUpper(c) { return c >= 'A' && c <= 'Z'; } +function isAlpha(c) { return isLower(c) || isUpper(c); } +function isDigit(c) { return c >= '0' && c <= '9'; } +function isAlnum(c) { return isAlpha(c) || isDigit(c); } +function isBlank(c) { return c == ' ' || c == '\t'; } +function isSpace(c) { return isBlank(c) || c == '\r' || c == '\n'; } +function isXdigit(c) { return isDigit(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); } +function toLower(c) { return c.toLowercase(); } +function toUpper(c) { return c.toUppercase(); } + + // Lists function cons(v, ls) { diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs index 31aa4cdd..200d9896 100644 --- a/lib/ur/basis.urs +++ b/lib/ur/basis.urs @@ -52,6 +52,24 @@ val ord_time : ord time val mkOrd : t ::: Type -> {Lt : t -> t -> bool, Le : t -> t -> bool} -> ord t +(** Character operations *) + +val isalnum : char -> bool +val isalpha : char -> bool +val isblank : char -> bool +val iscntrl : char -> bool +val isdigit : char -> bool +val isgraph : char -> bool +val islower : char -> bool +val isprint : char -> bool +val ispunct : char -> bool +val isspace : char -> bool +val isupper : char -> bool +val isxdigit : char -> bool +val tolower : char -> char +val toupper : char -> char + + (** String operations *) val strlen : string -> int diff --git a/lib/ur/char.ur b/lib/ur/char.ur new file mode 100644 index 00000000..29e181e6 --- /dev/null +++ b/lib/ur/char.ur @@ -0,0 +1,16 @@ +type t = char + +val isAlnum = Basis.isalnum +val isAlpha = Basis.isalpha +val isBlank = Basis.isblank +val isCntrl = Basis.iscntrl +val isDigit = Basis.isdigit +val isGraph = Basis.isgraph +val isLower = Basis.islower +val isPrint = Basis.isprint +val isPunct = Basis.ispunct +val isSpace = Basis.isspace +val isUpper = Basis.isupper +val isXdigit = Basis.isxdigit +val toLower = Basis.tolower +val toUpper = Basis.toupper diff --git a/lib/ur/char.urs b/lib/ur/char.urs new file mode 100644 index 00000000..02e55632 --- /dev/null +++ b/lib/ur/char.urs @@ -0,0 +1,16 @@ +type t = char + +val isAlnum : t -> bool +val isAlpha : t -> bool +val isBlank : t -> bool +val isCntrl : t -> bool +val isDigit : t -> bool +val isGraph : t -> bool +val isLower : t -> bool +val isPrint : t -> bool +val isPunct : t -> bool +val isSpace : t -> bool +val isUpper : t -> bool +val isXdigit : t -> bool +val toLower : t -> t +val toUpper : t -> t -- cgit v1.2.3