*** empty log message ***
This commit is contained in:
parent
67c78232b2
commit
33dd3d9677
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c,v 1.88 2006-10-28 05:24:07 bacon Exp $
|
* $Id: awk.c,v 1.89 2006-10-28 12:17:24 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(__BORLANDC__)
|
#if defined(__BORLANDC__)
|
||||||
@ -120,7 +120,6 @@ ase_awk_t* ase_awk_open (const ase_awk_syscas_t* syscas)
|
|||||||
awk->token.line = 0;
|
awk->token.line = 0;
|
||||||
awk->token.column = 0;
|
awk->token.column = 0;
|
||||||
|
|
||||||
awk->src.ios = ASE_NULL;
|
|
||||||
awk->src.lex.curc = ASE_CHAR_EOF;
|
awk->src.lex.curc = ASE_CHAR_EOF;
|
||||||
awk->src.lex.ungotc_count = 0;
|
awk->src.lex.ungotc_count = 0;
|
||||||
awk->src.lex.line = 1;
|
awk->src.lex.line = 1;
|
||||||
@ -131,6 +130,9 @@ ase_awk_t* ase_awk_open (const ase_awk_syscas_t* syscas)
|
|||||||
awk->bfn.sys = ASE_NULL;
|
awk->bfn.sys = ASE_NULL;
|
||||||
awk->bfn.user = ASE_NULL;
|
awk->bfn.user = ASE_NULL;
|
||||||
|
|
||||||
|
awk->parse.depth.loop = 0;
|
||||||
|
awk->parse.depth.expr = 0;
|
||||||
|
|
||||||
awk->run.count = 0;
|
awk->run.count = 0;
|
||||||
awk->run.ptr = ASE_NULL;
|
awk->run.ptr = ASE_NULL;
|
||||||
|
|
||||||
@ -170,7 +172,7 @@ int ase_awk_clear (ase_awk_t* awk)
|
|||||||
awk->bfn.user
|
awk->bfn.user
|
||||||
*/
|
*/
|
||||||
|
|
||||||
awk->src.ios = ASE_NULL;
|
ASE_AWK_MEMSET (awk, &awk->src.ios, 0, ase_sizeof(awk->src.ios));
|
||||||
awk->src.lex.curc = ASE_CHAR_EOF;
|
awk->src.lex.curc = ASE_CHAR_EOF;
|
||||||
awk->src.lex.ungotc_count = 0;
|
awk->src.lex.ungotc_count = 0;
|
||||||
awk->src.lex.line = 1;
|
awk->src.lex.line = 1;
|
||||||
@ -183,6 +185,7 @@ int ase_awk_clear (ase_awk_t* awk)
|
|||||||
ase_awk_tab_clear (&awk->parse.params);
|
ase_awk_tab_clear (&awk->parse.params);
|
||||||
|
|
||||||
awk->parse.nlocals_max = 0;
|
awk->parse.nlocals_max = 0;
|
||||||
|
awk->parse.depth.expr = 0;
|
||||||
awk->parse.depth.loop = 0;
|
awk->parse.depth.loop = 0;
|
||||||
|
|
||||||
/* clear parse trees */
|
/* clear parse trees */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk_i.h,v 1.75 2006-10-27 10:28:52 bacon Exp $
|
* $Id: awk_i.h,v 1.76 2006-10-28 12:17:24 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ASE_AWK_AWKI_H_
|
#ifndef _ASE_AWK_AWKI_H_
|
||||||
@ -110,11 +110,13 @@ struct ase_awk_t
|
|||||||
{
|
{
|
||||||
int block;
|
int block;
|
||||||
int loop;
|
int loop;
|
||||||
|
int stmnt; /* statement */
|
||||||
} id;
|
} id;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
ase_size_t loop;
|
ase_size_t loop;
|
||||||
|
ase_size_t expr; /* expression */
|
||||||
} depth;
|
} depth;
|
||||||
|
|
||||||
ase_awk_tab_t globals;
|
ase_awk_tab_t globals;
|
||||||
@ -128,7 +130,7 @@ struct ase_awk_t
|
|||||||
/* source code management */
|
/* source code management */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
ase_awk_srcios_t* ios;
|
ase_awk_srcios_t ios;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
125
ase/awk/parse.c
125
ase/awk/parse.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: parse.c,v 1.197 2006-10-27 13:49:43 bacon Exp $
|
* $Id: parse.c,v 1.198 2006-10-28 12:17:24 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ase/awk/awk_i.h>
|
#include <ase/awk/awk_i.h>
|
||||||
@ -120,6 +120,8 @@ struct __binmap_t
|
|||||||
int binop;
|
int binop;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int __parse (ase_awk_t* awk);
|
||||||
|
|
||||||
static ase_awk_t* __parse_progunit (ase_awk_t* awk);
|
static ase_awk_t* __parse_progunit (ase_awk_t* awk);
|
||||||
static ase_awk_t* __collect_globals (ase_awk_t* awk);
|
static ase_awk_t* __collect_globals (ase_awk_t* awk);
|
||||||
static ase_awk_t* __add_builtin_globals (ase_awk_t* awk);
|
static ase_awk_t* __add_builtin_globals (ase_awk_t* awk);
|
||||||
@ -136,8 +138,9 @@ static ase_awk_chain_t* __parse_pattern_block (
|
|||||||
static ase_awk_nde_t* __parse_block (ase_awk_t* awk, ase_bool_t is_top);
|
static ase_awk_nde_t* __parse_block (ase_awk_t* awk, ase_bool_t is_top);
|
||||||
static ase_awk_nde_t* __parse_statement (ase_awk_t* awk);
|
static ase_awk_nde_t* __parse_statement (ase_awk_t* awk);
|
||||||
static ase_awk_nde_t* __parse_statement_nb (ase_awk_t* awk);
|
static ase_awk_nde_t* __parse_statement_nb (ase_awk_t* awk);
|
||||||
static ase_awk_nde_t* __parse_expression (ase_awk_t* awk);
|
|
||||||
|
|
||||||
|
static ase_awk_nde_t* __parse_expression (ase_awk_t* awk);
|
||||||
|
static ase_awk_nde_t* __parse_expression0 (ase_awk_t* awk);
|
||||||
static ase_awk_nde_t* __parse_basic_expr (ase_awk_t* awk);
|
static ase_awk_nde_t* __parse_basic_expr (ase_awk_t* awk);
|
||||||
|
|
||||||
static ase_awk_nde_t* __parse_binary_expr (
|
static ase_awk_nde_t* __parse_binary_expr (
|
||||||
@ -316,15 +319,31 @@ static struct __bvent __bvtab[] =
|
|||||||
|
|
||||||
int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
|
int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
|
||||||
{
|
{
|
||||||
int n = 0, op;
|
int n;
|
||||||
|
|
||||||
ASE_AWK_ASSERT (awk, srcios != ASE_NULL && srcios->in != ASE_NULL);
|
ASE_AWK_ASSERT (awk, srcios != ASE_NULL && srcios->in != ASE_NULL);
|
||||||
|
ASE_AWK_ASSERT (awk, awk->parse.depth.loop == 0);
|
||||||
|
ASE_AWK_ASSERT (awk, awk->parse.depth.expr == 0);
|
||||||
|
|
||||||
ase_awk_clear (awk);
|
ase_awk_clear (awk);
|
||||||
awk->src.ios = srcios;
|
ASE_AWK_MEMCPY (awk, &awk->src.ios, srcios, ase_sizeof(awk->src.ios));
|
||||||
|
|
||||||
op = awk->src.ios->in (
|
n = __parse (awk);
|
||||||
ASE_AWK_IO_OPEN, awk->src.ios->custom_data, ASE_NULL, 0);
|
|
||||||
|
ASE_AWK_ASSERT (awk, awk->parse.depth.loop == 0);
|
||||||
|
ASE_AWK_ASSERT (awk, awk->parse.depth.expr == 0);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __parse (ase_awk_t* awk)
|
||||||
|
{
|
||||||
|
int n = 0, op;
|
||||||
|
|
||||||
|
ASE_AWK_ASSERT (awk, awk->src.ios.in != ASE_NULL);
|
||||||
|
|
||||||
|
op = awk->src.ios.in (
|
||||||
|
ASE_AWK_IO_OPEN, awk->src.ios.custom_data, ASE_NULL, 0);
|
||||||
if (op == -1)
|
if (op == -1)
|
||||||
{
|
{
|
||||||
/* cannot open the source file.
|
/* cannot open the source file.
|
||||||
@ -374,7 +393,7 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
|
|||||||
|
|
||||||
awk->tree.nglobals = ase_awk_tab_getsize(&awk->parse.globals);
|
awk->tree.nglobals = ase_awk_tab_getsize(&awk->parse.globals);
|
||||||
|
|
||||||
if (awk->src.ios->out != ASE_NULL)
|
if (awk->src.ios.out != ASE_NULL)
|
||||||
{
|
{
|
||||||
if (__deparse (awk) == -1)
|
if (__deparse (awk) == -1)
|
||||||
{
|
{
|
||||||
@ -384,8 +403,8 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
|
|||||||
}
|
}
|
||||||
|
|
||||||
exit_parse:
|
exit_parse:
|
||||||
if (awk->src.ios->in (
|
if (awk->src.ios.in (
|
||||||
ASE_AWK_IO_CLOSE, awk->src.ios->custom_data, ASE_NULL, 0) == -1)
|
ASE_AWK_IO_CLOSE, awk->src.ios.custom_data, ASE_NULL, 0) == -1)
|
||||||
{
|
{
|
||||||
if (n != -1)
|
if (n != -1)
|
||||||
{
|
{
|
||||||
@ -1155,7 +1174,10 @@ static ase_awk_nde_t* __parse_statement (ase_awk_t* awk)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int old_id = awk->parse.id.stmnt;
|
||||||
|
awk->parse.id.stmnt = awk->token.type;
|
||||||
nde = __parse_statement_nb (awk);
|
nde = __parse_statement_nb (awk);
|
||||||
|
awk->parse.id.stmnt = old_id;
|
||||||
awk->parse.nl_semicolon = 0;
|
awk->parse.nl_semicolon = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1166,9 +1188,7 @@ static ase_awk_nde_t* __parse_statement_nb (ase_awk_t* awk)
|
|||||||
{
|
{
|
||||||
ase_awk_nde_t* nde;
|
ase_awk_nde_t* nde;
|
||||||
|
|
||||||
/*
|
/* keywords that don't require any terminating semicolon */
|
||||||
* keywords that don't require any terminating semicolon
|
|
||||||
*/
|
|
||||||
if (MATCH(awk,TOKEN_IF))
|
if (MATCH(awk,TOKEN_IF))
|
||||||
{
|
{
|
||||||
if (__get_token(awk) == -1) return ASE_NULL;
|
if (__get_token(awk) == -1) return ASE_NULL;
|
||||||
@ -1196,9 +1216,7 @@ static ase_awk_nde_t* __parse_statement_nb (ase_awk_t* awk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
awk->parse.nl_semicolon = 1;
|
awk->parse.nl_semicolon = 1;
|
||||||
/*
|
/* keywords that require a terminating semicolon */
|
||||||
* keywords that require a terminating semicolon
|
|
||||||
*/
|
|
||||||
if (MATCH(awk,TOKEN_DO))
|
if (MATCH(awk,TOKEN_DO))
|
||||||
{
|
{
|
||||||
if (__get_token(awk) == -1) return ASE_NULL;
|
if (__get_token(awk) == -1) return ASE_NULL;
|
||||||
@ -1281,6 +1299,17 @@ awk->parse.nl_semicolon = 0;
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ase_awk_nde_t* __parse_expression (ase_awk_t* awk)
|
static ase_awk_nde_t* __parse_expression (ase_awk_t* awk)
|
||||||
|
{
|
||||||
|
ase_awk_nde_t* nde;
|
||||||
|
|
||||||
|
awk->parse.depth.expr++;
|
||||||
|
nde = __parse_expression0 (awk);
|
||||||
|
awk->parse.depth.expr--;
|
||||||
|
|
||||||
|
return nde;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ase_awk_nde_t* __parse_expression0 (ase_awk_t* awk)
|
||||||
{
|
{
|
||||||
ase_awk_nde_t* x, * y;
|
ase_awk_nde_t* x, * y;
|
||||||
ase_awk_nde_ass_t* nde;
|
ase_awk_nde_ass_t* nde;
|
||||||
@ -2193,12 +2222,15 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk)
|
|||||||
|
|
||||||
ase_awk_nde_grp_t* tmp;
|
ase_awk_nde_grp_t* tmp;
|
||||||
|
|
||||||
/* TODO: how to handle this situation??? */
|
if ((awk->parse.id.stmnt != TOKEN_PRINT &&
|
||||||
if (/*!MATCH(awk,TOKEN_SEMICOLON) &&*/
|
awk->parse.id.stmnt != TOKEN_PRINTF) ||
|
||||||
!MATCH(awk,TOKEN_IN))
|
awk->parse.depth.expr != 1)
|
||||||
{
|
{
|
||||||
ase_awk_clrpt (awk, nde);
|
if (!MATCH(awk,TOKEN_IN))
|
||||||
PANIC (awk, ASE_AWK_EIN);
|
{
|
||||||
|
ase_awk_clrpt (awk, nde);
|
||||||
|
PANIC (awk, ASE_AWK_EIN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = (ase_awk_nde_grp_t*) ASE_AWK_MALLOC (
|
tmp = (ase_awk_nde_grp_t*) ASE_AWK_MALLOC (
|
||||||
@ -3125,23 +3157,29 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk)
|
|||||||
args_tail = args;
|
args_tail = args;
|
||||||
tail_prev = ASE_NULL;
|
tail_prev = ASE_NULL;
|
||||||
|
|
||||||
while (MATCH(awk,TOKEN_COMMA))
|
if (args->type != ASE_AWK_NDE_GRP)
|
||||||
{
|
{
|
||||||
if (__get_token(awk) == -1)
|
/* args->type == ASE_AWK_NDE_GRP when print (a, b, c)
|
||||||
|
* args->type != ASE_AWK_NDE_GRP when print a, b, c */
|
||||||
|
|
||||||
|
while (MATCH(awk,TOKEN_COMMA))
|
||||||
{
|
{
|
||||||
ase_awk_clrpt (awk, args);
|
if (__get_token(awk) == -1)
|
||||||
return ASE_NULL;
|
{
|
||||||
}
|
ase_awk_clrpt (awk, args);
|
||||||
|
return ASE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
args_tail->next = __parse_expression (awk);
|
args_tail->next = __parse_expression (awk);
|
||||||
if (args_tail->next == ASE_NULL)
|
if (args_tail->next == ASE_NULL)
|
||||||
{
|
{
|
||||||
ase_awk_clrpt (awk, args);
|
ase_awk_clrpt (awk, args);
|
||||||
return ASE_NULL;
|
return ASE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
tail_prev = args_tail;
|
tail_prev = args_tail;
|
||||||
args_tail = args_tail->next;
|
args_tail = args_tail->next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* print 1 > 2 would print 1 to the file named 2.
|
/* print 1 > 2 would print 1 to the file named 2.
|
||||||
@ -3688,7 +3726,6 @@ static int __get_token (ase_awk_t* awk)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*xp_printf (ASE_T("token -> [%s]\n"), ASE_AWK_STR_BUF(&awk->token.name));*/
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3981,8 +4018,8 @@ static int __get_char (ase_awk_t* awk)
|
|||||||
|
|
||||||
if (awk->src.shared.buf_pos >= awk->src.shared.buf_len)
|
if (awk->src.shared.buf_pos >= awk->src.shared.buf_len)
|
||||||
{
|
{
|
||||||
n = awk->src.ios->in (
|
n = awk->src.ios.in (
|
||||||
ASE_AWK_IO_READ, awk->src.ios->custom_data,
|
ASE_AWK_IO_READ, awk->src.ios.custom_data,
|
||||||
awk->src.shared.buf, ase_countof(awk->src.shared.buf));
|
awk->src.shared.buf, ase_countof(awk->src.shared.buf));
|
||||||
if (n == -1)
|
if (n == -1)
|
||||||
{
|
{
|
||||||
@ -4184,13 +4221,13 @@ static int __deparse (ase_awk_t* awk)
|
|||||||
struct __deparse_func_t df;
|
struct __deparse_func_t df;
|
||||||
int n = 0, op;
|
int n = 0, op;
|
||||||
|
|
||||||
ASE_AWK_ASSERT (awk, awk->src.ios->out != ASE_NULL);
|
ASE_AWK_ASSERT (awk, awk->src.ios.out != ASE_NULL);
|
||||||
|
|
||||||
awk->src.shared.buf_len = 0;
|
awk->src.shared.buf_len = 0;
|
||||||
awk->src.shared.buf_pos = 0;
|
awk->src.shared.buf_pos = 0;
|
||||||
|
|
||||||
op = awk->src.ios->out (
|
op = awk->src.ios.out (
|
||||||
ASE_AWK_IO_OPEN, awk->src.ios->custom_data, ASE_NULL, 0);
|
ASE_AWK_IO_OPEN, awk->src.ios.custom_data, ASE_NULL, 0);
|
||||||
if (op == -1)
|
if (op == -1)
|
||||||
{
|
{
|
||||||
awk->errnum = ASE_AWK_ESRCOUTOPEN;
|
awk->errnum = ASE_AWK_ESRCOUTOPEN;
|
||||||
@ -4304,8 +4341,8 @@ static int __deparse (ase_awk_t* awk)
|
|||||||
if (__flush (awk) == -1) EXIT_DEPARSE (ASE_AWK_ESRCOUTWRITE);
|
if (__flush (awk) == -1) EXIT_DEPARSE (ASE_AWK_ESRCOUTWRITE);
|
||||||
|
|
||||||
exit_deparse:
|
exit_deparse:
|
||||||
if (awk->src.ios->out (
|
if (awk->src.ios.out (
|
||||||
ASE_AWK_IO_CLOSE, awk->src.ios->custom_data, ASE_NULL, 0) == -1)
|
ASE_AWK_IO_CLOSE, awk->src.ios.custom_data, ASE_NULL, 0) == -1)
|
||||||
{
|
{
|
||||||
if (n != -1)
|
if (n != -1)
|
||||||
{
|
{
|
||||||
@ -4362,12 +4399,12 @@ static int __flush (ase_awk_t* awk)
|
|||||||
{
|
{
|
||||||
ase_ssize_t n;
|
ase_ssize_t n;
|
||||||
|
|
||||||
ASE_AWK_ASSERT (awk, awk->src.ios->out != ASE_NULL);
|
ASE_AWK_ASSERT (awk, awk->src.ios.out != ASE_NULL);
|
||||||
|
|
||||||
while (awk->src.shared.buf_pos < awk->src.shared.buf_len)
|
while (awk->src.shared.buf_pos < awk->src.shared.buf_len)
|
||||||
{
|
{
|
||||||
n = awk->src.ios->out (
|
n = awk->src.ios.out (
|
||||||
ASE_AWK_IO_WRITE, awk->src.ios->custom_data,
|
ASE_AWK_IO_WRITE, awk->src.ios.custom_data,
|
||||||
&awk->src.shared.buf[awk->src.shared.buf_pos],
|
&awk->src.shared.buf[awk->src.shared.buf_pos],
|
||||||
awk->src.shared.buf_len - awk->src.shared.buf_pos);
|
awk->src.shared.buf_len - awk->src.shared.buf_pos);
|
||||||
if (n <= 0) return -1;
|
if (n <= 0) return -1;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c,v 1.248 2006-10-28 05:24:07 bacon Exp $
|
* $Id: run.c,v 1.249 2006-10-28 12:17:25 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ase/awk/awk_i.h>
|
#include <ase/awk/awk_i.h>
|
||||||
@ -1557,6 +1557,14 @@ static int __run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
case ASE_AWK_NDE_PRINT:
|
||||||
|
{
|
||||||
|
TODO: PRINTF
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
ase_awk_val_t* v;
|
ase_awk_val_t* v;
|
||||||
@ -2127,7 +2135,6 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde)
|
|||||||
ase_char_t* out = ASE_NULL;
|
ase_char_t* out = ASE_NULL;
|
||||||
const ase_char_t* dst;
|
const ase_char_t* dst;
|
||||||
ase_awk_val_t* v;
|
ase_awk_val_t* v;
|
||||||
ase_awk_nde_t* np;
|
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
ASE_AWK_ASSERT (run->awk,
|
ASE_AWK_ASSERT (run->awk,
|
||||||
@ -2212,9 +2219,19 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (np = p->args; np != ASE_NULL; np = np->next)
|
ase_awk_nde_t* head, * np;
|
||||||
|
|
||||||
|
if (p->args->type == ASE_AWK_NDE_GRP)
|
||||||
{
|
{
|
||||||
if (np != p->args)
|
/* parenthesized print */
|
||||||
|
ASE_AWK_ASSERT (run->awk, p->args->next == ASE_NULL);
|
||||||
|
head = ((ase_awk_nde_grp_t*)p->args)->body;
|
||||||
|
}
|
||||||
|
else head = p->args;
|
||||||
|
|
||||||
|
for (np = head; np != ASE_NULL; np = np->next)
|
||||||
|
{
|
||||||
|
if (np != head)
|
||||||
{
|
{
|
||||||
n = ase_awk_writeextio_str (
|
n = ase_awk_writeextio_str (
|
||||||
run, p->out_type, dst,
|
run, p->out_type, dst,
|
||||||
|
@ -2,8 +2,15 @@
|
|||||||
#main ()
|
#main ()
|
||||||
{
|
{
|
||||||
#print (("%f", 1.0)); # syntax error
|
#print (("%f", 1.0)); # syntax error
|
||||||
print ((((10) + 20)));
|
print ((10) + 20 * 4);
|
||||||
|
print ((10) + 20 * 4, (20), (30));
|
||||||
|
print (10) + 20 * 4, (20), (30);
|
||||||
|
print (("%f", 1.0) in x);
|
||||||
|
|
||||||
print ("%f", 1.0);
|
print ("%f", 1.0);
|
||||||
|
#print ("%f", 1.0), 1; # syntax error
|
||||||
|
print ("%f", 1.0) in x, 1;
|
||||||
|
print ((((10) + 20)));
|
||||||
print ((10) + 20, 50);
|
print ((10) + 20, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user