From e07d9dea344e79bfa90def98d965d422b288f600 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 12 Apr 2006 21:14:32 +0000 Subject: [PATCH] unix command grammar started --- examples/unix/Unix.gf | 24 ++++++++++++++++++++++++ examples/unix/UnixEng.gf | 30 ++++++++++++++++++++++++++++++ examples/unix/UnixUni.gf | 30 ++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 examples/unix/Unix.gf create mode 100644 examples/unix/UnixEng.gf create mode 100644 examples/unix/UnixUni.gf diff --git a/examples/unix/Unix.gf b/examples/unix/Unix.gf new file mode 100644 index 000000000..c1ddd742b --- /dev/null +++ b/examples/unix/Unix.gf @@ -0,0 +1,24 @@ +abstract Unix = { + + cat + S ; + Line ; + Command ; + File ; + + fun + Pipe : Command -> S -> S ; + Comm : Command -> S ; + + WhatTime : Command ; + WhatDate : Command ; + WhereNow : Command ; + Remove : File -> Command ; + Copy : File -> File -> Command ; + Linecount : File -> Command ; + Wordcount : File -> Command ; + + Name : String -> File ; + It : File ; + +} diff --git a/examples/unix/UnixEng.gf b/examples/unix/UnixEng.gf new file mode 100644 index 000000000..3bed08bc5 --- /dev/null +++ b/examples/unix/UnixEng.gf @@ -0,0 +1,30 @@ +--# -path=.:prelude + +concrete UnixEng of Unix = open Prelude in { + + flags unlexer=textlit ; lexer=textlit ; + +{- + lincat + Line ; + [Command] {1} ; + Command ; + File ; +-} + + lin + Pipe = infixSS "then" ; + Comm c = c ; + + WhatTime = ss ["what time is it"] ; + WhatDate = ss ["what date is it"] ; + WhereNow = ss ["where am I now"] ; + Remove = prefixSS "remove" ; + Copy x y = ss ("copy" ++ x.s ++ "to" ++ y.s) ; + Linecount = prefixSS ["how many lines has"] ; + Wordcount = prefixSS ["how many words has"] ; + + Name x = x ; + It = ss "it" ; + +} diff --git a/examples/unix/UnixUni.gf b/examples/unix/UnixUni.gf new file mode 100644 index 000000000..e0898853f --- /dev/null +++ b/examples/unix/UnixUni.gf @@ -0,0 +1,30 @@ +--# -path=.:prelude + +concrete UnixUni of Unix = open Prelude in { + + flags unlexer=codelit ; lexer=codelit ; + +{- + lincat + Line ; + [Command] {1} ; + Command ; + File ; +-} + + lin + Pipe = infixSS "|" ; + Comm c = c ; + + WhatTime = ss ["date +%D"] ; + WhatDate = ss ["date +%T"] ; + WhereNow = ss ["pwd"] ; + Remove = prefixSS "rm" ; + Copy x y = ss ("cp" ++ x.s ++ y.s) ; + Linecount = prefixSS ["wc -l"] ; + Wordcount = prefixSS ["wc -w"] ; + + Name x = x ; + It = ss [] ; + +}