LPeg 소개
LPeg는 Lua 프로그래밍 언어를 위한 패턴 매칭 라이브러리다. LPeg는 PEG(Parsing Expression Grammar) 기반으로 작동하며, 문자열을 분석하고 조작하는 데 매우 유용다. LPeg는 정규 표현식보다 더 강력하고 유연한 패턴 매칭 기능을 제공한다.
LPeg의 주요 특징은 다음과 같다:
- 유연한 패턴 정의: 복잡한 패턴을 쉽게 정의할 수 있다.
- 재귀적 패턴: 재귀를 사용하여 중첩된 구조를 처리할 수 있다.
- 성능: LPeg는 매우 빠르며, 대량의 데이터를 처리하는 데 적합하다.
설치
apk add lua5.1-lpeg
LPeg 사용 예제
예제: 숫자와 연산자 파싱
이 예제에서는 간단한 수식(예: 3 + 5 * 2
)을 파싱하는 패턴을 정의한다.
local lpeg = require("lpeg")
-- 숫자 패턴 정의
local number = lpeg.R("09")^1 / tonumber
-- 연산자 패턴 정의
local operator = lpeg.S("+-*/")
-- 수식 패턴 정의
local expression = number * (operator * number)^0
-- 테스트할 문자열
local input = "3 + 5 * 2"
-- 패턴 매칭 수행
local result = expression:match(input)
-- 결과 출력
if result then
print("Parsed numbers and operators:")
for i, v in ipairs(result) do
print(v)
end
else
print("No match found.")
end
코드 설명
패턴 정의:
number
: 1개 이상의 숫자를 매칭합니다.tonumber
함수를 사용하여 문자열을 숫자로 변환한다.operator
:+
,-
,*
,/
중 하나의 연산자를 매칭.expression
: 숫자와 연산자의 조합을 정의.
패턴 매칭:
expression:match(input)
을 사용하여 입력 문자열을 패턴과 비교한다.
결과 출력:
- 매칭된 결과를 출력한다.
이 예제는 LPeg의 기본적인 사용법을 보여주며, 더 복잡한 패턴을 정의하여 다양한 문자열을 파싱할 수 있다. LPeg의 강력한 기능을 활용하면 복잡한 문법을 쉽게 처리할 수 있다.
REFERENCE
- lpeg manual : https://www.inf.puc-rio.br/~roberto/lpeg/
- Parsing syntax using LPeg:
- An introduction to Parsing Expression Grammars with LPeg:
- Lua-Users Lpeg Tutorial: