// Writes all string literals to data segment
 private void ProcessStringLiterals()
 {
     for (int i = 0; i < SymbolTable.StringLiteralCount; i++)
     {
         StringLiteralNode node = (StringLiteralNode)SymbolTable.LookupNode($"_S{i}");
         OutputAssembly($"__S{i} DB {node.Literal}, \"$\"", 1);
     }
 }
        // OutputOptions -> IdentifierToken | StringLiteralToken | EndLineToken
        private bool ProcessOutputOptions()
        {
            if (LexicalAnaylzer.Token == Token.IdentifierToken)
            {
                VariableNode node = (VariableNode)SymbolTable.LookupNode(LexicalAnaylzer.Lexeme);
                if (node == null)
                {
                    CommonTools.PromptProgramErrorExit($"ERROR: Line {LexicalAnaylzer.LineNumber} Use of " +
                                                       $"undeclared variable \"{LexicalAnaylzer.Lexeme}\"");
                    return(false);
                }

                if (node.Type == Token.CharToken)
                {
                    OutputThreeAddressCode($"\t_WRC {GetThreeAddressCodeName(LexicalAnaylzer.Lexeme)}");
                }
                else if (node.Type == Token.IntToken)
                {
                    OutputThreeAddressCode($"\t_WRI {GetThreeAddressCodeName(LexicalAnaylzer.Lexeme)}");
                }
                else
                {
                    OutputThreeAddressCode($"\t_WRF {GetThreeAddressCodeName(LexicalAnaylzer.Lexeme)}");
                }
                LexicalAnaylzer.GetNextToken();
            }
            else if (LexicalAnaylzer.Token == Token.StringLiteralToken)
            {
                StringLiteralNode node = new StringLiteralNode()
                {
                    Lexeme  = $"_S{SymbolTable.StringLiteralCount}",
                    Literal = LexicalAnaylzer.Lexeme
                };
                SymbolTable.InsertNode(node);
                OutputThreeAddressCode($"\t_WRS {node.Lexeme}");
                LexicalAnaylzer.GetNextToken();
            }
            else
            {
                OutputThreeAddressCode($"\t_WRL");
                if (!MatchToken(Token.EndLineToken))
                {
                    return(false);
                }
            }
            return(true);
        }