Skip to content

Commit 2158080

Browse files
committed
First commit
1 parent 5f9ea89 commit 2158080

File tree

9 files changed

+338
-1
lines changed

9 files changed

+338
-1
lines changed

Info.plist

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CFBundleDevelopmentRegion</key>
6+
<string>English</string>
7+
<key>CFBundleDisplayName</key>
8+
<string>${PRODUCT_NAME}</string>
9+
<key>CFBundleExecutable</key>
10+
<string>${EXECUTABLE_NAME}</string>
11+
<key>CFBundleIconFile</key>
12+
<string>Icon.png</string>
13+
<key>CFBundleIdentifier</key>
14+
<string>org.jackace.${PRODUCT_NAME:rfc1034identifier}</string>
15+
<key>CFBundleInfoDictionaryVersion</key>
16+
<string>6.0</string>
17+
<key>CFBundleName</key>
18+
<string>${PRODUCT_NAME}</string>
19+
<key>CFBundlePackageType</key>
20+
<string>APPL</string>
21+
<key>CFBundleSignature</key>
22+
<string>????</string>
23+
<key>CFBundleVersion</key>
24+
<string>1.0</string>
25+
<key>LSRequiresIPhoneOS</key>
26+
<true/>
27+
<key>NSMainNibFile</key>
28+
<string>MainWindow</string>
29+
</dict>
30+
</plist>

JawaScriptExecutive-iOS/Executor.h

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
//
2+
// Executor.h
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/20.
6+
//
7+
//
8+
9+
#ifndef Executor_h
10+
#define Executor_h
11+
12+
#define QUANTUM 0.0000000000000001;
13+
14+
typedef NS_ENUM(NSInteger, ASTType) {
15+
SCRIPT_BODY = 0,
16+
FUNCTION_DECLARATION,
17+
BLOCK_STATEMENT,
18+
EMPTY_STATEMENT,
19+
SEQUENCE_EXPRESSION,
20+
21+
ASSIGNMENT_EXPRESSION,
22+
CONDITIONAL_EXPRESSION,
23+
LOGICAL_OR_EXPRESSION,
24+
LOGICAL_AND_EXPRESSION,
25+
INCLUSIVE_OR_EXPRESSION,
26+
27+
EXCLUSIVE_OR_EXPRESSION,
28+
AND_EXPRESSION,
29+
EQUALITY_EXPRESSION,
30+
RELATIONAL_EXPRESSION,
31+
IN_EXPRESSINO,
32+
33+
SHIFT_EXPRESSION,
34+
ADDITIVE_EXPRESSION,
35+
MULTIPLICATIVE_EXPRESSION,
36+
UNARY_EXPRESSION,
37+
POSTFIX_EXPRESSION,
38+
39+
STATIC_MEMBER_EXPRESSION,
40+
CALL_EXPRESSION,
41+
COMPUTED_MEMBER_EXPRESSION,
42+
NEW_EXPRESSION,
43+
IDENTIFIER,
44+
45+
LITERAL,
46+
ARGUMENTS,
47+
ARRAY_EXPRESSION,
48+
OBJECT_EXPRESSION,
49+
BREAK_STATEMENT,
50+
51+
CONTINUE_STATEMENT,
52+
DO_WHILE_STATEMENT,
53+
ITERATOR_DECLARATION,
54+
FOR_STATEMENT,
55+
VARIABLE_DECLARATION,
56+
57+
IF_STATEMENT,
58+
RETURN_STATEMENT,
59+
VAR_STATEMENT,
60+
WHILE_STATEMENT,
61+
OBJECT_PROPERTY,
62+
};
63+
64+
typedef NS_ENUM(NSInteger, PropType) {
65+
PR_statements = 0,
66+
PR_valueType,
67+
PR_arguments,
68+
PR_id,
69+
PR_key,
70+
71+
PR_expr,
72+
PR_properties,
73+
PR_elements,
74+
PR_literal,
75+
PR_constructor,
76+
77+
PR_object,
78+
PR_property,
79+
PR_function,
80+
PR_subExpression,
81+
PR_op,
82+
83+
PR_ops,
84+
PR_subExpressions,
85+
PR_condition,
86+
PR_onTrue,
87+
PR_onFalse,
88+
89+
PR_left,
90+
PR_right,
91+
PR_expressions,
92+
PR_params,
93+
PR_body,
94+
95+
PR_test,
96+
PR_varName,
97+
PR_initialization,
98+
PR_iterable,
99+
PR_iterator,
100+
101+
PR_init,
102+
PR_update,
103+
PR_argument,
104+
PR_declarations,
105+
};
106+
107+
#endif /* Executor_h */

JawaScriptExecutive-iOS/Executor.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@
22
// Executor.m
33
// JawaScriptExecutive-iOS
44
//
5-
// Created by Ben on 2016/1/15.
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/15.
66
//
77
//
88

99
#import <Foundation/Foundation.h>
10+
#import "Executor.h"
11+
12+
@interface Executor : NSObject
13+
14+
@end
15+
16+
int main(int argc, char *argv[]) {
17+
return 0;
18+
}
1019

1120
// Test

JawaScriptExecutive-iOS/JawaArray.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// JawaArray.h
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/26.
6+
//
7+
//
8+
9+
#ifndef JawaArray_h
10+
#define JawaArray_h
11+
12+
#import "JawaObject.h"
13+
14+
@interface JawaArray : JawaObject
15+
{
16+
17+
}
18+
@end
19+
20+
21+
#endif /* JawaArray_h */

JawaScriptExecutive-iOS/JawaFunc.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// JawaFunc.h
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/26.
6+
//
7+
//
8+
9+
#ifndef JawaFunc_h
10+
#define JawaFunc_h
11+
12+
#import "JawaObject.h"
13+
14+
@interface JawaFunc : JawaObject
15+
{
16+
17+
}
18+
@end
19+
20+
21+
#endif /* JawaFunc_h */

JawaScriptExecutive-iOS/JawaObject.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// JawaObject.h
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/26.
6+
//
7+
//
8+
9+
#ifndef JawaObject_h
10+
#define JawaObject_h
11+
12+
@interface JawaObject : NSObject
13+
{
14+
15+
}
16+
-(NSString*)toString;
17+
@end
18+
19+
#endif /* JawaObject_h */

JawaScriptExecutive-iOS/JawaObject.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// JawaObject.m
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/26.
6+
//
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import "JawaObject.h"
11+
12+
@implementation JawaObject
13+
14+
15+
@end
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// JawaObjectRef.h
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/20.
6+
//
7+
//
8+
9+
#ifndef JawaObjectRef_h
10+
#define JawaObjectRef_h
11+
12+
#define QUANTUM 0.0000000000000001
13+
14+
@class JawaArray;
15+
@class JawaFunc;
16+
@class JawaObject;
17+
18+
@interface JawaObjectRef : NSObject
19+
{
20+
NSObject* object;
21+
__weak JawaObjectRef* appliedOn;
22+
}
23+
-(id)init;
24+
-(id)initWithNumber:(double)number;
25+
-(id)initWithString:(NSString*)string;
26+
-(id)initWithBoolean:(bool)tf;
27+
-(id)initWithJawaArray:(JawaArray*)array;
28+
-(id)initWithJawaFunc:(JawaFunc*)func;
29+
-(id)initWithJawaFunc:(JawaFunc*)func on:(JawaObjectRef*)obj;
30+
-(id)initWithJawaObject:(JawaObject*)obj;
31+
-(NSString*)toString;
32+
-(id)transfer;
33+
@end
34+
35+
#endif /* JawaObjectRef_h */
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//
2+
// JawaObjectRef.m
3+
// JawaScriptExecutive-iOS
4+
//
5+
// Created by Chi-Wei (Jack) Wang on 2016/1/20.
6+
//
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import "JawaArray.h"
11+
#import "JawaFunc.h"
12+
#import "JawaObjectRef.h"
13+
14+
@implementation JawaObjectRef
15+
16+
-(id)init { self = [super init]; object = NULL; return self; }
17+
-(id)initWithNumber:(double)number {
18+
self = [super init];
19+
object = [NSDecimalNumber numberWithDouble:number];
20+
return self;
21+
}
22+
-(id)initWithString:(NSString*)string {
23+
self = [super init];
24+
object = [NSMutableString stringWithString:string];
25+
return self;
26+
}
27+
-(id)initWithBoolean:(bool)tf {
28+
self = [super init];
29+
object = [NSNumber numberWithBool:tf];
30+
return self;
31+
}
32+
-(id)initWithJawaArray:(JawaArray*)array {
33+
self = [super init];
34+
object = array;
35+
return self;
36+
}
37+
-(id)initWithJawaFunc:(JawaFunc*)func {
38+
self = [super init];
39+
object = func;
40+
appliedOn = nil;
41+
return self;
42+
}
43+
-(id)initWithJawaFunc:(JawaFunc*)func on:(JawaObjectRef*)obj {
44+
self = [super init];
45+
object = func;
46+
appliedOn = obj;
47+
return self;
48+
}
49+
-(id)initWithJawaObject:(JawaObject*)obj {
50+
self = [super init];
51+
object = obj;
52+
return self;
53+
}
54+
-(NSString*)toString {
55+
if ([object class] == [NSDecimalNumber class]) {
56+
double n = ((NSDecimalNumber*)object).doubleValue;
57+
if (fabs(n-round(n)) < QUANTUM) {
58+
return [NSString stringWithFormat:@"%ld", (long)n];
59+
}
60+
return [NSString stringWithFormat:@"%f", n];
61+
} else if ([object class] == [NSNumber class]) {
62+
bool b = ((NSNumber*)object).boolValue;
63+
return b ? @"true" : @"false";
64+
} else if ([object class] == [NSMutableString class]) {
65+
return [NSString stringWithString:((NSMutableString*)object)];
66+
} else if ([object isKindOfClass:[JawaObject class]]) {
67+
return [((JawaObject*)object) toString];
68+
}
69+
return nil;
70+
}
71+
-(id)transfer {
72+
if ([object isKindOfClass:[NSNumber class]]) {
73+
return [((NSNumber*)object) copy];
74+
} else if ([object class] == [NSMutableString class]) {
75+
return [((NSMutableString*)object) mutableCopy];
76+
} else
77+
return object;
78+
}
79+
80+
@end

0 commit comments

Comments
 (0)