Generator.cp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. MODULE JSonGenerator;
  2. (**
  3. project = "JSon"
  4. organization = ""
  5. contributors = ""
  6. version = "System/Rsrc/About"
  7. copyright = "Kushnir Piotr Michailovich"
  8. license = "Docu/BB-License"
  9. purpose = "Реализация генератора"
  10. changes = "
  11. - 20130102, pk, автогенерация заголовка
  12. "
  13. issues = "-
  14. 20150204, порт для fw
  15. "
  16. **)
  17. IMPORT
  18. Str;
  19. TYPE
  20. Writer* = POINTER TO ABSTRACT RECORD
  21. base: ANYPTR;
  22. END;
  23. PROCEDURE (w: Writer) Whitespace* (s: ARRAY OF CHAR), NEW, EMPTY;
  24. PROCEDURE (w: Writer) Char* (ch: CHAR), NEW, ABSTRACT;
  25. PROCEDURE (w: Writer) UnicodeChar* (ch: CHAR), NEW, EXTENSIBLE;
  26. VAR x: INTEGER; vs: ARRAY 12 OF CHAR;
  27. BEGIN
  28. x:=ORD(ch);
  29. Str.IntToStringForm(x, Str.hexadecimal, 4, '0', Str.hideBase, vs);
  30. w.Char('\'); w.Char('u'); w.Char(vs[0]); w.Char(vs[1]); w.Char(vs[2]); w.Char(vs[3]);
  31. END UnicodeChar;
  32. PROCEDURE (w: Writer) Base* (): ANYPTR, NEW;
  33. BEGIN
  34. RETURN w.base;
  35. END Base;
  36. PROCEDURE (w: Writer) SetBase* (base: ANYPTR), NEW, EXTENSIBLE;
  37. BEGIN
  38. ASSERT(base#NIL, 20);
  39. w.base:=base;
  40. END SetBase;
  41. END JSonGenerator.