%% Licensed to the Apache Software Foundation (ASF) under one %% or more contributor license agreements. See the NOTICE file %% distributed with this work for additional information %% regarding copyright ownership. The ASF licenses this file %% to you under the Apache License, Version 2.0 (the %% "License"); you may not use this file except in compliance %% with the License. You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, %% software distributed under the License is distributed on an %% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY %% KIND, either express or implied. See the License for the %% specific language governing permissions and limitations %% under the License. %% @author: shino@accense.com Definitions. %% Characters for keys K = [a-zA-Z0-9_\-\.]+ %% \x23 : $# %% \x3b : $; %% \x3d : $= %% \x5b : $[ %% \x5d : $] V = [^\x23\x3b\x3d\x5b\x5d\x0d\x0a\s\t]+ %% spaces, breaks and comment delimiters S = [\s\t] B = [\n\r] C = [;#] Rules. %% skip empty or blank lines or lines with space/tab chars {B}({S}*{B})+ : {token, {break, TokenLine}}. %% mark line break by token 'break' in order to use as delimiters {B} : {token, {break, TokenLine}}. %% Just chars = : {token, {'=', TokenLine}}. \[ : {token, {'[', TokenLine}}. \] : {token, {']', TokenLine}}. %% word-like tokens {S}+ : {token, {blank, TokenLine, TokenChars}}. {K} : {token, {word, TokenLine, TokenChars}}. {V} : {token, {value, TokenLine, TokenChars}}. %% comment-like token, but may be a part of value depending on the location {C}.* : {token, {comment, TokenLine, TokenChars}}. Erlang code.