parse InlineHtml
This commit is contained in:
		
							parent
							
								
									ed0771f7a0
								
							
						
					
					
						commit
						aa1c9b9257
					
				
							
								
								
									
										26
									
								
								lexer.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								lexer.go
									
									
									
									
									
								
							| @ -7664,8 +7664,28 @@ yyrule1: // [ \t\n\r]+ | ||||
| 
 | ||||
| 	goto yystate0 | ||||
| yyrule2: // . | ||||
| 	{ | ||||
| 
 | ||||
| 	goto yystate0 | ||||
| 		tb := []byte{} | ||||
| 		for { | ||||
| 			if c == -1 { | ||||
| 				break | ||||
| 			} | ||||
| 			if '?' == rune(c) { | ||||
| 				tb = l.TokenBytes(nil) | ||||
| 				if len(tb) < 2 || tb[len(tb)-1] != '<' { | ||||
| 					c = l.Next() | ||||
| 					continue | ||||
| 				} | ||||
| 				tb = l.ungetN(1) | ||||
| 				break | ||||
| 			} | ||||
| 			c = l.Next() | ||||
| 		} | ||||
| 		lval.token = string(tb) | ||||
| 		return T_INLINE_HTML | ||||
| 		goto yystate0 | ||||
| 	} | ||||
| yyrule3: // \<\?php([ \t]|{NEW_LINE}) | ||||
| 	{ | ||||
| 		begin(PHP) //lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG; | ||||
| @ -7690,9 +7710,7 @@ yyrule6: // [ \t\n\r]+ | ||||
| 	} | ||||
| yyrule7: // \?\>{NEW_LINE}? | ||||
| 	{ | ||||
| 		begin(INITIAL) | ||||
| 		lval.token = string(l.TokenBytes(nil)) | ||||
| 		return T_CLOSE_TAG | ||||
| 		begin(INITIAL) //lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG; | ||||
| 		goto yystate0 | ||||
| 	} | ||||
| yyrule8: // {DNUM}|{EXPONENT_DNUM} | ||||
|  | ||||
							
								
								
									
										25
									
								
								lexer.l
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								lexer.l
									
									
									
									
									
								
							| @ -154,12 +154,35 @@ NEW_LINE        (\r|\n|\r\n) | ||||
| 
 | ||||
| <INITIAL>[ \t\n\r]+ | ||||
| <INITIAL>. | ||||
|     tb := []byte{} | ||||
| 
 | ||||
|     for { | ||||
|         if c == -1 { | ||||
|             break; | ||||
|         } | ||||
| 
 | ||||
|         if '?' == rune(c) { | ||||
|             tb = l.TokenBytes(nil); | ||||
|             if (len(tb) < 2 || tb[len(tb)-1] != '<') { | ||||
|                 c = l.Next() | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             tb = l.ungetN(1) | ||||
|             break; | ||||
|         } | ||||
| 
 | ||||
|         c = l.Next() | ||||
|     } | ||||
| 
 | ||||
|     lval.token = string(tb); return T_INLINE_HTML | ||||
| 
 | ||||
| <INITIAL>\<\?php([ \t]|{NEW_LINE})              begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG; | ||||
| <INITIAL>\<\?                                   begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG; | ||||
| <INITIAL>\<\?=                                  begin(PHP);lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG_WITH_ECHO; | ||||
| 
 | ||||
| <PHP>[ \t\n\r]+                                 //lval.token = string(l.TokenBytes(nil)); return T_WHITESPACE | ||||
| <PHP>\?\>{NEW_LINE}?                            begin(INITIAL);lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG; | ||||
| <PHP>\?\>{NEW_LINE}?                            begin(INITIAL);//lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG; | ||||
| 
 | ||||
| <PHP>{DNUM}|{EXPONENT_DNUM}                     lval.token = string(l.TokenBytes(nil)); return T_DNUMBER | ||||
| <PHP>{BNUM} | ||||
|  | ||||
							
								
								
									
										5
									
								
								parser.y
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								parser.y
									
									
									
									
									
								
							| @ -303,6 +303,7 @@ statement: | ||||
|     |   T_GLOBAL global_var_list ';'                    { $$ = $2; } | ||||
|     |   T_STATIC static_var_list ';'                    { $$ = $2; } | ||||
|     |   T_ECHO echo_expr_list ';'                       { $$ = $2; } | ||||
|     |   T_INLINE_HTML                                   { $$ = Node("Echo").append(Node("InlineHtml").attribute("value", $1)) } | ||||
|     |   expr ';'                                        { $$ = $1; } | ||||
| 
 | ||||
| if_stmt_without_else: | ||||
| @ -610,10 +611,12 @@ simple_variable: | ||||
| 
 | ||||
| %% | ||||
| 
 | ||||
| const src = `<? | ||||
| const src = `a<? | ||||
| 
 | ||||
| static $a, $b = $c; | ||||
| 
 | ||||
| ?>   test<?php  | ||||
| 
 | ||||
| echo $a, $b = $c; | ||||
| 
 | ||||
| ` | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user