*** empty log message ***
[m17n/m17n-lib-cs.git] / xex.txt
diff --git a/xex.txt b/xex.txt
index 950fa79..7e947af 100644 (file)
--- a/xex.txt
+++ b/xex.txt
@@ -1,9 +1,7 @@
 EXPR =
   '<expr>' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '</expr>'
 
-TERM = [ VAR | DIRECT | FUNCALL ]
-
-TYPE = 'integer' | 'string' | 'boolean' | 'symbol' | 'list'
+TERM = [ VAR | INT | STRING | SYMBOL | LIST | FUNCALL ]
 
 DEFUN =
   '<defun fname="' FUNCNAME ? ">'
@@ -24,7 +22,7 @@ REST =
 BODY =
   '<body>' TERM * '</body>'
 
-DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL
+DEFVAR = DEFVAR-INT DEFVAR-STR
 
 DEFVAR-INT =
   '<defvar vname="' VARNAME '">'
@@ -40,35 +38,22 @@ DEFVAR-STR =
   <possible-value> STR * </possible-value>
   '</defvar>'
 
-DEFVAR-BOOL =
-  '<defvar vname"' VARNAME '">'
-  DESCRIPTION ?
-  BOOL ?
-  '</defvar>'
-
 DESCRIPTION =
-  '<description>' TEXT '</description>'
+  '<description>' [ TEXT | GETTEXT ] '</description>'
+
+GETTEXT =
+  '<gettext>' TEXT '</gettext>'
 
 VAR =
   '<variable vname="' NAME '"/>'
-
-DIRECT = INT STR BOOL SYMBOL LIST
-
 INT =
   '<integer>' INTEGER '</integer>'
 STR =
   '<string>' STRING '</string>'
-BOOL =
-  '<boolean>' [ 'true' | 'false' ] </boolean>
 SYMBOL =
   '<symbol>' NAME '</symbol>'
 LIST =
   '<list>' TERM * '</list>' | <list/>
-TYPE =
-  '<type>' 
-  [ 'integer' | 'string' | 'boolean' | 'symbol' | 'list'
-    | 'variable' | 'funcall' ]
-  '</type>'
 
 FUNCALL =
   '<funcall fname="' PREDEFINED-FUNC-NAME '">' TERM * '</funcall>'
@@ -83,13 +68,10 @@ PREDEFINED-FUNC-SYMBOL =
   | 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
   | 'logand' | 'logior' | 'logxor' | 'lsh'
   | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
-  | 'tolist' | 'tostring'
-  | 'copy' | 'append'
-  | 'ins' | 'del'
-  | 'cons' | 'car' | 'cdr' | 'nth'
+  | 'append' | 'concat' | 'nth'  | 'copy' | 'ins' | 'del'
   | 'case' | 'cond' | 'if' | 'progn' | 'when'
   | 'while' | 'for' | 'foreach'
-  | 'typeof'
+  | 'type'
 
 PREDEFINED-FUNC-NAME =
   PREDEFINED-FUNC-SYMBOL
@@ -101,24 +83,15 @@ PREDEFINED-FUNC-NAME =
   | '+=' | '-=' | '*=' | '/=' | '%='
   | '&=' | '|=' | '~=' | '<<=' | '>>='
 
-(set SYMBOL TERM)
-(and TERM *) (or TERM *) (not TERM)
-
-ARITH =
-  'add' | 'sub' | 'mul' | 'div' | 'mod' | 'add' | 'sub' | 'mul' | 'div' | 'mod'
-  | 'logand' | 'logior' | 'logxor' | 'lsh'
-  
-ARITH-SET =
-  'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
-  | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
-
-ARITH-ARG = [ INT | VAR | FUNCALL ]
-
-(lt ARITH-ARG *) (le ARITH-ARG *) (eq ARITH-ARG *)
-  (ge ARITH-ARG *) (gt ARITH-ARG *)
-(add ARITH-ARG *) (sub ARITH-ARG *) (mul ARITH-ARG *) (div ARITH-ARG *)
-  (mod ARITH-ARG *)
-(add-set SYMBOL ARITH-ARG *) (sub-set SYMBOL ARITH-ARG *)
-  (mul-set SYMBOL ARITH-ARG *) (div-set SYMBOL ARITH-ARG *)
-  (mod-set SYMBOL ARITH-ARG *)
-(logand ARITH-ARG
+TRUE =
+  '<integer>0</integer>' 
+FALSE =
+  '<integer>1</integer>' 
+
+;; TERM can be evaluated and the value is TERM.
+;; INT is evaluated to itself.
+;; STRING is evaluated to itself.
+;; SYMBOL is evaluated to itself.
+;; LIST is evaluated to itself.
+;; VAR is evaluated to TERM that is set to that variable.
+;; FUNCALL is evaluated to TERM returned by that function.