-#------------------------------------------------------------------------------
-# Macro Tests
-#------------------------------------------------------------------------------
-# Macro Definitions
-% if ( cond, branch1:Block ) {
- exec_if( cond, branch1 )
-}
-
-% ifelse ( cond, branch1:Block, branch2:Block ) {
- exec_if( cond, branch1, branch2 )
-}
-
-% foreach ( lst, fn:Block ) {
- for_each(fn, lst)
-}
-
-# Macro Uses
-if (1 == 1)
-{
- print("1 Hello, World!")
-}
-
-if (1 == 1)
-{
-
-}
-else
-{
-
-}
-
-if (1 == 0)
-{
- print("Hello, World!")
-}
-
-ifelse (1 == 1)
-{
- print("2 Hello, World!")
-}{
- error("Incorrect branch was taken.")
-}
-
-ifelse (1 == 0)
-{
- error("Incorrect branch was taken.")
-}{
- print("3 Hello, World!")
-}
-
-#------------------------------------------------------------------------------
-# Collection Access and Iteration Tests
-#------------------------------------------------------------------------------
-# Accessing elements of lists, vectors, and strings
-lst1 = `(4,5,6)
-print(lst1[0], " Hello, World!")
-
-vec1 = [4,5,6]
-print(vec1[1], " Hello, World!")
-
-str1 = "456"
-print(str1[2], " Hello, World!")
-
-# Iterating over lists, vectors, and strings
-lst_foo = `(7,8,9,10)
-foreach lst_foo { |a|
- print(a," Hello, World!")
-}
-
-vec_foo = [11,12,13,14,15]
-foreach vec_foo { |a,b|
- print(b," Hello, World!")
-}
-
-str_foo = "6789"
-foreach str_foo { |a|
- print(1,a," Hello, World!")
-}
-
-#------------------------------------------------------------------------------
-# Delayed Evaluation
-#------------------------------------------------------------------------------
-#% delay ( exp ) {
-# make_promise({ exp })
-#}
-#
-#% force ( prom ) {
-# force( prom )
-#}
-#
-#foo = delay nonexistent_var + 1
-#nonexistent_var = 19
-#assert( typeof(foo) == Block )
-#assert( typeof( force foo ) == Num )
-#print( force( foo ), " Hello, World!" )
-
-#------------------------------------------------------------------------------
-# Type Checking Tests
-#------------------------------------------------------------------------------
-assert( typeof( 1.1 ) == Num )
-assert( typeof( 'A' ) == Char )
-assert( typeof( `(1,2,3) ) == List )
-assert( typeof( [1,2,3] ) == Vector )
-assert( typeof( $Foo ) == Symbol )
-assert( typeof( {|a| a + 1} ) == Block )
-
+foo = ()
+foo = (1,2,3)
+foo = []
+foo = [1,2,3]
+foo = ""
+foo = "123"
+foo = 'a'
+foo = 1.0
+foo = $foo
+foo[0]
+
+foo = 1 + 1 * 1 - 1
match(ASSIGN);
ret = _new AST( ASSIGN, 2, id_node, Expression());
}
- else if( (lookaheadType(1) == MACRO) && (lookaheadType(2) == ID))
- {
- ret = MacroDefinition();
- }
- else if( isMacro( lookaheadToken(1) ) )
- {
- ret = MacroExpansion();
- }
+ //else if( (lookaheadType(1) == MACRO) && (lookaheadType(2) == ID))
+ //{
+ // ret = MacroDefinition();
+ //}
+ //else if( isMacro( lookaheadToken(1) ) )
+ //{
+ // ret = MacroExpansion();
+ //}
else
{
ret = LogicalExpr();
AST* DLParser::GroupExpr(void)
{
AST* ret = NULL;
- if(lookaheadType(1) == LPAR)
- {
- match(LPAR);
- ret = LogicalExpr();
- match(RPAR);
- }
- else
+ //if(lookaheadType(1) == LPAR)
+ //{
+ // match(LPAR);
+ // ret = LogicalExpr();
+ // match(RPAR);
+ //}
+ //else
{
ret = Literal();
if( lookaheadType(1) == LPAR )
break;
// Literal = ListLiteral
- case LIST:
+ case LPAR:
node = ListLiteral();
break;
AST* DLParser::ListLiteral(void)
{
AST* ret = NULL;
- match(LIST);
match(LPAR);
ret = ExpList(LIST, RPAR);
match(RPAR);