File: highlight.y

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (95 lines) | stat: -rw-r--r-- 2,065 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* Yacc / Bison hl test file.
 * It won't compile :-) Sure !
 */

%{

#include <iostream>
using namespace std;

extern KateParser *parser;

%}

%locations

%union { 
   int int_val;
   double double_val;
   bool bool_val;
   char *string_val;
   char *ident_val;
   struct var *v;
   void *ptr;
}

%token <int_val>      TOK_NOT_EQUAL  "!="
%token <int_val>      TOK_LESSER_E   "<="
%token <int_val>      TOK_GREATER_E  ">="
%token <int_val>      TOK_EQUAL_2    "==" //comment
%token
   PERCENT_DEBUG           "%debug"
   PERCENT_DEFAULT_PREC    "%default-prec"
   PERCENT_DEFINE          "%define"
;

%type <int_val>       type type_proc

%code top {
  #define _GNU_SOURCE
  #include <stdio.h>
  int val;
}

%destructor { free ($$); printf ("%d", @$.first_line); } <*>
%lex-param   {scanner_mode *mode};
%parse-param {int *nastiness} {int *randomness}
%initial-action {
  @$.initialize (file_name);
};

%%

prog:                 KW_PROGRAM ident { parser->start($2); } prog_beg_glob_decl instructions { parser->endproc(0); } dev_procedures KW_ENDP ;

number:               integer_number
                      | TOK_DOUBLE
                      {
                         $$ = new var;
                         $$->type = KW_REEL;
                         $$->cl = var::LITTERAL;
                         $$->real = $<int_val>1;
                      };
words:
                      %empty
                      | words word
                      ;

%type <type> word;
%printer { fprintf (yyo, "%s", word_string ($$)); } <type>;
word:
                      %?{ boom(1); }
                      | "hello"  { $$ = hello; }
                      | "bye"  { $$ = bye; }
                      ;

foo:                  { $$ = 0 }
                      | number { $$ = $1 | $2; }
                      | hello { $$ = $1 | $3; } // without a comma

hello:
                      gram1 { $$ = "hi" };
                      | gram2
                      ;;
                      
%%

#include <stdio.h>

int main(void)
{
  puts("Hello, World!");
  return 0;
}

// ALERT NOTE