gram.y 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. ** grammar for xgc syntax
  3. */
  4. %{
  5. #define YYDEBUG 1
  6. #include <stdio.h>
  7. #include <X11/X.h>
  8. #include <X11/Intrinsic.h>
  9. #include "xgc.h"
  10. extern int yylineno;
  11. %}
  12. %union
  13. {
  14. int num;
  15. char *ptr;
  16. };
  17. %token <ptr> STRING
  18. %token <num> NUMBER
  19. %token <num> RUN
  20. %token <num> FUNCTION FUNCTIONTYPE
  21. %token <num> TEST TESTTYPE
  22. %token <num> LINESTYLE LINESTYLETYPE
  23. %token <num> CAPSTYLE CAPSTYLETYPE
  24. %token <num> JOINSTYLE JOINSTYLETYPE
  25. %token <num> ROUND SOLID
  26. %token <num> FILLSTYLE FILLSTYLETYPE
  27. %token <num> FILLRULE FILLRULETYPE
  28. %token <num> ARCMODE ARCMODETYPE
  29. %token <num> FOREGROUND BACKGROUND LINEWIDTH PLANEMASK DASHLIST PERCENT
  30. %token <num> FONT
  31. %%
  32. all : stmts
  33. ;
  34. stmts : /* empty */
  35. | stmts '\n'
  36. | stmts stmt '\n'
  37. ;
  38. stmt : error
  39. | RUN
  40. { run_test(); }
  41. | TEST TESTTYPE
  42. { change_test ($2, TRUE); }
  43. | FUNCTION FUNCTIONTYPE
  44. { GC_change_function ($2, TRUE); }
  45. | LINESTYLE LINESTYLETYPE
  46. { GC_change_linestyle ($2, TRUE); }
  47. | LINESTYLE SOLID
  48. { GC_change_linestyle (LineSolid, TRUE); }
  49. | CAPSTYLE CAPSTYLETYPE
  50. { GC_change_capstyle ($2, TRUE); }
  51. | CAPSTYLE ROUND
  52. { GC_change_capstyle (CapRound, TRUE); }
  53. | JOINSTYLE JOINSTYLETYPE
  54. { GC_change_joinstyle ($2, TRUE); }
  55. | JOINSTYLE ROUND
  56. { GC_change_joinstyle (JoinRound, TRUE); }
  57. | FILLSTYLE FILLSTYLETYPE
  58. { GC_change_fillstyle ($2, TRUE); }
  59. | FILLSTYLE SOLID
  60. { GC_change_fillstyle (FillSolid, TRUE); }
  61. | FILLRULE FILLRULETYPE
  62. { GC_change_fillrule ($2, TRUE); }
  63. | ARCMODE ARCMODETYPE
  64. { GC_change_arcmode ($2, TRUE); }
  65. | FOREGROUND NUMBER
  66. { GC_change_foreground ($2, TRUE); }
  67. | BACKGROUND NUMBER
  68. { GC_change_background ($2, TRUE); }
  69. | LINEWIDTH NUMBER
  70. { GC_change_linewidth ($2, TRUE); }
  71. | PLANEMASK NUMBER
  72. { GC_change_planemask ($2, TRUE); }
  73. | DASHLIST NUMBER
  74. { GC_change_dashlist ($2, TRUE); }
  75. | FONT STRING
  76. { GC_change_font ($2, TRUE); }
  77. | PERCENT NUMBER
  78. { change_percent ($2, TRUE); }
  79. ;
  80. %%
  81. void
  82. yyerror(const char *s)
  83. {
  84. fprintf(stderr, "xgc: syntax error, line %d\n", yylineno);
  85. }