Research Article
[Retracted] Automatic Grading for Complex Multifile Programs
Algorithm 3
AST simple tree matching with tag classifier algorithm.
| Input: | | A: Standardized student program AST | | B: Standardized model program AST i | | Output: Count of similarity node | | Begin: | (1) | Step 1: GenerateMap(A, B) | (2) | A ⟶ set info tree based on Map key for A tree | (3) | B ⟶ set info tree based on Map key for B tree | (4) | global TagMap ⟵ | (5) | global GlobalNodeMap ⟵ | (6) | for each root node r | (7) | | (8) | Step 2: SimilarityMatching(A, B) | (9) | ns, cp ⟵ 0 | (10) | local LocalNodeMap ⟵ | (11) | for each (ANode, BNode) (A, B) | (12) | if (ANode, BNode) = (ATag ANodeNo, BTag BNodeNo) | (13) | TagMap ⟵ TagMap {ATag BTag} | (14) | LocalNodeMap ⟵ LocalNodeMap {ANodeNo BNodeNo} | (15) | else if (ANode, BNode) = (AChildNo := a op a’, BChildNo: = b op b’) | (16) | SimilarityMatching(a, b) | (17) | SimilarityMatching(a’, b’) | (18) | if isLocal(a) and is Local (b) and TagMap(a, b) is equal | (19) | LocalNodeMap ⟵ LocalNodeMap {a b} | (20) | ns+1, cp+1 | (21) | else if | (22) | GlobalNodeMap ⟵ GlobalNodeMap {a b} | (23) | cp+1 | (24) | else if… | (25) | else break | (26) | End |
|