{'fraction_non_alphanumeric': 0.01888772298006296, 'fraction_numerical': 0.0, 'mean_word_length': 5.235294117647059, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An alternative approach to macro processing

This paper presents the basic principles of, and the motivation for, an alternative method of processing syntax macros. The inspiration for this work derives from some obvious shortcomings and inefficiencies in conventional macro processing schemes. However, our primary interest is not in designing a faster macro processor; rather it lies in isolating the underlying ideas of syntax macros, realizing their implications, and producing a clean and economical scheme based on these principles.
 The compiler model in terms of which we shall couch our discussions is a very familiar one, namely that of the two-pass compilation process. The first pass consists of syntactic and semantic analysis, and converts a source language program into an intermediate language (computation tree) form, which represents the meaning of the program. The second pass is then either an object code selector or an interpreter.