Warning, /frameworks/syntax-highlighting/autotests/input/highlight.y is written in an unsupported language. File is not indexed.

0001 /* Yacc / Bison hl test file.
0002  * It won't compile :-) Sure !
0003  */
0004 
0005 %{
0006 
0007 #include <iostream>
0008 using namespace std;
0009 
0010 extern KateParser *parser;
0011 
0012 %}
0013 
0014 %locations
0015 
0016 %union { 
0017    int int_val;
0018    double double_val;
0019    bool bool_val;
0020    char *string_val;
0021    char *ident_val;
0022    struct var *v;
0023    void *ptr;
0024 }
0025 
0026 %token <int_val>      TOK_NOT_EQUAL  "!="
0027 %token <int_val>      TOK_LESSER_E   "<="
0028 %token <int_val>      TOK_GREATER_E  ">="
0029 %token <int_val>      TOK_EQUAL_2    "==" //comment
0030 %token
0031    PERCENT_DEBUG           "%debug"
0032    PERCENT_DEFAULT_PREC    "%default-prec"
0033    PERCENT_DEFINE          "%define"
0034 ;
0035 
0036 %type <int_val>       type type_proc
0037 
0038 %code top {
0039   #define _GNU_SOURCE
0040   #include <stdio.h>
0041   int val;
0042 }
0043 
0044 %destructor { free ($$); printf ("%d", @$.first_line); } <*>
0045 %lex-param   {scanner_mode *mode};
0046 %parse-param {int *nastiness} {int *randomness}
0047 %initial-action {
0048   @$.initialize (file_name);
0049 };
0050 
0051 %%
0052 
0053 prog:                 KW_PROGRAM ident { parser->start($2); } prog_beg_glob_decl instructions { parser->endproc(0); } dev_procedures KW_ENDP ;
0054 
0055 number:               integer_number
0056                       | TOK_DOUBLE
0057                       {
0058                          $$ = new var;
0059                          $$->type = KW_REEL;
0060                          $$->cl = var::LITTERAL;
0061                          $$->real = $<int_val>1;
0062                       };
0063 words:
0064                       %empty
0065                       | words word
0066                       ;
0067 
0068 %type <type> word;
0069 %printer { fprintf (yyo, "%s", word_string ($$)); } <type>;
0070 word:
0071                       %?{ boom(1); }
0072                       | "hello"  { $$ = hello; }
0073                       | "bye"  { $$ = bye; }
0074                       ;
0075 
0076 foo:                  { $$ = 0 }
0077                       | number { $$ = $1 | $2; }
0078                       | hello { $$ = $1 | $3; } // without a comma
0079 
0080 hello:
0081                       gram1 { $$ = "hi" };
0082                       | gram2
0083                       ;;
0084                       
0085 %%
0086 
0087 #include <stdio.h>
0088 
0089 int main(void)
0090 {
0091   puts("Hello, World!");
0092   return 0;
0093 }
0094 
0095 // ALERT NOTE