12571257; ------------------------------------------------------------------------------------------------------------------
12581258; ------------------------------------------------------------------------------------------------------------------
12591259
1260- ; Parses a parsed file into our state (which initially is our initstate)
1260+ ; Converts a parsed file into our state, and adds a new scope to the front once conversion is complete
12611261(define G-parsed-file-to-state->state
12621262 (lambda (parsedFile state )
12631263 (G-add-empty-scope-to-state->state (parse-file-to-state parsedFile state))))
12641264
1265+ ; Converts a parsed file into a state
12651266(define parse-file-to-state
12661267 (lambda (parsedFile state )
12671268 (cond
12681269 ((null? parsedFile) state)
12691270 (else (parse-file-to-state (next-parsedfile parsedFile)
12701271 (G-add-class-to-state->state (get-top-parsedfile parsedFile) state))))))
12711272
1272- ; adds a (class, closure) to the state, as well as its contents
1273+ ; Adds a (class, closure) to the state, as well as its contents
12731274; The contents are: (classname, name), (super, classname), (staticField, value), (staticFunction, value)
12741275(define G-add-class-to-state->state
12751276 (lambda (class state )
12861287 ((null? contents) state)
12871288 (else (add-statics-to-state->state (get-class-closure-value contents)
12881289 (push-superclass-to-state->state (get-superclasscontents-from-contents contents)
1289- (push-classname-to-state->state (get-classname-from-contents contents) (get-class-closure-value contents) state)))))))
1290+ (push-classname-to-state->state (get-classname-from-contents contents)
1291+ (get-class-closure-value contents)
1292+ state)))))))
12901293
12911294; Pushes a (classname, name) to the value section of the most recent class in the top scope of the state
12921295; closure = '((var x 5) (var b 3))
12961299 ((null? classname) (error " No classname" ))
12971300 (else (list (push-classname-to-scope->scope classname closure (get-top-scope state)))))))
12981301
1299- ; helper for push-classname-to-state-state, returns a classname pushed to the first scope's class
1302+ ; Helper for push-classname-to-state-state, returns a classname pushed to the first scope's class
13001303(define push-classname-to-scope->scope
13011304 (lambda (name closure scope )
13021305 (merge-scope-sections (add-name-to-scope name scope)
13031306 (add-closure-to-scope closure scope))))
13041307
1308+ ; Merges a variable and value section of a scope together into a scope
13051309(define merge-scope-sections
13061310 (lambda (variables values )
13071311 (list variables values)))
13081312
1313+ ; Adds a name (classname) to a scope
13091314(define add-name-to-scope
13101315 (lambda (name scope )
13111316 (cons name (get-variable-section-state scope))))
13121317
1318+ ; Adds a closure to a scope
13131319(define add-closure-to-scope
13141320 (lambda (closure scope )
13151321 (cons (list closure) (get-value-section-state scope))))
13161322
1323+ ; Pushes a superclass to a state
13171324(define push-superclass-to-state->state
13181325 (lambda (supercontents state )
13191326 (list (push-superclass-to-scope->scope supercontents (get-top-scope state)))))
13201327
1328+ ; Adds a superclass to a scope when given supercontents, which contain a classname or null for no superclass
13211329(define push-superclass-to-scope->scope
13221330 (lambda (supercontents scope )
13231331 (cond
13241332 ((null? supercontents) (add-superclass-to-scope empty-supercontents-name scope))
13251333 (else (add-superclass-to-scope (get-supercontents-name supercontents) scope)))))
13261334
1327-
1335+ ; Adds and creates a superclass list: '(superclass classname) to a staticscope
13281336(define add-superclass-to-scope
13291337 (lambda (superclassname scope )
13301338 (merge-scope-sections (get-variable-section-state scope)
13521360 (get-rest-value-section (get-value-section-state classcope)))))
13531361 ((eq? (get-closure-name closure) 'static-var )
13541362 (add-statics-to-scope->scope (next-closure closure) classcope (G-push-state->state (get-closure-variable-contents closure)
1355- (get-closure-var-contents closure) nestedstate)))
1363+ (get-closure-var-contents closure)
1364+ nestedstate)))
13561365 ((eq? (get-closure-name closure) 'static-function )
1357- (add-statics-to-scope->scope (next-closure closure) classcope (G-push-state->state (get-closure-variable-contents closure) (get-closure-function-contents closure) nestedstate)))
1366+ (add-statics-to-scope->scope (next-closure closure) classcope (G-push-state->state (get-closure-variable-contents closure)
1367+ (get-closure-function-contents closure)
1368+ nestedstate)))
13581369 (else (add-statics-to-scope->scope (next-closure closure) classcope nestedstate)))))
13591370
13601371; Helper functions for easy access/lookup to our state for class operations
13611372; LOOKUP SECTION ----------------------------------------------------------
1362-
13631373; Gets a class's staticscope (the scope with static fields and functions)
13641374(define G-get-class-closure
13651375 (lambda (classname state )
13661376 (get-closure-section (get-value-from-pair (G-value-lookup->value_state classname state empty-cfuncs)))))
13671377
1378+ ; Get the superclass classname of a class
13681379(define G-get-class-superclass
13691380 (lambda (classname state )
13701381 (get-superclass-classname-section (get-value-from-pair (G-value-lookup->value_state classname state empty-cfuncs)))))
13711382
1383+ ; Get the classname of an instance
13721384(define G-get-instance-classname
13731385 (lambda (instancename state )
13741386 (get-classname-section get-classname-section (get-value-from-pair (G-value-lookup->value_state instancename state empty-cfuncs)))))
13751387
1388+ ; Get an instancestate of an instance
13761389(define G-get-instance-state
13771390 (lambda (instancename state )
13781391 (get-instance-section (get-value-from-pair (G-value-lookup->value_state instancename state empty-cfuncs)))))
13791392
1393+ ; Get a class's staticscope given a classname
13801394(define G-get-class-staticscope->staticscope
13811395 (lambda (classname state )
1382- (get-staticscope-section (get-value-from-pair (G-value-lookup->value_state classname state empty-cfuncs)))))
1383-
1396+ (get-staticscope-section (get-value-from-pair (G-value-lookup->value_state classname state empty-cfuncs)))))
0 commit comments