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 |
|