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

코드 설명

  1. 패턴 정의:

    • number: 1개 이상의 숫자를 매칭합니다. tonumber 함수를 사용하여 문자열을 숫자로 변환한다.
    • operator: +, -, *, / 중 하나의 연산자를 매칭.
    • expression: 숫자와 연산자의 조합을 정의.
  2. 패턴 매칭:

    • expression:match(input)을 사용하여 입력 문자열을 패턴과 비교한다.
  3. 결과 출력:

    • 매칭된 결과를 출력한다.

이 예제는 LPeg의 기본적인 사용법을 보여주며, 더 복잡한 패턴을 정의하여 다양한 문자열을 파싱할 수 있다. LPeg의 강력한 기능을 활용하면 복잡한 문법을 쉽게 처리할 수 있다.

REFERENCE