forked from GitHub/gf-core
unix command grammar started
This commit is contained in:
24
examples/unix/Unix.gf
Normal file
24
examples/unix/Unix.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
30
examples/unix/UnixEng.gf
Normal file
30
examples/unix/UnixEng.gf
Normal file
@@ -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" ;
|
||||
|
||||
}
|
||||
30
examples/unix/UnixUni.gf
Normal file
30
examples/unix/UnixUni.gf
Normal file
@@ -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 [] ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user