changing more part of array handling to use #[
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							
								
								
									
										16
									
								
								lang.txt
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								lang.txt
									
									
									
									
									
								
							| @ -12,7 +12,7 @@ | |||||||
|  |  | ||||||
| 	assignment syntax | 	assignment syntax | ||||||
| 		(k := 20) -> (set k 20) | 		(k := 20) -> (set k 20) | ||||||
| 		k := 20  -> (set  k 20) | 		k := 20  -> (set k 20) | ||||||
| 		[a, b] := (multi-retvar-fun 10 20) -> (set-r a b (multi-retvar-fun 10 20)) | 		[a, b] := (multi-retvar-fun 10 20) -> (set-r a b (multi-retvar-fun 10 20)) | ||||||
|  |  | ||||||
| 	implement module -> ::, ., or what notation? | 	implement module -> ::, ., or what notation? | ||||||
| @ -22,9 +22,21 @@ | |||||||
| 	dynamic byte array is supported but we need yet to support byte-string(byte-array) constant | 	dynamic byte array is supported but we need yet to support byte-string(byte-array) constant | ||||||
| 		b"..." or B"..." for an byte string constant notation | 		b"..." or B"..." for an byte string constant notation | ||||||
| 		u"..." or U"..." for an explicit unicode string constant notation? | 		u"..." or U"..." for an explicit unicode string constant notation? | ||||||
|  | 		-> change u to c??? | ||||||
|  |  | ||||||
| 		#b[ ] byte array?? |  | ||||||
| 		#[ ] normal array? | 		#[ ] normal array? | ||||||
|  | 		#b[ ] byte array?? | ||||||
|  | 		#c[ ] charcter array?? | ||||||
|  | 		#w[ ] word array?? | ||||||
|  | 		#hw[ ] half-word array?? | ||||||
|  | 		#u8[ ] | ||||||
|  | 		#u16[ ] | ||||||
|  | 		#u32[ ] | ||||||
|  | 		#u64[ ] | ||||||
|  | 		#i8[ ] | ||||||
|  | 		#i16[ ] | ||||||
|  | 		#i32[ ] | ||||||
|  | 		#i64[ ] | ||||||
|  |  | ||||||
| 	allow b'X' or 'X' in byte array in #b[] notation? | 	allow b'X' or 'X' in byte array in #b[] notation? | ||||||
|  |  | ||||||
|  | |||||||
| @ -199,10 +199,16 @@ enum hcl_tok_type_t | |||||||
| #define HCL_TOK_LPARCOLON HCL_TOK_LPARCOLON | #define HCL_TOK_LPARCOLON HCL_TOK_LPARCOLON | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	HCL_TOK_BAPAREN,   /* #[ - byte array parenthesis */ | 	HCL_TOK_APAREN,    /* #[ - array parenthesis */ | ||||||
|  | 	HCL_TOK_BAPAREN,   /* #b[ - byte array parenthesis */ | ||||||
|  | #if 0 | ||||||
|  | 	HCL_TOK_CAPAREN,   /* #c[ - character array parenthesis */ | ||||||
|  | 	HCL_TOK_WAPAREN,   /* #w[ - word array parenthesis */ | ||||||
|  | 	HCL_TOK_WAPAREN,   /* #hw[ - half-word array parenthesis */ | ||||||
|  | #endif | ||||||
| 	HCL_TOK_QLPAREN,   /* #( - quoted-list parenthesis */ | 	HCL_TOK_QLPAREN,   /* #( - quoted-list parenthesis */ | ||||||
| 	HCL_TOK_DLPAREN,   /* #{ - dictionary parenthese */ | 	HCL_TOK_DLPAREN,   /* #{ - dictionary parenthese */ | ||||||
| 	HCL_TOK_LBRACK,    /* [ - array */ | 	HCL_TOK_LBRACK,    /* [ - group */ | ||||||
| 	HCL_TOK_RBRACK,    /* ] */ | 	HCL_TOK_RBRACK,    /* ] */ | ||||||
| 	HCL_TOK_LBRACE,    /* { - block */ | 	HCL_TOK_LBRACE,    /* { - block */ | ||||||
| 	HCL_TOK_RBRACE,    /* } */ | 	HCL_TOK_RBRACE,    /* } */ | ||||||
| @ -765,7 +771,7 @@ struct hcl_compiler_t | |||||||
| 				hcl_flx_pn_t pn; /* plain number */ | 				hcl_flx_pn_t pn; /* plain number */ | ||||||
| 				hcl_flx_qt_t qt; /* quoted token */ | 				hcl_flx_qt_t qt; /* quoted token */ | ||||||
| 				hcl_flx_st_t st; /* signed token */ | 				hcl_flx_st_t st; /* signed token */ | ||||||
| 				hcl_flx_st_t bu; /* b or u prefix */ | 				hcl_flx_bu_t bu; /* b or u prefix */ | ||||||
| 			} u; | 			} u; | ||||||
| 		} lx; | 		} lx; | ||||||
|  |  | ||||||
|  | |||||||
| @ -219,8 +219,8 @@ int hcl_fmt_object_ (hcl_fmtout_t* fmtout, hcl_oop_t obj) | |||||||
| 		{ "(",       "(" },  /*HCL_CONCODE_MLIST */ | 		{ "(",       "(" },  /*HCL_CONCODE_MLIST */ | ||||||
| 		{ "(",       "(" },  /*HCL_CONCODE_ALIST */ | 		{ "(",       "(" },  /*HCL_CONCODE_ALIST */ | ||||||
| 		{ "{",       "{" },  /*HCL_CONCODE_BLOCK */ | 		{ "{",       "{" },  /*HCL_CONCODE_BLOCK */ | ||||||
| 		{ "[",       "[" },  /*HCL_CONCODE_ARRAY */ | 		{ "#[",      "[" },  /*HCL_CONCODE_ARRAY */ | ||||||
| 		{ "#[",      "[" },  /*HCL_CONCODE_BYTEARRAY */ | 		{ "#b[",     "[" },  /*HCL_CONCODE_BYTEARRAY */ | ||||||
| 		{ "#{",      "{" },  /*HCL_CONCODE_DIC */ | 		{ "#{",      "{" },  /*HCL_CONCODE_DIC */ | ||||||
| 		{ "#(",      "[" }   /*HCL_CONCODE_QLIST */ | 		{ "#(",      "[" }   /*HCL_CONCODE_QLIST */ | ||||||
| 	}; | 	}; | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								lib/read.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lib/read.c
									
									
									
									
									
								
							| @ -62,8 +62,8 @@ static struct voca_t | |||||||
| 	{  4, { '(',':',' ',')'  /* MLIST */                                  } }, | 	{  4, { '(',':',' ',')'  /* MLIST */                                  } }, | ||||||
| 	{  3, { '(',':','=',')'  /* ALIST */                                  } }, | 	{  3, { '(',':','=',')'  /* ALIST */                                  } }, | ||||||
| 	{  3, { '{',' ','}'      /* BLOCK */                                  } }, | 	{  3, { '{',' ','}'      /* BLOCK */                                  } }, | ||||||
| 	{  3, { '[',' ',']'      /* ARRAY */                                  } }, | 	{  4, { '#','[',' ',']'  /* ARRAY */                                  } }, | ||||||
| 	{  4, { '#','[',' ',']'                                               } }, | 	{  5, { '#','b','[',' ',']' /* BYTE ARRAY */                          } }, | ||||||
| 	{  4, { '#','{',' ','}'                                               } }, | 	{  4, { '#','{',' ','}'                                               } }, | ||||||
| 	{  4, { '#','(',' ',')'                                               } }, | 	{  4, { '#','(',' ',')'                                               } }, | ||||||
| 	{  3, { '|',' ','|'                                                   } }, | 	{  3, { '|',' ','|'                                                   } }, | ||||||
| @ -1174,6 +1174,7 @@ static int feed_process_token (hcl_t* hcl) | |||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 		case HCL_TOK_LBRACK: /* [ */ | 		case HCL_TOK_LBRACK: /* [ */ | ||||||
|  | 		case HCL_TOK_APAREN: /* #[ */ | ||||||
| 			/* [] is a data list. so let's treat it like other literal | 			/* [] is a data list. so let's treat it like other literal | ||||||
| 			 * expressions(e.g. 1, "abc"). when it's placed at the block beginning, | 			 * expressions(e.g. 1, "abc"). when it's placed at the block beginning, | ||||||
| 			 * create the outer XLIST. */ | 			 * create the outer XLIST. */ | ||||||
| @ -1183,7 +1184,7 @@ static int feed_process_token (hcl_t* hcl) | |||||||
| 			LIST_FLAG_SET_CONCODE (frd->flagv, HCL_CONCODE_ARRAY); | 			LIST_FLAG_SET_CONCODE (frd->flagv, HCL_CONCODE_ARRAY); | ||||||
| 			goto start_list; | 			goto start_list; | ||||||
|  |  | ||||||
| 		case HCL_TOK_BAPAREN: /* #[ */ | 		case HCL_TOK_BAPAREN: /* #b[ */ | ||||||
| 			if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; | 			if (auto_forge_xlist_if_at_block_beginning(hcl, frd) <= -1) goto oops; | ||||||
|  |  | ||||||
| 			frd->flagv = DATA_LIST; | 			frd->flagv = DATA_LIST; | ||||||
| @ -2019,15 +2020,15 @@ static int flx_hmarked_token (hcl_t* hcl, hcl_ooci_t c) | |||||||
| 			goto consumed; | 			goto consumed; | ||||||
|  |  | ||||||
| 		/* --------------------------- */ | 		/* --------------------------- */ | ||||||
| 		case '[': | 		case '[': /* #[ */ | ||||||
| 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_BAPAREN); | 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_APAREN); | ||||||
| 			goto consumed; | 			goto consumed; | ||||||
|  |  | ||||||
| 		case '(': | 		case '(': /* #( */ | ||||||
| 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_QLPAREN); | 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_QLPAREN); | ||||||
| 			goto consumed; | 			goto consumed; | ||||||
|  |  | ||||||
| 		case '{': | 		case '{': /* #{ */ | ||||||
| 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_DLPAREN); | 			FEED_WRAP_UP_WITH_CHAR (hcl, c, HCL_TOK_DLPAREN); | ||||||
| 			goto  consumed; | 			goto  consumed; | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user