1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * See LICENSE.txt included in this distribution for the specific 9 * language governing permissions and limitations under the License. 10 * 11 * When distributing Covered Code, include this CDDL HEADER in each 12 * file and include the License file at LICENSE.txt. 13 * If applicable, add the following below this CDDL HEADER, with the 14 * fields enclosed by brackets "[]" replaced with your own identifying 15 * information: Portions Copyright [yyyy] [name of copyright owner] 16 * 17 * CDDL HEADER END 18 */ 19 20 /* 21 * Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved. 22 * Portions Copyright (c) 2017, Chris Fraire <cfraire@me.com>. 23 */ 24 25 /* 26 * Gets C symbols - ignores comments, strings, keywords (copying for use by Asm 27 * for now). 28 */ 29 30 package org.opengrok.indexer.analysis.asm; 31 32 import org.opengrok.indexer.analysis.JFlexSymbolMatcher; 33 %% 34 %public 35 %class AsmSymbolTokenizer 36 %extends JFlexSymbolMatcher 37 %unicode 38 %int 39 %include ../CommonLexer.lexh 40 %char 41 42 %state STRING COMMENT SCOMMENT QSTRING 43 44 %include ../Common.lexh 45 %include ../c/C.lexh 46 %% 47 48 <YYINITIAL> { 49 {Identifier} {String id = yytext(); 50 if(!Consts.kwd.contains(id)) { 51 onSymbolMatched(id, yychar); 52 return yystate(); } 53 } 54 55 "#" {WhspChar}* "include" {WhspChar}* ("<"[^>\n\r]+">" | \"[^\"\n\r]+\") {} 56 57 {Number} {} 58 59 \\\" | \\\' {} 60 \" { yybegin(STRING); } 61 \' { yybegin(QSTRING); } 62 "/*" { yybegin(COMMENT); } 63 "//" { yybegin(SCOMMENT); } 64 } 65 66 <STRING> { 67 \\[\"\\] {} 68 \" { yybegin(YYINITIAL); } 69 } 70 71 <QSTRING> { 72 \\[\'\\] {} 73 \' { yybegin(YYINITIAL); } 74 } 75 76 <COMMENT> { 77 "*/" { yybegin(YYINITIAL);} 78 } 79 80 <SCOMMENT> { 81 {EOL} { yybegin(YYINITIAL); } 82 } 83 84 <YYINITIAL, STRING, COMMENT, SCOMMENT, QSTRING> { 85 {WhspChar}+ {} 86 [^] {} 87 } 88