refactor(lexer): rename value type tokens for v0.3

Renamed lexer tokens to align with new v0.3 naming convention:
- IntLit -> NumberLit
- FloatLit -> DecimalLit
- StringLit -> TextLit

Updated all references across parser grammar, property tests,
and editor highlighting.
This commit is contained in:
2026-02-14 13:58:46 +00:00
parent 4e4e5500b0
commit 8c3c380cfd
6 changed files with 68 additions and 68 deletions

View File

@@ -130,16 +130,16 @@ pub enum Token {
Ident(String),
#[regex(r"-?[0-9]+", |lex| lex.slice().parse::<i64>().ok())]
IntLit(i64),
NumberLit(i64),
#[regex(r"-?[0-9]+\.[0-9]+", |lex| lex.slice().parse::<f64>().ok())]
FloatLit(f64),
DecimalLit(f64),
#[regex(r#""([^"\\]|\\.)*""#, |lex| {
let s = lex.slice();
s[1..s.len()-1].to_string()
})]
StringLit(String),
TextLit(String),
// Time literal: HH:MM or HH:MM:SS
#[regex(r"[0-9]{2}:[0-9]{2}(:[0-9]{2})?", |lex| lex.slice().to_string())]
@@ -208,9 +208,9 @@ impl fmt::Display for Token {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
| Token::Ident(s) => write!(f, "identifier '{}'", s),
| Token::IntLit(n) => write!(f, "integer {}", n),
| Token::FloatLit(n) => write!(f, "float {}", n),
| Token::StringLit(s) => write!(f, "string \"{}\"", s),
| Token::NumberLit(n) => write!(f, "number {}", n),
| Token::DecimalLit(n) => write!(f, "decimal {}", n),
| Token::TextLit(s) => write!(f, "text \"{}\"", s),
| Token::TimeLit(s) => write!(f, "time {}", s),
| Token::DurationLit(s) => write!(f, "duration {}", s),
| Token::ProseBlock(pb) => write!(f, "prose block ---{}", pb.tag),
@@ -404,7 +404,7 @@ mod tests {
Token::LBrace,
Token::Ident("age".to_string()),
Token::Colon,
Token::IntLit(34),
Token::NumberLit(34),
Token::RBrace,
]
);
@@ -512,7 +512,7 @@ Second prose block content.
assert_eq!(
tokens,
vec![Token::IntLit(20), Token::DotDot, Token::IntLit(40),]
vec![Token::NumberLit(20), Token::DotDot, Token::NumberLit(40),]
);
}

View File

@@ -244,16 +244,16 @@ Field: Field = {
};
Value: Value = {
<IntLit> => Value::Int(<>),
<FloatLit> => Value::Float(<>),
<StringLit> => Value::String(<>),
<NumberLit> => Value::Int(<>),
<DecimalLit> => Value::Float(<>),
<TextLit> => Value::String(<>),
<BoolLit> => Value::Bool(<>),
"any" => Value::Any,
<lo:IntLit> ".." <hi:IntLit> => Value::Range(
<lo:NumberLit> ".." <hi:NumberLit> => Value::Range(
Box::new(Value::Int(lo)),
Box::new(Value::Int(hi))
),
<lo:FloatLit> ".." <hi:FloatLit> => Value::Range(
<lo:DecimalLit> ".." <hi:DecimalLit> => Value::Range(
Box::new(Value::Float(lo)),
Box::new(Value::Float(hi))
),
@@ -572,14 +572,14 @@ DecoratorRepeat: BehaviorNode = {
};
DecoratorRepeatN: BehaviorNode = {
"repeat" "(" <n:IntLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
"repeat" "(" <n:NumberLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
decorator_type: DecoratorType::RepeatN(n as u32),
child: Box::new(child),
},
};
DecoratorRepeatRange: BehaviorNode = {
"repeat" "(" <min:IntLit> ".." <max:IntLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
"repeat" "(" <min:NumberLit> ".." <max:NumberLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
decorator_type: DecoratorType::RepeatRange(min as u32, max as u32),
child: Box::new(child),
},
@@ -593,7 +593,7 @@ DecoratorInvert: BehaviorNode = {
};
DecoratorRetry: BehaviorNode = {
"retry" "(" <n:IntLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
"retry" "(" <n:NumberLit> ")" "{" <child:BehaviorNode> "}" => BehaviorNode::Decorator {
decorator_type: DecoratorType::Retry(n as u32),
child: Box::new(child),
},
@@ -949,9 +949,9 @@ InequalityOp: CompOp = {
};
Literal: Expr = {
<IntLit> => Expr::IntLit(<>),
<FloatLit> => Expr::FloatLit(<>),
<StringLit> => Expr::StringLit(<>),
<NumberLit> => Expr::IntLit(<>),
<DecimalLit> => Expr::FloatLit(<>),
<TextLit> => Expr::StringLit(<>),
<BoolLit> => Expr::BoolLit(<>),
};
@@ -1037,9 +1037,9 @@ extern {
// Literals
Ident => Token::Ident(<String>),
IntLit => Token::IntLit(<i64>),
FloatLit => Token::FloatLit(<f64>),
StringLit => Token::StringLit(<String>),
NumberLit => Token::NumberLit(<i64>),
DecimalLit => Token::DecimalLit(<f64>),
TextLit => Token::TextLit(<String>),
TimeLit => Token::TimeLit(<String>),
DurationLit => Token::DurationLit(<String>),
ProseBlockToken => Token::ProseBlock(<ProseBlock>),

View File

@@ -1,5 +1,5 @@
// auto-generated: "lalrpop 0.21.0"
// sha3: 9ae5a0a6e0bd72f95a858d62264924a212230701aa64e7633fbb46a27c7cd328
// sha3: 74aa329f2c008adb120b171834cf36dcc8e33b949ab1a2fe8bd5e54d42b398af
use crate::syntax::{
ast::*,
lexer::Token,
@@ -180,7 +180,7 @@ mod __parse__File {
// State 32
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 33
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 34
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 196, 203, 198, 197, 199, 202, 194, 200, 195, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 35
@@ -202,7 +202,7 @@ mod __parse__File {
// State 43
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, 339, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 342, 341, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 44
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 322, 321, 323, 238, 320, 205, 57, 0, 0, -117, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 322, 320, 323, 238, 321, 205, 57, 0, 0, -117, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 45
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 46
@@ -218,13 +218,13 @@ mod __parse__File {
// State 51
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 52
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 53
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 54
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 55
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, -133, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, -133, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 56
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 57
@@ -240,7 +240,7 @@ mod __parse__File {
// State 62
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 196, 203, 198, 197, 199, 202, 194, 200, 195, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 63
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 322, 321, 323, 238, 320, 205, 57, 0, 0, -119, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 322, 320, 323, 238, 321, 205, 57, 0, 0, -119, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 64
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 65
@@ -256,7 +256,7 @@ mod __parse__File {
// State 70
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 71
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, -135, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, -135, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 72
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 73
@@ -272,7 +272,7 @@ mod __parse__File {
// State 78
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 196, 203, 198, 197, 199, 202, 194, 200, 195, 326, 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 79
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 80
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 81
@@ -342,7 +342,7 @@ mod __parse__File {
// State 113
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 0, 0, 0, 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 114
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 115
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 196, 203, 198, 197, 199, 202, 194, 200, 195, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 116
@@ -358,7 +358,7 @@ mod __parse__File {
// State 121
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 205, 0, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 122
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 321, 323, 238, 320, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 322, 320, 323, 238, 321, 205, 57, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
// State 123
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 124
@@ -752,9 +752,9 @@ mod __parse__File {
// State 318
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, -101, 0, 0, 0, 0, -101, -101, 0, 0, 0, 0, -101, -101, 0, 0, -101, 0, -101, -101, 0, 0, -101, -101, 0, -101, -101, 0, -101, 0, 0, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, 0, 0, 0, -101, 0, -101, 0, -101, 0, -101, 0, -101, 0, 0, 0, -101, -101, 0, 0, 0, 0, -101, -101, -101, -101, -101,
// State 319
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, 0, 0, 0, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, -185, 0, 0, 0, 0, 0, -185, -185, 0, -185, 0, 0, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, 0, 0, 0, -185, 0, -185, 0, -185, 0, -185, 0, -185, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 320
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -333, -333, 0, 0, 0, 0, -333, -333, 0, 0, 0, 0, 0, 0, 0, 0, -333, 0, 0, -333, 0, 0, 0, 0, 0, -333, -333, 0, -333, 0, 0, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, 0, 0, 0, -333, 0, -333, 0, -333, 0, -333, 0, -333, 0, 0, 0, -333, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0,
// State 320
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, 0, 0, 0, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, -185, 0, 0, 0, 0, 0, -185, -185, 0, -185, 0, 0, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, 0, 0, 0, -185, 0, -185, 0, -185, 0, -185, 0, -185, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 321
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -332, -332, 0, 0, 0, 0, -332, -332, 0, 0, 0, 0, 0, 0, 0, 0, -332, 0, 0, -332, 0, 0, 0, 0, 0, -332, -332, 0, -332, 0, 0, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, 0, 0, 0, -332, 0, -332, 0, -332, 0, -332, 0, -332, 0, 0, 0, -332, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0,
// State 322
@@ -2625,9 +2625,9 @@ mod __parse__File {
r###""succeed_always""###,
r###""fail_always""###,
r###"Ident"###,
r###"IntLit"###,
r###"FloatLit"###,
r###"StringLit"###,
r###"NumberLit"###,
r###"DecimalLit"###,
r###"TextLit"###,
r###"TimeLit"###,
r###"DurationLit"###,
r###"ProseBlockToken"###,
@@ -2839,9 +2839,9 @@ mod __parse__File {
Token::SucceedAlways if true => Some(54),
Token::FailAlways if true => Some(55),
Token::Ident(_) if true => Some(56),
Token::IntLit(_) if true => Some(57),
Token::FloatLit(_) if true => Some(58),
Token::StringLit(_) if true => Some(59),
Token::NumberLit(_) if true => Some(57),
Token::DecimalLit(_) if true => Some(58),
Token::TextLit(_) if true => Some(59),
Token::TimeLit(_) if true => Some(60),
Token::DurationLit(_) if true => Some(61),
Token::ProseBlock(_) if true => Some(62),
@@ -2878,15 +2878,15 @@ mod __parse__File {
#[allow(clippy::manual_range_patterns)]match __token_index {
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 => __Symbol::Variant0(__token),
56 | 59 | 60 | 61 => match __token {
Token::Ident(__tok0) | Token::StringLit(__tok0) | Token::TimeLit(__tok0) | Token::DurationLit(__tok0) if true => __Symbol::Variant1(__tok0),
Token::Ident(__tok0) | Token::TextLit(__tok0) | Token::TimeLit(__tok0) | Token::DurationLit(__tok0) if true => __Symbol::Variant1(__tok0),
_ => unreachable!(),
},
57 => match __token {
Token::IntLit(__tok0) if true => __Symbol::Variant2(__tok0),
Token::NumberLit(__tok0) if true => __Symbol::Variant2(__tok0),
_ => unreachable!(),
},
58 => match __token {
Token::FloatLit(__tok0) if true => __Symbol::Variant3(__tok0),
Token::DecimalLit(__tok0) if true => __Symbol::Variant3(__tok0),
_ => unreachable!(),
},
62 => match __token {
@@ -9904,7 +9904,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// DecoratorRepeatN = "repeat", "(", IntLit, ")", "{", BehaviorNode, "}" => ActionFn(110);
// DecoratorRepeatN = "repeat", "(", NumberLit, ")", "{", BehaviorNode, "}" => ActionFn(110);
assert!(__symbols.len() >= 7);
let __sym6 = __pop_Variant0(__symbols);
let __sym5 = __pop_Variant20(__symbols);
@@ -9926,7 +9926,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// DecoratorRepeatRange = "repeat", "(", IntLit, "..", IntLit, ")", "{", BehaviorNode, "}" => ActionFn(111);
// DecoratorRepeatRange = "repeat", "(", NumberLit, "..", NumberLit, ")", "{", BehaviorNode, "}" => ActionFn(111);
assert!(__symbols.len() >= 9);
let __sym8 = __pop_Variant0(__symbols);
let __sym7 = __pop_Variant20(__symbols);
@@ -9950,7 +9950,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// DecoratorRetry = "retry", "(", IntLit, ")", "{", BehaviorNode, "}" => ActionFn(113);
// DecoratorRetry = "retry", "(", NumberLit, ")", "{", BehaviorNode, "}" => ActionFn(113);
assert!(__symbols.len() >= 7);
let __sym6 = __pop_Variant0(__symbols);
let __sym5 = __pop_Variant20(__symbols);
@@ -10749,7 +10749,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Literal = IntLit => ActionFn(162);
// Literal = NumberLit => ActionFn(162);
let __sym0 = __pop_Variant2(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -10764,7 +10764,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Literal = FloatLit => ActionFn(163);
// Literal = DecimalLit => ActionFn(163);
let __sym0 = __pop_Variant3(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -10779,7 +10779,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Literal = StringLit => ActionFn(164);
// Literal = TextLit => ActionFn(164);
let __sym0 = __pop_Variant1(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -12563,7 +12563,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Value = IntLit => ActionFn(47);
// Value = NumberLit => ActionFn(47);
let __sym0 = __pop_Variant2(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -12578,7 +12578,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Value = FloatLit => ActionFn(48);
// Value = DecimalLit => ActionFn(48);
let __sym0 = __pop_Variant3(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -12593,7 +12593,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Value = StringLit => ActionFn(49);
// Value = TextLit => ActionFn(49);
let __sym0 = __pop_Variant1(__symbols);
let __start = __sym0.0;
let __end = __sym0.2;
@@ -12638,7 +12638,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Value = IntLit, "..", IntLit => ActionFn(52);
// Value = NumberLit, "..", NumberLit => ActionFn(52);
assert!(__symbols.len() >= 3);
let __sym2 = __pop_Variant2(__symbols);
let __sym1 = __pop_Variant0(__symbols);
@@ -12656,7 +12656,7 @@ mod __parse__File {
_: core::marker::PhantomData<()>,
) -> (usize, usize)
{
// Value = FloatLit, "..", FloatLit => ActionFn(53);
// Value = DecimalLit, "..", DecimalLit => ActionFn(53);
assert!(__symbols.len() >= 3);
let __sym2 = __pop_Variant3(__symbols);
let __sym1 = __pop_Variant0(__symbols);

View File

@@ -111,8 +111,8 @@ proptest! {
let tokens: Vec<Token> = lexer.map(|(_, tok, _)| tok).collect();
assert_eq!(tokens.len(), 1);
match tokens[0] {
Token::IntLit(val) => assert_eq!(val, n),
_ => panic!("Expected IntLit token"),
Token::NumberLit(val) => assert_eq!(val, n),
_ => panic!("Expected NumberLit token"),
}
}
@@ -123,8 +123,8 @@ proptest! {
let tokens: Vec<Token> = lexer.map(|(_, tok, _)| tok).collect();
assert_eq!(tokens.len(), 1);
match tokens[0] {
Token::FloatLit(_) => {},
_ => panic!("Expected FloatLit token"),
Token::DecimalLit(_) => {},
_ => panic!("Expected DecimalLit token"),
}
}
@@ -135,8 +135,8 @@ proptest! {
let tokens: Vec<Token> = lexer.map(|(_, tok, _)| tok).collect();
assert_eq!(tokens.len(), 1);
match &tokens[0] {
Token::StringLit(val) => assert_eq!(val, &s),
_ => panic!("Expected StringLit token"),
Token::TextLit(val) => assert_eq!(val, &s),
_ => panic!("Expected TextLit token"),
}
}

View File

@@ -89,9 +89,9 @@ impl iced::widget::text::Highlighter for StorybookHighlighter {
match &token {
| Token::Colon => after_colon = true,
| Token::Ident(_) |
Token::IntLit(_) |
Token::FloatLit(_) |
Token::StringLit(_) |
Token::NumberLit(_) |
Token::DecimalLit(_) |
Token::TextLit(_) |
Token::True |
Token::False |
Token::TimeLit(_) |

View File

@@ -88,10 +88,10 @@ pub fn token_to_color(token: &Token) -> Color {
| Token::Ident(_) => Color::from_rgb8(0x50, 0xfa, 0x7b), // Bright green
// Number literals - Bright Purple
| Token::IntLit(_) | Token::FloatLit(_) => Color::from_rgb8(0xbd, 0x93, 0xf9), /* Light purple */
| Token::NumberLit(_) | Token::DecimalLit(_) => Color::from_rgb8(0xbd, 0x93, 0xf9), /* Light purple */
// String literals - Vibrant Yellow/Gold
| Token::StringLit(_) => Color::from_rgb8(0xf1, 0xfa, 0x8c), // Bright yellow
// Text literals - Vibrant Yellow/Gold
| Token::TextLit(_) => Color::from_rgb8(0xf1, 0xfa, 0x8c), // Bright yellow
// Time/duration literals - Bright Teal
| Token::TimeLit(_) | Token::DurationLit(_) => Color::from_rgb8(0x66, 0xd9, 0xef), /* Bright teal */
@@ -193,12 +193,12 @@ mod tests {
// Strings should be green
assert_eq!(
token_to_color(&Token::StringLit("test".to_string())),
token_to_color(&Token::TextLit("test".to_string())),
Semantic::SUCCESS
);
// Numbers should be gold (lighter)
assert_eq!(token_to_color(&Token::IntLit(42)), Gold::_400);
assert_eq!(token_to_color(&Token::NumberLit(42)), Gold::_400);
// Identifiers should be warm gray
assert_eq!(