glass/transformer/javascript/
js_ast.rs1use ast::*;
2
3use self::JSASTLiteral::*;
4
5
6pub type JSAST = Vec<Box<JSASTField>>;
7
8
9#[derive(Debug, Clone, PartialEq)]
10pub enum JSASTField {
11 JSASTItem(JSASTItemType),
12 JSASTGroup(JSASTGroupType, JSAST),
13}
14
15
16#[derive(Debug, Clone, PartialEq)]
17pub enum JSASTItemType {
18 JSLiteral(JSASTLiteral),
19 JSAction(ASTAction),
20}
21
22
23#[derive(Debug, Clone, PartialEq)]
24pub enum JSASTGroupType {
25 JSFunction(JSASTLiteral),
26 JSWhile(JSASTLiteral),
27 JSBlock(),
28}
29
30
31#[derive(Debug, Clone, PartialEq)]
32pub enum JSASTLiteral {
33 JSString(String),
34 JSNumber(f64),
36 JSName(String),
37 JSComment(String),
38 JSUndefined(),
39}
40
41
42
43impl From<ASTLiteral> for JSASTLiteral {
44 fn from(astliteral: ASTLiteral) -> JSASTLiteral {
45 match astliteral {
46 ASTLiteral::String(x) => JSString(x),
47 ASTLiteral::Number(x) => JSNumber(f64::from(x)),
48 ASTLiteral::Name(x) => JSName(x),
49 ASTLiteral::Comment(x) => JSComment(x),
50 ASTLiteral::Null() => JSUndefined(),
51 }
52 }
53}