### Godot version

4.0

### System information

All OS/Hardware

### Issue description

Not sure if it's a bug / inconsistency or a willingness 😄

When writing numbers in GDScript, we can use `_` character to make number more readable for a human. Rules for this character differ depending on where it is used : before or in decimal part, making its usage inconsistent. 
- When use before decimal part, only an underscore can not follow another undersocre
- In decimal part, multiple underscores can be write without any complaint of tokenizer



### Steps to reproduce

Here is test functions to illustrate

```gdscript
func test_number_allowed_without_error() -> void:
    var a:int = 1_2_3_4_5_6
    var b:int = 123_456
    var c:int = 1.2_3_4_5_6
    var d:int = 1.2_____3_____4____5_____6
    var e:int = 1._2_3_4_5
    var f:int = 1.________23456

func test_number_not_allowed() -> void:
    var a:int = 1__2
    var b:int = 1__2.1__2
    var c:int = _1.23456
```

With a screen to show editor syntax errors

![image](https://user-images.githubusercontent.com/121614863/220851058-38439a3f-3ba8-40fa-9556-a0faf045c943.png)

### Minimal reproduction project

N/A
KEYWORD_GROUP('e')                       \
	KEYWORD("elif", Token::ELIF)             \
	KEYWORD("else", Token::ELSE)             \
	KEYWORD("enum", Token::ENUM)             \
	KEYWORD("extends", Token::EXTENDS)       \
	KEYWORD_GROUP('f')                       \
	KEYWORD("for", Token::FOR)               \
	KEYWORD("func", Token::FUNC)             \
	KEYWORD_GROUP('i')                       \
	KEYWORD("if", Token::IF)                 \
	KEYWORD("in", Token::IN)                 \
	KEYWORD("is", Token::IS)                 \
	KEYWORD_GROUP('m')                       \
	KEYWORD("match", Token::MATCH)           \
	KEYWORD_GROUP('n')                       \
	KEYWORD("namespace", Token::NAMESPACE)   \
	KEYWORD("not", Token::NOT)               \
	KEYWORD_GROUP('o')                       \
	KEYWORD("or", Token::OR)                 \
	KEYWORD_GROUP('p')                       \
	KEYWORD("pass", Token::PASS)             \
	KEYWORD("preload", Token::PRELOAD)       \
	KEYWORD_GROUP('r')                       \
	KEYWORD("return", Token::RETURN)         \
	KEYWORD_GROUP('s')                       \
	KEYWORD("self", Token::SELF)             \
	KEYWORD("signal", Token::SIGNAL)         \
	KEYWORD("static", Token::STATIC)         \
	KEYWORD("super", Token::SUPER)           \
	KEYWORD_GROUP('t')                       \