*** empty log message ***
This commit is contained in:
		@ -1,5 +1,5 @@
 | 
				
			|||||||
/* 
 | 
					/* 
 | 
				
			||||||
 * $Id: awk.h,v 1.189 2007-02-11 14:07:28 bacon Exp $
 | 
					 * $Id: awk.h,v 1.190 2007-02-18 11:12:18 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -160,10 +160,11 @@ enum
 | 
				
			|||||||
/* various options */
 | 
					/* various options */
 | 
				
			||||||
enum 
 | 
					enum 
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
	/* allow undeclared variables */
 | 
						/* allow undeclared variables and implicit concatenation */
 | 
				
			||||||
	ASE_AWK_IMPLICIT    = (1 << 0),
 | 
						ASE_AWK_IMPLICIT    = (1 << 0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* allow explicit variable declarations */
 | 
						/* allow explicit variable declaration and the concatenation
 | 
				
			||||||
 | 
						 * operator, a period. */
 | 
				
			||||||
	ASE_AWK_EXPLICIT    = (1 << 1), 
 | 
						ASE_AWK_EXPLICIT    = (1 << 1), 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* a function name should not coincide to be a variable name */
 | 
						/* a function name should not coincide to be a variable name */
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: parse.c,v 1.241 2007-02-03 10:47:41 bacon Exp $
 | 
					 * $Id: parse.c,v 1.242 2007-02-18 11:12:18 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -2286,12 +2286,22 @@ static ase_awk_nde_t* __parse_concat (ase_awk_t* awk, ase_size_t line)
 | 
				
			|||||||
	left = __parse_additive (awk, line);
 | 
						left = __parse_additive (awk, line);
 | 
				
			||||||
	if (left == ASE_NULL) return ASE_NULL;
 | 
						if (left == ASE_NULL) return ASE_NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* TODO: write a better code to do this.... 
 | 
						while (1)
 | 
				
			||||||
	 *       first of all, is the following check sufficient? */
 | 
						{
 | 
				
			||||||
	while (MATCH(awk,TOKEN_LPAREN) || 
 | 
							if (MATCH(awk,TOKEN_PERIOD))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ((awk->option & ASE_AWK_EXPLICIT) == 0) break;	
 | 
				
			||||||
 | 
								if (__get_token(awk) == -1) return ASE_NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else if (MATCH(awk,TOKEN_LPAREN) ||
 | 
				
			||||||
	                 MATCH(awk,TOKEN_DOLLAR) ||
 | 
						                 MATCH(awk,TOKEN_DOLLAR) ||
 | 
				
			||||||
	                 awk->token.type >= TOKEN_GETLINE)
 | 
						                 awk->token.type >= TOKEN_GETLINE)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								/* TODO: is the check above sufficient? */
 | 
				
			||||||
 | 
								if ((awk->option & ASE_AWK_IMPLICIT) == 0) break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		right = __parse_additive (awk, awk->token.line);
 | 
							right = __parse_additive (awk, awk->token.line);
 | 
				
			||||||
		if (right == ASE_NULL) 
 | 
							if (right == ASE_NULL) 
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@ -4195,9 +4205,17 @@ static int __get_token (ase_awk_t* awk)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (ASE_AWK_ISDIGIT (awk, c))
 | 
							if (ASE_AWK_ISDIGIT (awk, c))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								awk->src.lex.curc = ASE_T('.');
 | 
				
			||||||
			if (__unget_char (awk, c) == -1) return -1;
 | 
								if (__unget_char (awk, c) == -1) return -1;
 | 
				
			||||||
			if (__get_number (awk) == -1) return -1;
 | 
								if (__get_number (awk) == -1) return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							else /*if (ASE_AWK_ISSPACE (awk, c) || c == ASE_CHAR_EOF)*/
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								SET_TOKEN_TYPE (awk, TOKEN_PERIOD);
 | 
				
			||||||
 | 
								ADD_TOKEN_CHAR (awk, ASE_T('.'));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							/*
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ase_awk_seterror (
 | 
								ase_awk_seterror (
 | 
				
			||||||
@ -4205,6 +4223,7 @@ static int __get_token (ase_awk_t* awk)
 | 
				
			|||||||
				ASE_T("floating point not followed by any valid digits"));
 | 
									ASE_T("floating point not followed by any valid digits"));
 | 
				
			||||||
			return -1;
 | 
								return -1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							*/
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (ASE_AWK_ISALPHA (awk, c) || c == ASE_T('_')) 
 | 
						else if (ASE_AWK_ISALPHA (awk, c) || c == ASE_T('_')) 
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@ -4561,12 +4580,6 @@ static int __get_token (ase_awk_t* awk)
 | 
				
			|||||||
		ADD_TOKEN_CHAR (awk, c);
 | 
							ADD_TOKEN_CHAR (awk, c);
 | 
				
			||||||
		GET_CHAR (awk);
 | 
							GET_CHAR (awk);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (c == ASE_T('.'))
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SET_TOKEN_TYPE (awk, TOKEN_PERIOD);
 | 
					 | 
				
			||||||
		ADD_TOKEN_CHAR (awk, c);
 | 
					 | 
				
			||||||
		GET_CHAR (awk);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	else if (c == ASE_T(';'))
 | 
						else if (c == ASE_T(';'))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		SET_TOKEN_TYPE (awk, TOKEN_SEMICOLON);
 | 
							SET_TOKEN_TYPE (awk, TOKEN_SEMICOLON);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: val.h,v 1.60 2007-02-03 10:47:42 bacon Exp $
 | 
					 * $Id: val.h,v 1.61 2007-02-18 11:12:18 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user