/src/lib/log/conf/log_grammar.e

http://github.com/tybor/Liberty · Specman e · 166 lines · 122 code · 16 blank · 28 comment · 0 complexity · cb14c0c61ec2a85f5ab6ddef2c94f27b MD5 · raw file

  1. -- This file is part of a Liberty Eiffel library.
  2. -- See the full copyright at the end.
  3. --
  4. class LOG_GRAMMAR
  5. insert
  6. EIFFEL_GRAMMAR
  7. redefine
  8. the_table
  9. end
  10. create {LOG_INTERNAL_CONF}
  11. make
  12. feature {}
  13. the_table: PARSE_TABLE[DESCENDING_PARSE_CONTEXT]
  14. once
  15. Result := {PARSE_TABLE[DESCENDING_PARSE_CONTEXT] <<
  16. -- Non terminals
  17. "Configuration", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW log", "KW configuration",
  18. "Root", "Outputs", "Loggers",
  19. "KW end", "KW end of file" >> }, agent build_root(?, ?) >> };
  20. "Root", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW root", "KW class name" >> }, Void >> };
  21. "Outputs", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW output", "Output*" >> }, Void >> };
  22. "Output*", {DESCENDING_NON_TERMINAL << epsilon, agent build_empty_list("Output*");
  23. {FAST_ARRAY[STRING] << "Output", "Output*" >> }, agent build_continue_list("Output", 0, "Output*");
  24. {FAST_ARRAY[STRING] << "Output", "KW ;", "Output*" >> }, agent build_continue_list("Output", 1, "Output*") >> };
  25. "Output", {DESCENDING_NON_TERMINAL << --{FAST_ARRAY[STRING] << "KW entity name", "KW is", "KW url", "KW string" >> }, Void;
  26. {FAST_ARRAY[STRING] << "KW entity name", "KW is", "KW console", "File_Options" >> }, Void;
  27. {FAST_ARRAY[STRING] << "KW entity name", "KW is", "KW file", "KW string", "File_Options" >> }, Void >> };
  28. "File_Options", {DESCENDING_NON_TERMINAL << epsilon, Void;
  29. {FAST_ARRAY[STRING] << "File_Option+", "KW end" >> }, Void >> };
  30. "File_Option+", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "File_Option" >> }, agent build_new_list("File_Option", "File_Option+");
  31. {FAST_ARRAY[STRING] << "File_Option", "File_Option+" >> }, agent build_continue_list("File_Option", 0, "File_Option+");
  32. {FAST_ARRAY[STRING] << "File_Option", "KW ,", "File_Option+" >> }, agent build_continue_list("File_Option", 1, "File_Option+");
  33. {FAST_ARRAY[STRING] << "File_Option", "KW ;", "File_Option+" >> }, agent build_continue_list("File_Option", 1, "File_Option+"); >> };
  34. "File_Option", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW format", "KW string" >> }, Void;
  35. {FAST_ARRAY[STRING] << "KW rotated", "KW each", "Rotation", "Retention" >> }, Void;
  36. {FAST_ARRAY[STRING] << "KW zipped", "KW using", "KW string" >> }, Void >> };
  37. "Rotation", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW day" >> }, Void;
  38. {FAST_ARRAY[STRING] << "KW week" >> }, Void;
  39. {FAST_ARRAY[STRING] << "KW month" >> }, Void;
  40. {FAST_ARRAY[STRING] << "KW year" >> }, Void;
  41. {FAST_ARRAY[STRING] << "KW hour" >> }, Void;
  42. {FAST_ARRAY[STRING] << "KW minute" >> }, Void;
  43. {FAST_ARRAY[STRING] << "KW number", "KW days" >> }, Void;
  44. {FAST_ARRAY[STRING] << "KW number", "KW weeks" >> }, Void;
  45. {FAST_ARRAY[STRING] << "KW number", "KW months" >> }, Void;
  46. {FAST_ARRAY[STRING] << "KW number", "KW years" >> }, Void;
  47. {FAST_ARRAY[STRING] << "KW number", "KW hours" >> }, Void;
  48. {FAST_ARRAY[STRING] << "KW number", "KW minutes" >> }, Void;
  49. {FAST_ARRAY[STRING] << "KW byte" >> }, Void;
  50. {FAST_ARRAY[STRING] << "KW kilobyte" >> }, Void;
  51. {FAST_ARRAY[STRING] << "KW megabyte" >> }, Void;
  52. {FAST_ARRAY[STRING] << "KW gigabyte" >> }, Void;
  53. {FAST_ARRAY[STRING] << "KW number", "KW bytes" >> }, Void;
  54. {FAST_ARRAY[STRING] << "KW number", "KW kilobytes" >> }, Void;
  55. {FAST_ARRAY[STRING] << "KW number", "KW megabytes" >> }, Void;
  56. {FAST_ARRAY[STRING] << "KW number", "KW gigabytes" >> }, Void >> };
  57. "Retention", {DESCENDING_NON_TERMINAL << epsilon, Void;
  58. {FAST_ARRAY[STRING] << "KW keeping", "KW number" >> }, Void >> };
  59. "Loggers", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW logger", "Logger*" >> }, Void >> };
  60. "Logger*", {DESCENDING_NON_TERMINAL << epsilon, agent build_empty_list("Logger*");
  61. {FAST_ARRAY[STRING] << "Logger", "Logger*" >> }, agent build_continue_list("Logger", 0, "Logger*");
  62. {FAST_ARRAY[STRING] << "Logger", "KW ;", "Logger*" >> }, agent build_continue_list("Logger", 1, "Logger*") >> };
  63. "Logger", {DESCENDING_NON_TERMINAL << {FAST_ARRAY[STRING] << "KW class name", "KW is", "Parent", "Logger_Output",
  64. "Level", "KW end" >> }, Void >> };
  65. "Parent", {DESCENDING_NON_TERMINAL << epsilon, Void;
  66. {FAST_ARRAY[STRING] << "KW like", "KW class name", "KW with" >> }, Void >> };
  67. "Level", {DESCENDING_NON_TERMINAL << epsilon, Void;
  68. {FAST_ARRAY[STRING] << "KW level", "KW trace" >> }, Void;
  69. {FAST_ARRAY[STRING] << "KW level", "KW info" >> }, Void;
  70. {FAST_ARRAY[STRING] << "KW level", "KW warning" >> }, Void;
  71. {FAST_ARRAY[STRING] << "KW level", "KW error" >> }, Void; >> };
  72. "Logger_Output", {DESCENDING_NON_TERMINAL << epsilon, Void;
  73. {FAST_ARRAY[STRING] << "KW output", "KW entity name" >> }, Void >> };
  74. -- Symbols
  75. "KW ;", create {DESCENDING_TERMINAL}.make(agent parse_symbol(?, ";", Void), Void);
  76. "KW ,", create {DESCENDING_TERMINAL}.make(agent parse_symbol(?, ",", Void), Void);
  77. -- Identifiers
  78. "KW class name", create {DESCENDING_TERMINAL}.make(agent parse_class_name(?), Void);
  79. "KW entity name", create {DESCENDING_TERMINAL}.make(agent parse_entity_name(?), Void);
  80. "KW string", create {DESCENDING_TERMINAL}.make(agent parse_string(?), Void);
  81. "KW number", create {DESCENDING_TERMINAL}.make(agent parse_number(?), Void);
  82. -- Keywords
  83. "KW configuration", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "configuration"), Void);
  84. "KW console", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "console"), Void);
  85. "KW each", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "each"), Void);
  86. "KW end", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "end"), Void);
  87. "KW end of file", create {DESCENDING_TERMINAL}.make(agent parse_end(?), Void);
  88. "KW error", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "error"), Void);
  89. "KW file", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "file"), Void);
  90. "KW format", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "format"), Void);
  91. "KW info", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "info"), Void);
  92. "KW is", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "is"), Void);
  93. "KW keeping", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "keeping"), Void);
  94. "KW level", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "level"), Void);
  95. "KW like", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "like"), Void);
  96. "KW log", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "log"), Void);
  97. "KW logger", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "logger"), Void);
  98. "KW output", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "output"), Void);
  99. "KW root", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "root"), Void);
  100. "KW rotated", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "rotated"), Void);
  101. "KW trace", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "trace"), Void);
  102. "KW url", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "url"), Void); -- reserved but not yet used
  103. "KW using", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "using"), Void);
  104. "KW warning", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "warning"), Void);
  105. "KW with", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "with"), Void);
  106. "KW zipped", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "zipped"), Void);
  107. -- Units
  108. "KW day", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "day"), Void);
  109. "KW week", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "week"), Void);
  110. "KW month", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "month"), Void);
  111. "KW year", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "year"), Void);
  112. "KW hour", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "hour"), Void);
  113. "KW minute", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "minute"), Void);
  114. "KW byte", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "byte"), Void);
  115. "KW kilobyte", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "kilobyte"), Void);
  116. "KW megabyte", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "megabyte"), Void);
  117. "KW gigabyte", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "gigabyte"), Void);
  118. "KW days", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "days"), Void);
  119. "KW weeks", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "weeks"), Void);
  120. "KW months", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "months"), Void);
  121. "KW years", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "years"), Void);
  122. "KW hours", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "hours"), Void);
  123. "KW minutes", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "minutes"), Void);
  124. "KW bytes", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "bytes"), Void);
  125. "KW kilobytes", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "kilobytes"), Void);
  126. "KW megabytes", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "megabytes"), Void);
  127. "KW gigabytes", create {DESCENDING_TERMINAL}.make(agent parse_keyword(?, "gigabytes"), Void);
  128. >> }
  129. end
  130. end -- class LOG_GRAMMAR
  131. --
  132. -- Copyright (C) 2009-2017: by all the people cited in the AUTHORS file.
  133. --
  134. -- Permission is hereby granted, free of charge, to any person obtaining a copy
  135. -- of this software and associated documentation files (the "Software"), to deal
  136. -- in the Software without restriction, including without limitation the rights
  137. -- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  138. -- copies of the Software, and to permit persons to whom the Software is
  139. -- furnished to do so, subject to the following conditions:
  140. --
  141. -- The above copyright notice and this permission notice shall be included in
  142. -- all copies or substantial portions of the Software.
  143. --
  144. -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  145. -- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  146. -- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  147. -- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  148. -- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  149. -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  150. -- THE SOFTWARE.